Pbm dans une boucle

Résolu
Bonjour,

Je cherche à creer une macro qui va supprimer les lignes pour lesquelles la 1ere colonne est vide. Le pbm est que si j'ai 2 lignes vides consécutives, la boucle va sauter la 2eme (à cause l'iteration de i)

est il utile de préciser que je ne suis pas programmeur ? :)

Sub cleanup()

endrow = Cells(1, 3).CurrentRegion.Rows.Count
For i = 2 To endrow
If Cells(i, 1) = "" Then
Rows(i).Select
Selection.Delete Shift:=xlUp
Else
End If
Next

End Sub

Merci d'avance pr vos coup de pouce!
Configuration: Windows XP
Firefox 3.0.10

3 réponses

  1. hey ça marche ! Merci pour votre aide, genial!

    Sub Macro13()

    Sheets("test").Select
    endrow = Cells(1, 3).CurrentRegion.Rows.Count
    For i = 2 To endrow
    If endrow < i Then Exit For Else
    If Cells(i, 1) = "" Then
    Rows(i).Select
    Selection.Delete Shift:=xlUp
    endrow = endrow - 1
    i = i - 1
    Else
    End If
    Next

    End Sub
    1
    1. Bonsoir,

      Sub cleanup()

      endrow = Cells(1, 3).CurrentRegion.Rows.Count
      For i = 2 To endrow
      If Cells(i, 1) = "" Then
      Rows(i).Select
      Selection.Delete Shift:=xlUp
      i = i - 1
      endrow = endrow - 1
      Else
      End If
      Next

      End Sub
      1
      1. Contributeur
        ha oui, le endrow-1 sinon il se pete la gueule en fin de tableau...
        par conter, on peut virer le Else qui ne sert à rien ..
        0
      2. Merci Pyrex, le pbm est que la valeur de endrow ne se décrémente pas car elle est définie au niveau du for. je crois qu'il faut que je passe par une 2eme condition du style if endrow<i then exit for ?
        0
    2. Contributeur
      et en faisant ca:

      Sub cleanup()

      endrow = Cells(1, 3).CurrentRegion.Rows.Count
      For i = 2 To endrow
      If Cells(i, 1) = "" Then
      Rows(i).Select
      Selection.Delete Shift:=xlUp
      i=i-1
      end if
      Next

      End Sub
      0