whiteshark
XLDnaute Nouveau
Bonjour à tous !
J'ai récupéré ce code en cherchant sur le net, que j'ai ensuite adapté, pour chercher les numéros en doublons sur ma colonne B à partir de la cellule B3 (B1 et B2 sont pour l'en-tête).
Sub Doublons()
Dim D1, D2, P As Range, C As Range, a(), n As Long, L As String
'[B:B].Interior.ColorIndex = xlNone
Set D1 = CreateObject("Scripting.Dictionary")
Set P = Range("B3", [B65000].End(xlUp))
For Each C In P
If C.Value <> 0 Then D1.Item(C.Value) = D1.Item(C.Value) + 1
If C.Value <> "" Then D1.Item(C.Value) = D1.Item(C.Value) + 1
Next
Set D2 = CreateObject("Scripting.Dictionary")
For Each C In P
If D1.Item(C.Value) > 1 Then
'C.Interior.ColorIndex = 3
If D2(C.Value) = "" Then D2(C.Value) = C
End If
Next
a = D2.keys
'For n = 0 To UBound(a): L = L & a(n) & vbLf: Next
'MsgBox "Les valeurs suivantes sont en doublon :" & vbLf & L, 64, "Attention..."
MsgBox "Ce run existe déjà", 64, "Attention"
End Sub
Il fonctionne parfaitement si je l'associe à un bouton.
Mais mon objectif est une détection auto dès qu'un nouveau numéro est entré dans cette colonne. J'ai donc mis ce code dans la feuille correspondante sous la forme "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
Et là il me détecte un doublon à chaque fois que je clique quelque part même si toute ma colonne B est vide (sauf l'en-tête). je pense qu'il voit toutes les cellules vides comme des doublons mais je n'arrive pas à faire les modifs du code pour que cela ne soit plus le cas.
J'espère que j'ai été assez clair.
Merci d'avance pour votre aide !
J'ai récupéré ce code en cherchant sur le net, que j'ai ensuite adapté, pour chercher les numéros en doublons sur ma colonne B à partir de la cellule B3 (B1 et B2 sont pour l'en-tête).
Sub Doublons()
Dim D1, D2, P As Range, C As Range, a(), n As Long, L As String
'[B:B].Interior.ColorIndex = xlNone
Set D1 = CreateObject("Scripting.Dictionary")
Set P = Range("B3", [B65000].End(xlUp))
For Each C In P
If C.Value <> 0 Then D1.Item(C.Value) = D1.Item(C.Value) + 1
If C.Value <> "" Then D1.Item(C.Value) = D1.Item(C.Value) + 1
Next
Set D2 = CreateObject("Scripting.Dictionary")
For Each C In P
If D1.Item(C.Value) > 1 Then
'C.Interior.ColorIndex = 3
If D2(C.Value) = "" Then D2(C.Value) = C
End If
Next
a = D2.keys
'For n = 0 To UBound(a): L = L & a(n) & vbLf: Next
'MsgBox "Les valeurs suivantes sont en doublon :" & vbLf & L, 64, "Attention..."
MsgBox "Ce run existe déjà", 64, "Attention"
End Sub
Il fonctionne parfaitement si je l'associe à un bouton.
Mais mon objectif est une détection auto dès qu'un nouveau numéro est entré dans cette colonne. J'ai donc mis ce code dans la feuille correspondante sous la forme "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
Et là il me détecte un doublon à chaque fois que je clique quelque part même si toute ma colonne B est vide (sauf l'en-tête). je pense qu'il voit toutes les cellules vides comme des doublons mais je n'arrive pas à faire les modifs du code pour que cela ne soit plus le cas.
J'espère que j'ai été assez clair.
Merci d'avance pour votre aide !