Bouclage du programme

Bonjour,

Voila un programme qui me permet de supprimer des lignes avec "S5".
Lorsque j arrive a la fin de mon tableau la case est vide donc je sors de ma boucle.
Le programme marche tres bien, il supprime exactement ce que je veux.
Mais a la fin du end sub, le programme recommence depuis le debut, et je ne comprends pas pourquoi.
Merci

Sub Delete()

Dim iLF1%, iLD1%, F1$, i
'Gele l'ecran pour accelerer le traitement
Application.ScreenUpdating = False

'Determination de la premiere ligne de chaque feuille
iLD1 = 2 'Ligne de Depart de DB1

'Determination des noms de feuille
F1 = "OMR"

'Determination de la derniere ligne de chaque feuille
iLF1 = Worksheets(F1).Cells(65535, 1).End(xlUp).Row

'Pour chaque ligne dans DB1
For i = iLD1 To iLF1
If Worksheets(F1).Range("G" & i).Value <> "S5" Then
Rows(i).EntireRow.Delete
If Worksheets(F1).Range("G" & i) Is Nothing Or Worksheets(F1).Range("G" & i).Value = "" Then Exit For
i = i - 1
End If
If Worksheets(F1).Range("G" & i).Value = "" Then Exit For
Next

End Sub
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  1. Contributeur
    Bonjour,

    Déjà je ferais
    For i = iLF1 to iLD1 step -1

    Toujours partir du bas si tu supprimes des lignes et ça évite de retoucher à i

    eric
    1. Il est vrai que c est plus simple
      Merci
      Mais ca ne solutionne pas mon probleme
      Sub Delete()

      Dim iLF1%, iLD1%, F1$, i
      'Gele l'ecran pour accelerer le traitement
      Application.ScreenUpdating = False

      'Determination de la premiere ligne de chaque feuille
      iLD1 = 2 'Ligne de Depart de DB1

      'Determination des noms de feuille
      F1 = "OMR"

      'Determination de la derniere ligne de chaque feuille
      iLF1 = Worksheets(F1).Cells(65535, 1).End(xlUp).Row

      'Pour chaque ligne dans DB1
      For i = iLF1 To iLD1 Step -1
      If Worksheets(F1).Range("G" & i).Value <> "S5" Then
      Rows(i).EntireRow.Delete
      End If

      Next

      End Sub
      1. Bonjour

        Ta macro a l'air de marcher chez moi. Ne serait-elle pas appelée depuis un événement Change ou SelctionChange ? Si c'est le cas, c'est normal qu'elle soit rappelée puisqu'elle modifie ta feuille.
        1. Desole mais je ne vois pas trop de quoi tu parles
          Est ce que tu pourrais m expliquer ou je pourrais le verifier?
          Parce que je n ai pas creer d evenement change ou selection change.
          Mais au cas ou, est ce que tu pourrais me dire ou je pourrais le verifier?
          Merci
      2. Desole mais je ne vois pas trop de quoi tu parles
        Est ce que tu pourrais m expliquer ou je pourrais le verifier?
        1. Bonjour

          Quand ta macro est-elle appelée ? C'est toi qui la déclenches à partir des menus ou des boutons, ou bien elle est appelée depuis une autre macro ?
          1. Je ne connais pas ce langage mais au niveau des tableaux j ai eu des erreurs. Meme principe sortir du tableau lorsque celui ci est vide.
            L'erreur la plus fréquente (du moins en c++), c'est que le tableau créé même si il n'est pas remplie contient des valeurs. (valeurs quelconque créé au hasard n'ayant aucune utilité).

            Si c'est la même dans ton langage, pense a faire une remise a zéro
            1. Je la declenche par le bouton executer pour le moment
              Je n ai pas de bouton
              Et elle n est pas appelle depuis un autre programme