XL 2016 Doublons

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+

Dudu2

XLDnaute Barbatruc
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 ?
 

job75

XLDnaute Barbatruc
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+
 

Dudu2

XLDnaute Barbatruc
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:

Dudu2

XLDnaute Barbatruc
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

  • VBA Empêcher saisie doublons sur colonne.xlsm
    33.6 KB · Affichages: 4
Dernière édition:

Jorelle27

XLDnaute Nouveau
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+
Merci il fonctionne parfaitement
 

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh