Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

comparaison de deux colonnes

  • Initiateur de la discussion Initiateur de la discussion LOLIPOP31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

LOLIPOP31

Guest
Bonjour,

Je travaille sur une appli VBA excel et le pb suivant se pose à moi

Je voudrais comparer 2 colonnes excel definies. Si la valeur en cours dans la colonne 2 est trouvée dans la colonne 1 alors il ne se passe rien sinon je rajoute la valeur de la Col2 a la fin de la Col1

Merci par avance
 
Bonjour

J'assume qu'il n'y a qu'une seul valeur nouvelle à la fois dans la col2.

vrtValeur = ActiveSheet.Cells(65536, 2).End(xlUp).Value
Columns('A:A').Select
If Selection.Find(What:=vrtValeur, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True) Is Nothing Then
Else
Cells(ActiveSheet.Cells(65536, 1).End(xlUp).Row + 1, 1).Value = vrtValeur
End If

Phil
 
Bonjour Lolipop31 et Hellboy,


Une variante sans Find qui recherche toutes les valeurs absentes :

Sub AjouterValeur()
Dim Plage As Range, Cell As Range
Dim Lig As Long

Set Plage = Range('B2:B' & Range('B65536').End(xlUp))
For Each Cell In Plage
Lig = Range('A65536').End(xlUp).Row + 1
If Application.CountIf(Range('A2:A' & Lig), Cell) = 0 Then
Range('A' & Lig).Value = Cell.Value
End If
Next Cell
End Sub

Cordialement

Bernard
 
Bonjour Lolipop31,

Quelques explications :

Sub AjouterValeur()
'Déclaration des variables nécessaires au raisonnement
Dim Plage As Range, Cell As Range
Dim Lig As Long
'Définition de la variable faisant référence à l'objet (zone utilisée de la colonne 'B')
Set Plage = Range('B2:B' & Range('B65536').End(xlUp))
'Boucle sur les cellules de la plage avec définition de la variable Cell
For Each Cell In Plage
' Définition de la variable : valeur de la ligne immédiatement au-dessus de la dernière ligne de la colonne 'A'
Lig = Range('A65536').End(xlUp).Row + 1
' Vérification si le nombre de la valeur de la cellule dans la zone utilisée de la colonne 'A' est égal à zéro
If Application.CountIf(Range('A2:A' & Lig), Cell) = 0 Then
' Si ce nombre est égal à zéro, on rajoute cette valeur à la colonne 'A'
Range('A' & Lig).Value = Cell.Value
End If
Next Cell 'On passe à la cellule suivante
End Sub

Tu peux replcer cette macro dans le module à la place de l'autre, les explications seront en vert.

Cordialement

Bernzrd
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
38
Affichages
1 K
Réponses
6
Affichages
700
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…