Problème de boucle vba

Résolu/Fermé
titidefdl13 Messages postés 12 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 22 juin 2018 - Modifié le 21 juin 2018 à 16:22
titidefdl13 Messages postés 12 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 22 juin 2018 - 22 juin 2018 à 08:45
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

Chris 94 Messages postés 50787 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 30 janvier 2021 7 605
21 juin 2018 à 16:24
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.
0
titidefdl13 Messages postés 12 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 22 juin 2018
22 juin 2018 à 08:45
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 !
0
Patrice33740 Messages postés 8553 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 24 octobre 2022 1 759
Modifié le 21 juin 2018 à 16:50
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



Cordialement
Patrice
0
titidefdl13 Messages postés 12 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 22 juin 2018
22 juin 2018 à 08:45
Merci sa marche super !
0