Macro For i sans Next i

Résolu
guillaume660 -  
 guillaume660 -
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

Paf
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

peut-être en ajoutant Exit for avant End if
0
guillaume660
 
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
Paf
 
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
 
Très clair,

Merci.
0