Suppression de ligne via macro
alilou
-
aliloo -
aliloo -
Bonjour,
Je veux supprimer les lignes de ma feuille Excel lorsqu'il n'y a rien d'écrit dans la colonne C. Cependant le code que j'utilise ne m'efface qu'une ligne à la fois.. Je sais que le problème vient du fait que lorsque je suprime une ligne la suivante prend sa place ect d'ou le non effacement des autre ligne... par contre je ne sais pas comment mettre en application cette hypothèse... (PS: j'ai trouvé dans ce forum un code mais qui ne marche pas dans mon cas... je le mets a la suite de mon code)
MON CODE
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
For i = 1 To 50
If Range("E" & i) = "" Then
Range("E" & i).EntireRow.Delete
Else
End If
Next
'
End Sub
LE CODE QUE J'AI TROUVE :
Sub Macro1()
'
'
Dim I As Long
Dim Plage As Range
Dim c As Integer
For c = 1 To 5
Set Plage = Range("E2:E" & Range("E2").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Value = "" Then
Plage.Cells(I).EntireRow.Delete
End If
Next
End Sub
Je vous remercie par avance ;)
Je veux supprimer les lignes de ma feuille Excel lorsqu'il n'y a rien d'écrit dans la colonne C. Cependant le code que j'utilise ne m'efface qu'une ligne à la fois.. Je sais que le problème vient du fait que lorsque je suprime une ligne la suivante prend sa place ect d'ou le non effacement des autre ligne... par contre je ne sais pas comment mettre en application cette hypothèse... (PS: j'ai trouvé dans ce forum un code mais qui ne marche pas dans mon cas... je le mets a la suite de mon code)
MON CODE
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
For i = 1 To 50
If Range("E" & i) = "" Then
Range("E" & i).EntireRow.Delete
Else
End If
Next
'
End Sub
LE CODE QUE J'AI TROUVE :
Sub Macro1()
'
'
Dim I As Long
Dim Plage As Range
Dim c As Integer
For c = 1 To 5
Set Plage = Range("E2:E" & Range("E2").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Value = "" Then
Plage.Cells(I).EntireRow.Delete
End If
Next
End Sub
Je vous remercie par avance ;)
A voir également:
- Suppression de ligne via macro
- Forcer suppression fichier - Guide
- Partage de photos en ligne - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formulaire en ligne de meta - Guide
- Mètre en ligne - Guide
4 réponses
En fait tu utilises une boucle for mais avec une boucle While ce sera mieux
Voila le code
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
While not (range ("a" & i )=""))
"je parcours toutes les lignes jusqu'à ce que la colonne "a" soit à blanc
If Range("E" & i) = "" Then
Range("E" & i).EntireRow.Delete
Else
i=i+1
"je saute de ligne uniquement si je ne supprime pas
End If
wend
'
End Sub
A+
Nico
Voila le code
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
While not (range ("a" & i )=""))
"je parcours toutes les lignes jusqu'à ce que la colonne "a" soit à blanc
If Range("E" & i) = "" Then
Range("E" & i).EntireRow.Delete
Else
i=i+1
"je saute de ligne uniquement si je ne supprime pas
End If
wend
'
End Sub
A+
Nico
Désolé encore de vous importuner mais lorsque j'utilise ce code sur excel 2000, j'ai l'erreur suivante qui s'affiche : "la methode range de l'objet global a échoué" alors que ca marche sur excel 2003...
:(
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
While Not (Range("B" & i) = "")
'je parcours toutes les lignes jusqu'à ce que la colonne "a" soit à blanc
If Range("B" & i) = "" Then
Range("B" & i).EntireRow.Delete
Else
i = i + 1
'je saute de ligne uniquement si je ne supprime pas
End If
Wend
'
End Sub
:(
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
While Not (Range("B" & i) = "")
'je parcours toutes les lignes jusqu'à ce que la colonne "a" soit à blanc
If Range("B" & i) = "" Then
Range("B" & i).EntireRow.Delete
Else
i = i + 1
'je saute de ligne uniquement si je ne supprime pas
End If
Wend
'
End Sub
Finalement j'ai trouvé une solution... La parade est de refaire un nombre de boucle qui permet d'effacer tout les blanc considérés :
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
Dim j As Integer
For j = 1 To 40 <= je refait 40 fois l'opération.... (c'est beaucoup mais ca marche :D
For i = 1 To j
If Range("B" & i) = "" Then
Range("B" & i).EntireRow.Delete
Else
End If
Next
Next
End Sub
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
Dim j As Integer
For j = 1 To 40 <= je refait 40 fois l'opération.... (c'est beaucoup mais ca marche :D
For i = 1 To j
If Range("B" & i) = "" Then
Range("B" & i).EntireRow.Delete
Else
End If
Next
Next
End Sub