Supprimer une ligne quand une cellule est vide

difovelo Messages postés 13 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 16 mai 2005 - 10 mai 2005 à 17:57
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 12 mars 2011 à 15:07
Bonjour,
Je souhaiterais supprimer 1 ligne lorsque que la cellule de la colonne A est vide, mais ça me supprime toutes les lignes, même celle avec une cellule pleine.
Voilà mon programme:

Sub Select_case()
Dim collection As Range
Dim cellule As Range

Set collection = Range("A2:A351")
For Each cellule In collection
Select Case cellule
Case Not IsEmpty(cellule)
Rows.Delete
End Select
Next
End Sub

Merci d'avance !

4 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
10 mai 2005 à 18:39
Il n'est pas possible de supprimer un ligne uniquement sur une cellule vide, par exemple, si a1 est vide mais que B1 contient des données, cette ligne ne sera pas supprimée.
Cette macro supprime les lignes vides entre les données.

Sub SupprimerLignesVides()
Dim DernièreLigne As Long
Dim r As Long
DernièreLigne = ActiveSheet.UsedRange.Row - 1
DernièreLigne = DernièreLigne + ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = DernièreLigne To 1 Step -1
If Application.WorkSheetFunction.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub

jpleroisse
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
10 mai 2005 à 19:00
Lut,
dans ton code tu marques Rows.delete ton prob vient surement de là
remplaces par cellule.entirerow.delete

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Fennec66 Messages postés 1 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 12 mars 2011
12 mars 2011 à 08:54
Bonjour,

J'ai testé ce code. Dans le premier exemple, en effet, il supprime carrément tout.

En remplaçant par cellule.entirerow.delete, ça fonctionne mais il faut le faire plusieurs fois, il ne le fait pas en un seul passage et je ne vois pas trop pourquoi, le code a l'air correct.
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
12 mars 2011 à 15:07
Lut,
vieux sujet là !
Il m'est arrivé ce genre de problèmes
Tu devrais tester ton code en partant de la fin de tes lignes et non pas du début le fait de supprimer des lignes pose problème au niveau du code.

LR = Selection.Rows.Count "ou une plage de lignes"

With Selection
For n = LR To 1 Step -1
Ton code ici
Next n
End With

Cordialement, Jean-Paul
______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous