[VBA] Comparer les valeurs de deux listes

Résolu/Fermé
adrienew
Messages postés
3
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
28 décembre 2012
- 27 déc. 2012 à 10:17
adrienew
Messages postés
3
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
28 décembre 2012
- 28 déc. 2012 à 10:24
Bonjour,

Je suis débutant depuis quelques jours en VBA et je me trouve face à un problème que je ne parviens pas à résoudre malgré de longues recherches.

J'ai deux colonnes sur deux feuilles différentes, certaines cellules de la colonne 1 (feuille 1) ont la même valeur que des cellules de la colonne 2 (feuille 2).

Je souhaite écrire un code qui dise "pour chaque cellule x de la colonne 1, vérifier si la valeur est présente dans la colonne 2, si ce n'est pas le cas => supprimer la ligne contenant la cellule x".

J'ai écris ceci mais ça ne fonctionne pas ("l'indice n'appartient pas à la sélection"), pourriez-vous m'aider ?
Merci d'avance
Adrien

Sub Compare()

Dim j As Integer
Dim i As Integer

For i = 50 To 2 Step -1

For j = 2 To 50

If Range("A" & i).Value <> ThisWorkbook.Sheets("Feuil2").Range("A" & j).Value Then
Rows(i).Delete
End If
Next j
Next i

End Sub





2 réponses

f894009
Messages postés
16490
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mai 2022
1 633
27 déc. 2012 à 11:31
Bonjour,

Code ameliore:

Sub Compare()
  Dim i As Integer
  Dim col_2 As Range
  
  'Definition plage de cellules en memoire pour vitesse execution
  Set col_2 = Worksheets("feuil2").Range("A1:A50")
  
  With ThisWorkbook.Sheets("Feuil1")
    For i = 50 To 2 Step -1
      'Test si valeur cellule feuil1!=Ax est dans Plage col_2(feuil2!A1:A50))
      If Application.CountIf(col_2, .Range("A" & i).Value) = 0 Then
        'Delete ligne i feuil1
        .Rows(i).Delete
      End If
    Next i
  End With

End Sub



Pour votre code il faut indiquer quelle feuille pour la liste feuille1 et pour la ligne a deleter.

Bonne fete de fin d'annee
2