Pbm dans une boucle

Résolu
ced -  
 ced -
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. Py_rex Messages postés 250 Statut Membre 52
     
    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. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
       
      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. ced
       
      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. ced
     
    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
  3. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    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