Avec VBA, identifier les doublons sur deux colonnes sans concaténation

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,


je cherche un moyen par du VBA d'identifier des doublons sans passer par une colonne intermédiaire

Pour faire simple, j'ai une colonne avec le nom de famille puis une autre avec le prénom correspondant

Est considéré comme doublon le couple (nom et prénom) revenant plus d'une fois

Avec une colonne contenant la concaténation (nom&prénom) je sais faire mais je cherche un moyen sans cette béquille et surtout par du VBA …

Quelqu"un a-t-il une idée ?

D'avance, merci pour vos lumières
 

Pièces jointes

  • Identifier_doublons_04052015.xlsm
    40.7 KB · Affichages: 55
  • Identifier_doublons_04052015.xlsm
    40.7 KB · Affichages: 46
  • Identifier_doublons_04052015.xlsm
    40.7 KB · Affichages: 47

Roland_M

XLDnaute Barbatruc
Re : Avec VBA, identifier les doublons sur deux colonnes sans concaténation

bonsoir

avec une macro dans le code feuille recherche
 

Pièces jointes

  • Identifier_doublons_04052015.xlsm
    34.9 KB · Affichages: 54
  • Identifier_doublons_04052015.xlsm
    34.9 KB · Affichages: 44
  • Identifier_doublons_04052015.xlsm
    34.9 KB · Affichages: 48

Sebast

XLDnaute Impliqué
Re : Avec VBA, identifier les doublons sur deux colonnes sans concaténation

Bonsoir à tous, et merci pour votre contribution

Roland_M
Merci pour ta solution, très élégante avec recours au dictionary mais quand je décortique le code, j’ai l’impression qu’il pointe sur la colonne C qui n’était là que pour illustrer ce que je voulais éviter (la presence physique d’une colonne parasite contenant la concatenation, véritable béquille pour moi).
Je me trompe peut-être car ce type de code est récent pour moi ?

Boisgontier
Merci pour ton code, lui aussi très pointu mais j’aurais dû m’exprimer plus clairement dans ma demande. Les couleurs affichées dans ma demande n’étaient là que pour attirer l’attention du lecteur, je n’attendais pas spécialement que chaque doublon ait sa couleur …
Du coup, si par exemple, en colonne C j’avais « doublon » ça m’irait parfaitement


Tatiak
Au début, je n’avais pas compris ta proposition mais je crois qu’elle va me convenir car je vais l’intégrer dans une boucle. C’est en te relisant que je me suis rendu compte que je n’avais effectivement pas besoin de cette colonne artificielle contenant la concaténation.
En adaptant la formule avec ce décalage de ligne, j’arrive à me passer de cette colonne parasite.


Encore merci à vous tous pour votre aide et pour m’avoir ouvert les yeux
 

Roland_M

XLDnaute Barbatruc
Re : Avec VBA, identifier les doublons sur deux colonnes sans concaténation

re

voici avec modif comme tu le souhaites !
 

Pièces jointes

  • Identifier_doublons_04052015(2).xlsm
    27.5 KB · Affichages: 56
Dernière édition:

Sebast

XLDnaute Impliqué
Re : Avec VBA, identifier les doublons sur deux colonnes sans concaténation

Salut Roland_M,

C’est parfait !
Par contre tu vas probablement pouvoir m’éclairer.
J’ai voulu placer le code dans une sub(), de manière à l’intégrer dans un projet (et donc pas par un événement)


Quand je lance la macro, ça coince sur

Code:
If Target.Address = "$C$1" Then

que j’ai ou pas option explicit

As-tu une idée ?

Merci d’avance
 

Roland_M

XLDnaute Barbatruc
Re : Avec VBA, identifier les doublons sur deux colonnes sans concaténation

re


Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address(0, 0) = "C1" Then TaMacro: Cancel = True
End Sub

'exemple ta macro dans un module
Public Sub TaMacro()
Set MonDico = CreateObject("Scripting.Dictionary")
'
NoPremLigSource = 2: ColSource1$ = "A": ColSource2$ = "B"
NoLigDestin = 2: ColDestin$ = "C"
'
NoDernLigSource = Cells(Rows.Count, ColSource1$).End(xlUp).Row
R$ = ColDestin$ & NoLigDestin & ":" & ColDestin$ & NoDernLigSource
Range(R$) = ""
NoLig = NoPremLigSource
Do While NoLig <= NoDernLigSource
   If Cells(NoLig, ColSource1$) <> "" Then
      Var$ = Cells(NoLig, ColSource1$) & " " & Cells(NoLig, ColSource2$)
      If Not MonDico.Exists(Var$) Then
         MonDico.Add Var$, Var$
         Cells(NoLigDestin, ColDestin$) = Var$: NoLigDestin = NoLigDestin + 1
      End If
   End If
   NoLig = NoLig + 1
Loop
End Sub
 
Dernière édition:

Sebast

XLDnaute Impliqué
Re : Avec VBA, identifier les doublons sur deux colonnes sans concaténation

Bonjour Roland

Merci pour la correction, ça marche impeccable et c’est vraiment très rapide
Je commence à mieux comprendre l’intérêt du dictionary mais je dois digérer tout ça …

Encore merci pour ton aide précieuse
 

Discussions similaires

Statistiques des forums

Discussions
312 183
Messages
2 086 005
Membres
103 087
dernier inscrit
sarah.caneri