comparaison de deux colonnes

  • Initiateur de la discussion LOLIPOP31
  • Date de début
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
 

Hellboy

XLDnaute Accro
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
 

CBernardT

XLDnaute Barbatruc
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
 

CBernardT

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 676
Messages
2 090 803
Membres
104 670
dernier inscrit
Djnic30