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

XL 2016 Doublons

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 !

Jorelle27

XLDnaute Nouveau
Bonjour la team,
Jai est gros soucis je souhaite bloqué les doublons sur une colonne Excel et j’ai essayé =countif(A:A,A2)=1 qui marche. mais la faille c’est quand je fais du copier coller ça ne bloque pas

J’ai besoin de vous les experts.
 
Solution
Bonjour Jorelle27, Dudu2,

Placez cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, c As Range
Set plage = Range("A:A") 'à adapter
Set Target = Intersect(Target, plage, UsedRange)
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les évènements
For Each c In Target 'si entrées multiples
    If c <> "" Then If Application.CountIf(plage, c) > 1 Then MsgBox "Doublon en " & Target.Address(0, 0) & " l'entrée va être annulée...", 48: Application.Undo: Exit For
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
Dans le vide, comme ça je ne ne peut rien proposer.
Est-ce une saisie dans un tableau structuré ? Sur une ou des colonnes particulières ? Autre chose ?
Un fichier ?
 
Questions déjà posées, encore un effort...
La colonne possède-t-elle un titre ?
C'est quoi une valeur identique ? "TOTO" est identique à "toto" ou pas ? " TOTO " (espaces avant et/ou après) est identique à "TOTO" (sans espaces avant et/ou après) ou pas ?
 
Bonjour Jorelle27, Dudu2,

Placez cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, c As Range
Set plage = Range("A:A") 'à adapter
Set Target = Intersect(Target, plage, UsedRange)
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les évènements
For Each c In Target 'si entrées multiples
    If c <> "" Then If Application.CountIf(plage, c) > 1 Then MsgBox "Doublon en " & Target.Address(0, 0) & " l'entrée va être annulée...", 48: Application.Undo: Exit For
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
 
Bonjour @job75,

Avant que tu ne postes, j'avais fait un code beaucoup plus "lourd" que le tien qui est parfait.
Mais en introduisant quelques options (le demandeur n'ayant pas répondu ou voulu répondre aux questions) et en travaillant uniquement sur des tables, tout ça le rendant beaucoup plus "consistant", surtout à cause des fonctions annexes nécessaires.
 
Dernière édition:
En plus avec le traitement optionnel des diacritiques aussi !
Juste pour le fun. Pour le demandeur et ses "valeurs identiques" ton code est bien adapté.
VB:
    'Paramètres de traitement
    Const NoColonneConcernée = 1
    Const NbLignesTitre = 1
    Const AccepteValeurVide = False
    Const StringCompare = True
    Const IgnorerCasse = True
    Const IgnorerDiacritiques = True
    Const TrimCompare = True
 

Pièces jointes

Dernière édition:
Merci il fonctionne parfaitement
 
- 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
472
Réponses
9
Affichages
562
Réponses
8
Affichages
835
Réponses
2
Affichages
455
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…