Macro For i sans Next i

Résolu/Fermé
guillaume660 - 24 mars 2011 à 15:21
 guillaume660 - 26 mars 2011 à 08:45
Bonjour,

j'ai une macro qui consiste à supprimer une plage de cellule si celle-ci contient dans les colonnes A et B des valeurs particulières. Cependant une fois la première suppression effectuée la manip recommence (Car il y a Next i dans la macro) et je ne le souhaite pas.

Ma question est donc la suivant : est-il possible d'avoir un code contenant For i (donc qui cherchera la première cellule avec la valeur souhaité) puis selectionnera la plage jusqu'à la fin ?

Voici mon code :
Sub maj()


'Suppression des lignes du Mois dans la feuille archive

Sheets("ARCHIVE").Select

For i = 5 To 10000

If Cells(i, 1).Value = Sheets("PARA").Range("F2").Value And Cells(i, 2).Value = Sheets("PARA").Range("E2").Value Then
Range("A" & i + 1 & ":L" & [A65536].End(xlUp).Row).Select


End If

Next i



Merci.
A voir également:

4 réponses

re bonjour,

si j'ai bien compris dès que qu'on trouve "PARA" tu veux sélectionner de cette ligne jusqu'à la fin du tableau.

rajoute juste la ligne en gras, elle sort de la sub donc ne boucle plus!:

If Cells(i, 1).Value = Sheets("PARA").Range("F2").Value And Cells(i, 2).Value = Sheets("PARA").Range("E2").Value Then  
Range("A" & i + 1 & ":L" & [A65536].End(xlUp).Row).Select  
  Exit Sub  
End If 


si toutefois tu as du code après la boucle for i... il ne sera pas executé, alors plutôt que Exit Sub, utilise Exit For : on sort juste de la boucle For

Bonne suite

NB=une autre solution aurait été une boucle while
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
24 mars 2011 à 16:09
Bonjour

peut-être en ajoutant Exit for avant End if
0
guillaume660
25 mars 2011 à 09:16
Bonjour,

J'ai adopté la solution Exit Sub car cela ne fonctionnait pas avec Exit for, cela m'oblige faire 2 macro au lieu d'une mais 2 macro qui fonctionne.

Merci à vous !!

Une question Paf, peux tu m'expliquer la logique de ce code (ce que se dit le programme) car je ne comprends pas pourquoi mettre quelque chose après Exit Sub.



Sub test2()



Sheets("ARCHIVE").Select

For i = 5 To 10000
If Cells(i, 1).Value = Sheets("PARA").Range("F2").Value And Cells(i, 2).Value = Sheets("PARA").Range("E2").Value Then
Range("A" & i & ":L" & [A65536].End(xlUp).Row).Clear
Exit Sub
End If
Next i
End Sub


En tout cas merci encore.
0
la syntaxe oblige à mettre un end if après un if, un next après un for , un end sub pour cloturer une sub !
ça permet de savoir où s'arrêtent les instruction du if ou du for ( ou de la sub)

m^me si à un moment donné on sort de la sub, la boucle for est executée un certain nombre de fois, jusqu'à ce que le test If ... soit vrai

pas très académique comme explication

bpnne suite
0
guillaume660
26 mars 2011 à 08:45
Très clair,

Merci.
0