Optimisation effacement lignes vides
Résolu/Fermé
padbollevrai
Messages postés
51
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
18 mars 2015
-
Modifié par pijaku le 6/05/2014 à 11:22
padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 - 6 mai 2014 à 12:03
padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 - 6 mai 2014 à 12:03
A voir également:
- Optimisation effacement lignes vides
- Optimisation pc - Accueil - Utilitaires
- Optimisation découpe panneau gratuit - Télécharger - Outils professionnels
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Optimisation windows 10 - Guide
- Glary Utilities : l'outil référence pour entretenir un PC - Télécharger - Nettoyage
5 réponses
eljojo_e
Messages postés
1155
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
14 octobre 2022
153
6 mai 2014 à 10:52
6 mai 2014 à 10:52
Bonjour,
Un truc tout bête, pourquoi ne pas faire un tri ?
Un truc tout bête, pourquoi ne pas faire un tri ?
padbollevrai
Messages postés
51
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
18 mars 2015
1
6 mai 2014 à 11:00
6 mai 2014 à 11:00
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
Tout simplement parce que mon but est de créer une procédure automatisée de traitement des données avec des boutons !
Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
6 mai 2014 à 11:22
6 mai 2014 à 11:22
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 :
Boucle de la dernière à la première cellule :
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 :
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
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 6/05/2014 à 11:27
Modifié par Polux31 le 6/05/2014 à 11:27
Bonjour,
Après maintes recherches !!! mouais ...
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
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
padbollevrai
Messages postés
51
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
18 mars 2015
1
6 mai 2014 à 12:03
6 mai 2014 à 12:03
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 !
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 !