macro pour doublon 2 colonnes

D

DARKMOON

Guest
salut a tous
voici mon problème, j'utilise la macro suivante pour trier mes doublons
dans ma colonne A dans une feuille qui compte 5 colonnes
je voudrais maintenant que ma macro repère les doublons des colones A et B

VOICI UN EXEMPLE:

A B
1 ab21 100
2 ab21 123
3 ab21 100
4 ab21 100
5 ab21 155
6 ab54 90
7 ab98 458

dans ce cas seules les lignes 3 et 4 sont des doublons...

voici ma macro qui ne trie que la colonne A:

Sub macro()

Dim i, j As Integer

For i = 1 To 1199
For j = i + 1 To 1200
If Range("A" & i).Value = Range("A" & j) Then
Range("A" & j).Font.ColorIndex = 3
Range("A" & j).Interior.ColorIndex = 6

Range("B" & j).Font.ColorIndex = 3
Range("B" & j).Interior.ColorIndex = 6

Range("C" & j).Font.ColorIndex = 3
Range("C" & j).Interior.ColorIndex = 6

Range("D" & j).Font.ColorIndex = 3
Range("D" & j).Interior.ColorIndex = 6

Range("E" & j).Font.ColorIndex = 3
Range("E" & j).Interior.ColorIndex = 6

Exit For
End If
Next j
Next i

End Sub

MERCI POUR VOTRE AIDE
 
C

Creepy

Guest
Hello all,

Voici une macro que j'ai ecrit pour comparer les chiffres de ma colonne A avec ceux de la B.

Mais nombres font 12 chifffres en A et 13 e, B, c'est donc pour ca que je compare ma colonne A au 12 premiers seulement de la B.

S'il y a doublon, les valeurs sont coloriées en Jaune en Colonne A et B et copiées en D & E. A toi d'addapter en fonction de tes besoins !!!

++

Creepy

Dim EAN12 As Range
Dim EAN13 As Range
Dim Cell As Range
Dim i As Integer, x As Integer

Set EAN12 = Sheets(1).Range("A2:A" & Range("A65536").End(xlUp).Row)
Set EAN13 = Sheets(1).Range("B2:A" & Range("B65536").End(xlUp).Row)
x = 2

For Each Cell In EAN12
For i = 1 To EAN13.Count
If CStr(Cell) = CStr(Left(Cells(i, 2), 12)) Then
Cells(x, 4) = Cell: Cells(x, 5) = Cells(i, 2)
Cell.Interior.ColorIndex = 6: Cells(i, 2).Interior.ColorIndex = 6
x = x + 1
End If
Next i
Next Cell

End Sub
 
L

le Fnake

Guest
salut Darkmoon, Creepy, le forum

je propose cette adaptation de ta macro. J'ai juste rassemblé pour chaque ligne les deux valeurs sous une meme chaine de caractère. Après il y a peu être plus efficace, ca dépend du nb de données que tu as.

Sub doublons()

Dim DerLigne As Integer
Dim i As Integer, j As Integer
Dim Stringi As String, Stringj As String

DerLigne = Range("A65000").End(xlUp).Row

For i = 1 To DerLigne
Stringi = Range("A" & i) & Range("B" & i)
For j = i + 1 To DerLigne
Stringj = Range("A" & j) & Range("B" & j)
If Stringi = Stringj Then
Range("A" & j).Font.ColorIndex = 3
Range("A" & j).Interior.ColorIndex = 6

Range("B" & j).Font.ColorIndex = 3
Range("B" & j).Interior.ColorIndex = 6

Range("C" & j).Font.ColorIndex = 3
Range("C" & j).Interior.ColorIndex = 6

Range("D" & j).Font.ColorIndex = 3
Range("D" & j).Interior.ColorIndex = 6

Range("E" & j).Font.ColorIndex = 3
Range("E" & j).Interior.ColorIndex = 6
End If
Next
Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
313 131
Messages
2 095 546
Membres
106 293
dernier inscrit
jjj