Optimisation effacement lignes vides
Résolu
padbollevrai
Messages postés
58
Statut
Membre
-
padbollevrai Messages postés 58 Statut Membre -
padbollevrai Messages postés 58 Statut Membre -
Bonjour,
Après maintes recherches et essais, je n'ai jamais trouvé de code me permettant de supprimer les lignes vides dans ma feuille excell. (erreurs, incompatibilité...)
J'ai fini par bricoler un truc qui marche, mais voilà le problème: Ca rame incroyablement !
En moins d'une seconde, toutes les lignes vides sont supprimées, mais la macro reste bloquée et rame pendant 10 secondes avant de s'arrêter. Voici le code:
Voilà, qu'es-ce qui fait que mon programme continue de ramer après exécution ?
Autre question: Pour le "6 to 3345", la ligne 3345 est en fait la dernière contenant des données. Vous n'auriez pas une astuce pour que ca prenne automatiquement la dernière valeur de la feuille ?
Merci beaucoup !
Après maintes recherches et essais, je n'ai jamais trouvé de code me permettant de supprimer les lignes vides dans ma feuille excell. (erreurs, incompatibilité...)
J'ai fini par bricoler un truc qui marche, mais voilà le problème: Ca rame incroyablement !
En moins d'une seconde, toutes les lignes vides sont supprimées, mais la macro reste bloquée et rame pendant 10 secondes avant de s'arrêter. Voici le code:
Sub Lines ()
Dim j&
For j=6 to 3345 step 1
If IsEmpty(Range("A" & j).Cells) Then Rows(j).Delete
End Sub
Voilà, qu'es-ce qui fait que mon programme continue de ramer après exécution ?
Autre question: Pour le "6 to 3345", la ligne 3345 est en fait la dernière contenant des données. Vous n'auriez pas une astuce pour que ca prenne automatiquement la dernière valeur de la feuille ?
Merci beaucoup !
5 réponses
-
Bonjour,
Un truc tout bête, pourquoi ne pas faire un tri ?
-
Bonjour,
Tout simplement parce que mon but est de créer une procédure automatisée de traitement des données avec des boutons !
Merci -
Bonjour,
Lorsque vous placez du code sur notre forum, merci d'utiliser les balises code à votre disposition.
Le mode d'emploi (au cas ou) est ICI.
Ensuite, le code fourni ne peux pas fonctionner...
Manque un Next.
Une deuxième chose à savoir, si vous avez deux lignes consécutives dont la cellule en colonne A est vide, une des deux ne sera pas supprimée.
Exemple : A8 et A9 sont vides.
La boucle arrive en A8, teste si vide => ok donc supprime. La cellule A9 devient donc la cellule A8. La boucle passe néanmoins en A9 ===> A8 (anciennement A9) n'est pas traitée.
Pour cela, il faut boucler de la dernière à la première cellule.
dernière ligne non vide de la colonne A :Dim DernLigne As Long DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Boucle de la dernière à la première cellule :Dim Lig As Long, DernLigne As Long DernLigne = Range("A" & Rows.Count).End(xlUp).Row For Lig = DernLigne To 6 Step -1 'Bla bla Next Lig
La syntaxe IsEmpty(Range) est bonne. Cependant, If Range = "" est un poil plus rapide (sur 300000 boucles tu gagnes 1 secondes... Youhou!)
Mais remplace donc ta ligne par :If Range("A" & j) = "" Then Rows(j).Deletecomme ceci :Sub Lignes() Dim Lig As Long, DernLigne As Long DernLigne = Range("A" & Rows.Count).End(xlUp).Row For Lig = DernLigne To 6 Step -1 If Range("A" & j) = "" Then Rows(j).Delete Next Lig End Sub
-
Bonjour,
Après maintes recherches !!! mouais ...
Sub SupLine() Dim j As Long Dim DerniereLigne As Integer DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row For j = DerniereLigne To 6 Step -1 If IsEmpty(Range("A" & j).Value) Then Rows(j).Delete Next j End Sub
Edit : Oups désolé Franck (salut), pas vu ton post ...
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Merci pour vos réponses !
Effectivement j'ai cherché sur les aides microsoft et sur des sites "excel", mais il aurait été plus simple de chercher directement ici !
Effectivement, cette méthode de partir de la fin vers le début marche impeccable. Un collègue m'a montré sa manière de faire qui consiste à revenir d'un pas en arrière après la suppression d'une cellule vide. Ca marche aussi mais c'est un poil plus lourd !
J'ai également intégré une suppression des lignes non-numériques, histoire de fusionner 2 macros. Merci à vous !