Bouclage du programme

Al25 -  
 Al25 -
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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  2. Al25
     
    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
    0
  3. le père
     
    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.
    0
    1. Al25
       
      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
      0
  4. Al25
     
    Desole mais je ne vois pas trop de quoi tu parles
    Est ce que tu pourrais m expliquer ou je pourrais le verifier?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. le père
     
    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 ?
    0
  7. bowbow13
     
    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
    0
  8. Al25
     
    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
    0