[VBA] Comparer les valeurs de deux listes
Résolu
adrienew
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
adrienew Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
adrienew Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Comparer une valeur à une liste excel
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Excel liste déroulante en cascade - Guide
- Trier une colonne excel - Guide
- Word et excel gratuit - Guide
2 réponses
Bonjour,
Code ameliore:
Pour votre code il faut indiquer quelle feuille pour la liste feuille1 et pour la ligne a deleter.
Bonne fete de fin d'annee
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
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
(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
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!!!!!!!!
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!!!!!!!!