[VBA] Comparer les valeurs de deux listes [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
28 décembre 2012
-
Messages postés
3
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
28 décembre 2012
-
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

Messages postés
15433
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
30 novembre 2020
1 414
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
28 décembre 2012

Yeees ça fonctionne !

(au début le code amélioré ne fonctionnai pas, mais en supprimant les . devant "Range("A" & i)" et "Rows(i).Delete" tout marche bien)

Merci beaucoup pour votre aide et bonnes fêtes.
Adrien
Messages postés
15433
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
30 novembre 2020
1 414
Re,

Il fallait simplement changer le nom de la feuille, ici c'est feuil1 pour vous c'est ....
En enlevant le point devant Range("A" & i) et Rows(i).Delete, si vous sélectionnez une autre feuille, avant de lancer le code, vous allez supprimer des colonnes sur la feuille active pas celle que vous voulez!!!!!!!!
Messages postés
3
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
28 décembre 2012

Ok je comprends merci pour l'info me voilà moins ignorant!
Bonne journée