nombre fixe de lignes supprimées

Toutou

XLDnaute Occasionnel
Bonjour à tous,
toujours dans mon programme de gestion, dans mon tableau, les commandes s'insèrent avec toujour 1 à 3 lignes vierges d'intervalle; j'ai mis en place un système (grâce à l'aide trouver sur le forum) qui permet de réduire ces 'interlignes' à 1 avec le code suivant:


Dim vide As Range
For Each vide In Range('C4:C' & Range('C65536').End _
(xlUp).Row)

If vide.Value = '' Then
vide.EntireRow.Select
Selection.Delete Shift:=xlUp
End If
Next vide


Mais ce code ne fonctionne pas parfaitement:

1) s'il y a 1 seule ligne vierge entre 2 commandes, elle est supprimée;

2)s'il y a plus d'une ligne vierge, elles sont otues supprimées sauf une;

si je relance une nouvelle fois la procédure, on revient au 1) et les lignes sont supprimmées.

Je voudrais que cette procédure n'agisse que dans les zones ou plus d'une ligne vierge se succèdent.
Je pensais utiliser la propriété 'Count', Mais je ne sais absolument pas coment m'en servir...

D'avance merci,
@ +
Toutou :p
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Toutou, bonjour le forum,

Dans ce post
Lien supprimé je te proposait une solution qui te laisser une ligne vierge entre chaque donnée. Je ne sais pas pourquoi tu en as rajouté 4 et maintenant tu demandes de supprimer les lignes vides en trop... C'est faisable mais je reste persuadé qu'avec ma première proposition tu t'en sortirais. Mais comme je n'avais que le début du code je ne peux pas le vérifier. J'ai l'impression que tu veux faire compliquer alors que c'est simple (remarque, c'est un peu ma spécialité aussi...)
 

Toutou

XLDnaute Occasionnel
Salut Robert,
je vais essayé d'être assez clair;
en fait, les commandes passent dans différentes machines de 4 sortes différentes. La commande la plus longue est celle qui passe par chaque sorte de machine.(Car Elles ne passent pas systématiquement dans chaque sorte de machine)
Cette commande occuperait donc 4 lignes dans mon tableau: 1 pour chaque opération. d'où:

LigneSuivante = .Range('B65536').End(xlUp).Row + 5

ce qui laisse 1 ligne vierge avant la commande suivante.
En passant, pour insérer 1 commande j'ai utilisé:

LigneSuivante = .Range('B65536').End(xlUp).Row + 5
LigneSuivante2 = LigneSuivante + 1
LigneSuivante3 = LigneSuivante2 + 1
LigneSuivante4 = LigneSuivante3 + 1

LigneSuivante pour la machine de type 1
LigneSuivante2 pour la machine de type 2
LigneSuivante3 pour la machine de type 3
LigneSuivante4 pour la machine de type 4

Mon programme est tel que meme si une commande passe par les 2 premières sortes de machines, et pas les 2 dernières, elle occuperait quand meme 5 ligne dans mon tableau (dont par conséquent 3 vierges).

C'est pourquoi j'aurais besoin d'une procédure de rétroaction qui permettrait de supprimer les lignes en trop.

J'espère que mes explications sont pas trop mauvaises...

J'ai pensé à joindre un fichier, mais le programme est trop conséquent, est je ne peux pas supprimer une partie du code sinon le programme ne fonctionnerait plus ou alor je devrait supmprimer la partie qui correspond à mon pb...

Merci d'avance, a +
Toutou ;)
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Toutou, bonjour le forum,

Je crois que tu prends la problème a l'envers. D'àprès la pièce jointe de ton post antérieur LigneSuivante doit servir à repérer la première ligne vide de ton tableau. Avec + 2 cela te permet de laisser une ligne vide. C'est ici que doit commencer la première ligne de ta commande et si celle-ci comporte plus d'une ligne, à toi de le signifier dans le code pour passer à la ligne suivante. Je te propose de m'envoyer ton fichier à balamore@club-internet.fr pour que je puisse mieux comprendre ce que tu veux dire. Par contre, je ne pourrais le regarder que plus tard dans la soirée.
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 492
Messages
2 088 936
Membres
103 987
dernier inscrit
Doctami