Macro For i sans Next i

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. Contributeur
      Bonjour

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