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.

4 réponses

  1. 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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    peut-être en ajoutant Exit for avant End if
    0
  3. 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
    1. 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