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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <michir1789@wanadoo.fr> a écrit dans le message de
news:43bf79ba$0$19714$8fcfb975@news.wanadoo.fr...
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
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
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
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
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