Problème de boucle vba

Résolu
Bonjour tout le monde

J'ai un problème , j'ai adapté un programme trouvé sur le net pour comparer 2 listes de valeur dans 2 feuilles différentes sur excel et supprimer dans la feuille 1 les valeurs pas présente dans la feuille 2 :

Sub Compare()
Dim i As Integer
Dim col_2 As Range 'Definition plage de cellules en memoire pour vitesse execution
Dim col_1 As Range

Set col_1 = Worksheets("Feuil2").Range("A1:A16")
Set col_2 = Worksheets("Feuil1").Range("A1:A16")

With ThisWorkbook.Sheets("Feuil2")

For i = 16 To 2 Step -1  'Test si valeur cellule feuil1 est dans Plage col_2(feuil2!A1:A16))

If Application.CountIf(col_2, .Range("A" & i).Value) = 0 Then
Feuil1.Rows(i).Delete
i = i + 1
End If

Next i

End With

End Sub


Le programme marche très bien mais le problème est qu'il s'arrête jamais car il ne sors pas de la boucle For

Si quelqu'un aurait la solution

Merci

2 réponses

  1. Modérateur
    Bonjour,

    Vu par un amateur (moi) : en 10, tu décrémentes i de 1 à chaque tour, en 15 tu incrémentes au moins dans certains cas le même i de 1.
    1. Bonjour, merci pour ta réponse
      J'avais juste incrémenté le i car sinon il me supprimer qu'une seule valeur de la liste
      Mais je vois que le programme de Patrice33740 marche !
  2. Bonjour,

    Rssaies :
    Sub Compare()
    Dim i As Integer
    Dim col_2 As Range 
    Dim col_1 As Range
      Set col_1 = Worksheets("Feuil1").Range("A2:A16")
      Set col_2 = Worksheets("Feuil2").Range("A2:A16")
      For i = col_1.Row + col_1.Rows.Count - 1 To col_1.Row Step -1
        If Application.CountIf(col_2, col_1.Rows(i).Value) = 0 Then
          col_1.Rows(i).EntireRow.Delete
        End If
      Next i
    End Sub


    1. Merci sa marche super !