OVH Cloud OVH Cloud

Macro non bloquante pour détection doublon

4 réponses
Avatar
Michir
Bonjour,

Je souhaiterais écrire une macro (je ne sais pas) pour détecter un doublon
dans une colonnes de valeurs
avec renvoi d'un message du type "Ce montant existe déjà ligne X,
Voulez-vous continuer".

Il y a bien les formats conditionnels (Cf. notamment le classeur de JB) mais
cela ne répond pas vraiment à la question.
Il s'agit d'avertir lors de la saisie d'un montant en doublon, tout en
permettant de passer outre.
A mon avis seul le VBA peut régler la question.

Nota: si l'affichage du numéro de la ligne de la ligne dans le message est
trop contraignante, on peut laisser tomber cette contrainte

Merci

Michel

4 réponses

Avatar
Jacky
Bonjour

Une piste.....
Dans le module de la feuille en question.(Clique droit sur l'onglet de la
feuille==>Visualiser le code)
Copier ceci:
'--------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
x = Target.Address
ad_col = Mid(Target.Address, 2, InStr(2, Target.Address, "$") - 2)
col = "B" 'colonne d'écriture. *** A adapter***
If ad_col <> col Then Exit Sub
derlg = Sheets("feuil1").Range(col & 65536).End(3).Row
For Each c In Range(col & "2:" & col & derlg)
If Target.Value = c.Value And x <> c.Address Then
Msg = "Le montant entré dans la cellule :" & x & Chr$(10) & "existe déjà
dans la cellule: " & c.Address & Chr$(10) & Chr$(10) & "Voulez-vous le
garder ?"
Rep = MsgBox(Msg, 36, "Attention doublon")
If Rep = 7 Then
Target.Select
Exit Sub
End If
End If
Next
End Sub
'-----------
Salutations
JJ


"Michir" a écrit dans le message de
news:43bf79ba$0$19714$
Bonjour,

Je souhaiterais écrire une macro (je ne sais pas) pour détecter un doublon
dans une colonnes de valeurs
avec renvoi d'un message du type "Ce montant existe déjà ligne X,
Voulez-vous continuer".

Il y a bien les formats conditionnels (Cf. notamment le classeur de JB)
mais

cela ne répond pas vraiment à la question.
Il s'agit d'avertir lors de la saisie d'un montant en doublon, tout en
permettant de passer outre.
A mon avis seul le VBA peut régler la question.

Nota: si l'affichage du numéro de la ligne de la ligne dans le message est
trop contraignante, on peut laisser tomber cette contrainte

Merci

Michel




Avatar
JB
Bonjour,

http://cjoint.com/?bhnMWvmttH

Clic-Droit sur onglet/Visu code puis événement Change dans menu
déroulant

Dim témoin
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 And Not témoin Then
témoin = True
p = Application.Match(Target.Value, Range("A1:A1000"), 0)
If p <> Target.Row Then
MsgBox "Doublon en : A" & p
End If
témoin = False
End If
End Sub


Cordialement
Avatar
JB
Bonjour,

http://cjoint.com/?bhnP27nOlS

Cordialement JB
Avatar
clair11
DIS MOI SI TA MACRO ON POURRAI L ADAPTER SUR PLUSIEURS COLONNES