[VBA Excel] Suppression de lignes
Résolu/Fermé
enigmatoile
Messages postés
730
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
15 mars 2008
-
13 mars 2008 à 17:19
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 15 mars 2008 à 18:53
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 15 mars 2008 à 18:53
A voir également:
- [VBA Excel] Suppression de lignes
- Forcer suppression fichier - Guide
- Liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Si et excel - Guide
7 réponses
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
13 mars 2008 à 17:30
13 mars 2008 à 17:30
Salut !
débarassons-nous du compteur qui fausse le comptage des lignes et faisons une boucle tant que la derniere ligne n'est pas atteinte.
Si la colonne 7 est vide : suppression de la ligne
sinon : on passe à la suivante
ça marche ?
I.
Sub suppression_id_vide()
Dim MaFeuille As Worksheet
Dim DerniereLigne As Long
Set MaFeuille = ActiveSheet
DerniereLigne = MaFeuille.Range("A1").CurrentRegion.End(xlDown).Row
While activecell.row < derniereligne
with activecell
if cells(.row,7) = empty then
.entirerow.delete
else
.offset(1,0).activate
end if
end with
Wend
End Sub
débarassons-nous du compteur qui fausse le comptage des lignes et faisons une boucle tant que la derniere ligne n'est pas atteinte.
Si la colonne 7 est vide : suppression de la ligne
sinon : on passe à la suivante
ça marche ?
I.
Sub suppression_id_vide()
Dim MaFeuille As Worksheet
Dim DerniereLigne As Long
Set MaFeuille = ActiveSheet
DerniereLigne = MaFeuille.Range("A1").CurrentRegion.End(xlDown).Row
While activecell.row < derniereligne
with activecell
if cells(.row,7) = empty then
.entirerow.delete
else
.offset(1,0).activate
end if
end with
Wend
End Sub
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
13 mars 2008 à 18:00
13 mars 2008 à 18:00
Bonjour,
Ivan-hoe, as-tu testé ta macro ? ça fait une boucle sans fin chez moi ... :-s ... de plus il faut que la cellule active soit sur la première ligne ... si elle est au milieu de la feuille toutes les cellules au dessus sont ignorées ...
Voilà ce que je propose, en admettant qu'il n'y ai pas de cellules vides intercalées dans la colonne A:
;o)
polux
Ivan-hoe, as-tu testé ta macro ? ça fait une boucle sans fin chez moi ... :-s ... de plus il faut que la cellule active soit sur la première ligne ... si elle est au milieu de la feuille toutes les cellules au dessus sont ignorées ...
Voilà ce que je propose, en admettant qu'il n'y ai pas de cellules vides intercalées dans la colonne A:
Sub suppression_id_vide() Dim compteur As Long Dim MaFeuille As Worksheet Dim vide As String Set MaFeuille = ActiveSheet compteur = 2 While Mafeuille.Range("A" & compteur).Value <> "" 'Faire Tant que col: A lig: compteur n'est égal = "" If MaFeuille.Cells(compteur, 7) = vide Then 'Si la cellule col: G lig: compteur est égal = "" Rows(compteur).EntireRow.Delete 'Efface la ligne = compteur compteur = compteur - 1 'Décrémente le compteur de 1 pour revenir en arrière End If 'Fin si compteur = compteur + 1 'On passe à ligne suivante Wend 'Fin Tant que End Sub
;o)
polux
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
13 mars 2008 à 18:26
13 mars 2008 à 18:26
Oups ! non, effectivement, ce n'était pas testé et comptait qqs incohérences ! Excès de confiance, sans doute. Désolé.
Félicitation pour ta solution.
I.
Félicitation pour ta solution.
I.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
13 mars 2008 à 19:26
13 mars 2008 à 19:26
merci mais il faut surtout qu'elle convienne à enigmatoile ...
;o)
polux
;o)
polux
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
aquarelle
Messages postés
7141
Date d'inscription
dimanche 8 avril 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
1 303
13 mars 2008 à 20:18
13 mars 2008 à 20:18
Bonsoir à tous,
En voici une autre :
Bonne soirée
En voici une autre :
Public Sub SupprLigneCellVide_ColG() Dim x As Long Dim y As Long x = Range("G65536").End(xlUp).Row For y = x To 1 Step -1 If Cells(y, 7).Value = "" Then Rows(y).Delete End If Next y End Sub
Bonne soirée
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
13 mars 2008 à 20:33
13 mars 2008 à 20:33
Salut,
Bien aussi la méthode ... mais faire :
;o)
polux
Bien aussi la méthode ... mais faire :
For y = x To 2 Step - 1Pour tenir compte que Enigmatoile veut préserver la première ligne qui doit être une ligne de titre.
;o)
polux
aquarelle
Messages postés
7141
Date d'inscription
dimanche 8 avril 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
1 303
13 mars 2008 à 20:38
13 mars 2008 à 20:38
Merci Polux31,
:-$ , tu as raison voilà ce que c'est de survoler la demande, il y a des "fausses notes" :)
:-$ , tu as raison voilà ce que c'est de survoler la demande, il y a des "fausses notes" :)
enigmatoile
Messages postés
730
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
15 mars 2008
5
>
aquarelle
Messages postés
7141
Date d'inscription
dimanche 8 avril 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
15 mars 2008 à 16:59
15 mars 2008 à 16:59
Voilà c'est exactement ça, merci beaucoup :)
(j'ai pris comme solution celle d'aquarelle)
(j'ai pris comme solution celle d'aquarelle)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
15 mars 2008 à 18:53
15 mars 2008 à 18:53
content pour toi ... n'oublies pas de mettre résolu
;o)
polux
;o)
polux