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

VBA pour détecter les doublons d'une colonne

  • Initiateur de la discussion Initiateur de la discussion pepsi
  • 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 !

pepsi

XLDnaute Occasionnel
Bonjour le forum 🙂

j'ai récupéré un code qui permet de détecter les doublons d'une colonne
le problème c'est qu 'il considère le 0 comme un doublon, et j'aimerai éviter cela

comment puis je modifie le code?

merci d'avance
Code:
Sub Doublon()
 
    Dim Plage As Range
    Dim Cel As Range
 
    With Worksheets("Feuil1")
 
    'en colonne "A" à partir de A2
       Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
 
    End With
 
 
    'boucle la plage de la feuille "Compte" et cherche chaque valeur
   'en correspondance exacte dans la plage de la feuille "Source"
   For Each Cel In Plage
 
        If Application.CountIf(Plage, Cel.Value) > 1 Then
 
            MsgBox "Attention, la valeur '" & Cel.Value & "' est en doublon," _
                   & " veuillez éliminer manuellement le double situé en '" & Cel.Address(0, 0) _
                   & "' avant de pouvoir exporter les données !"
 
            Cel.Interior.ColorIndex = 3
 
        End If
 
    Next Cel
 
End Sub
 
Re : VBA pour détecter les doublons d'une colonne

Bonjour, eh bien après For Each Cel In Plage
Rajouter une condition, exemple : if not Cel.value = 0 then

Qui veut dire littéralement, si ma cellule n'est pas égale à zéro.

Non ?
 
Re : VBA pour détecter les doublons d'une colonne

En gardant ta procédure tu peux faire :
Code:
 If Cel.Value <> 0 Then
If Application.CountIf ...
End If
End If
Mais tu devrais regarder du côté du dictionary qui sera sans aucun doute plus rapide pour sortir les doublons.

Edit: Bonjour Cpk.
 
Re : VBA pour détecter les doublons d'une colonne

Bonjour

Tu dois pouvoir faire avec un truc du style

For Each Cel In Plage
If cel.Value <> 0 then
If Application.CountIf(Plage, Cel.Value) > 1 Then
.......
End If
End If
Next cel
End Sub

@ plus
 
Re : VBA pour détecter les doublons d'une colonne

C'est vrai que la procédure peut s'avérer longue.

en fait l'idéal serait un code, qui dès que je tape une valeur en doublon, la valeur s'affiche en rouge pour signaler le doublon

mais je n'arrive pas à trouver une écriture
 
Re : VBA pour détecter les doublons d'une colonne

Pour vérifier les doublons en colonne A avec une MsgBox qui affiche la liste et les adresse.
Code:
Sub Doublon()
    Dim Plage As Range
    Dim Cel As Variant
 
Set Plage = Worksheets("Feuil1").Range("a2:a" & [a65000].End(xlUp).Row)
Set d = CreateObject("Scripting.Dictionary"): Set d2 = CreateObject("Scripting.Dictionary")

   For Each Cel In Plage
        If Cel.Value <> 0 And d.exists(Cel.Value) Then
            Cel.Interior.ColorIndex = 3: d2(Cel.Address) = Cel.Value
                Else: d(Cel.Value) = ""
        End If
    Next Cel
    
    For Each Cel In d2.Keys
        m = m & Chr(10) & d2(Cel) & " en " & Cel
    Next Cel
    
MsgBox "Les valeurs suivantes sont en doublons, les supprimer manuellement" & m, vbCritical
End Sub
 
Re : VBA pour détecter les doublons d'une colonne

Il doit y avoir plus simple que le code ci-après, mais c'est une idée.

Code:
Public a
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(1)) Is Nothing Then
Set d = CreateObject("Scripting.Dictionary")
        For Each c In a: d(c) = "": Next c
            If d.exists(Target.Value) Then MsgBox "La valeur existe déjà", 16
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(1)) Is Nothing Then
a = Worksheets("Feuil1").Range("a2:a" & [a65000].End(xlUp).Row).Value
End If
End Sub
 
Re : VBA pour détecter les doublons d'une colonne

Tu penses qu'il est possible de modifier ton premier code pour que les 2 valeurs en double passent en rouge ? et pas uniquement le doublon
 
Re : VBA pour détecter les doublons d'une colonne

Bonjour à toutes et à tous. Sinon cela peut se faire également en validation de donnée. Exemple de formule

Code:
=NB.SI($A:$A;A1)=1
 
Re : VBA pour détecter les doublons d'une colonne


le code est sensible à la casse. si je met une majuscule à un mot il ne le considère plus en doublon.
je ne vois pas ou cela est déclaré
 
Re : VBA pour détecter les doublons d'une colonne

Code:
Sub Doublon()
    Dim Plage As Range
    Dim Cel As Variant
 
Set Plage = Worksheets("Feuil1").Range("a2:a" & [a65000].End(xlUp).Row)
Set d = CreateObject("Scripting.Dictionary"): Set d2 = CreateObject("Scripting.Dictionary")

   For Each Cel In Plage
        If Cel.Value <> 0 And d.exists(Ucase(Cel.Value)) Then
            Cel.Interior.ColorIndex = 3: d2(Cel.Address) = Cel.Value
                Else: d(Ucase(Cel.Value)) = ""
        End If
    Next Cel
    
    For Each Cel In d2.Keys
        m = m & Chr(10) & d2(Cel) & " en " & Cel
    Next Cel
    
MsgBox "Les valeurs suivantes sont en doublons, les supprimer manuellement" & m, vbCritical
End Sub

Dis-moi si ça fonctionne.
 
Re : VBA pour détecter les doublons d'une colonne

Bonjour

C'est vrai que la procédure peut s'avérer longue.

en fait l'idéal serait un code, qui dès que je tape une valeur en doublon, la valeur s'affiche en rouge pour signaler le doublon

mais je n'arrive pas à trouver une écriture

Le plus simple serait d'utiliser une mise en forme conditionnelle, non ?

@ plus
 
- 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

Discussions similaires

Réponses
5
Affichages
238
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
1
Affichages
180
Réponses
4
Affichages
223
Réponses
3
Affichages
665
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…