Bouclage du programme

Fermé
Al25 - 22 janv. 2008 à 05:02
 Al25 - 1 févr. 2008 à 01:32
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

7 réponses

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 238
22 janv. 2008 à 07:17
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
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
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
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
Desole mais je ne vois pas trop de quoi tu parles
Est ce que tu pourrais m expliquer ou je pourrais le verifier?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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