Message box pour une valeur existante

Bonjour,

J'ai un petit fichier Excel avec 2 colonnes (ci joint),

Ce que je voudrais faire sur le tableau est le suivant:

Pour chaque nouvelle saisie d'un numéro CIN qui existe deja dans la colonne B, un message Box d'avertissement s'affiche pour m'informer que le "numéro CIN existe déja"

16message-box.xlsx (9.48 Ko)

Bonjour,

Veux-tu réellement qu'une macro se charge à chaque nouvelle saisie ? Et si ton fichier de base ne prend pas en charge les macros, est-ce que c'est pertinent ?

Une MFC mettant la cellule en rouge si le numéro existe déjà pourrait être une solution plus fluide et tout aussi efficace.

Cdlt,

Re-Bonjour,

Malgré que la MFC pourrait être très utile dans ce cas comme vous avez indiquez, la solution macro m’intéresse aussi surtout que mon fichier de base prend en charge les macros

cdlt

Bonjour

Tu peux peut-être essayer cela, formule à entrer en C3, puis étirer vers le bas

=SI(NB.SI(B1;B3)>0;"Doublon";"")

Bye

Re,

Voici une solution, pas optimale je suis pas un pro du VBA mais normalement sa fonctionne dit moi.

Le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
i = ActiveCell.Row
While Range("B" & i).Value <> ""
i = i - 1
Wend
i = i - 1
Dim newCIN As String
newCIN = Range("B" & i).Value

Dim rg As Range
Set rg = Sheets("Feuil1").Range("B2:B" & i - 1).Find(what:=newCIN, lookat:=xlPart)
If Not rg Is Nothing Then
    MsgBox "Le code CIN est déjà existant : " & rg.Address
    'Mettre code de copie
End If
End Sub

Le fichier :

10message-box-1.xlsm (14.31 Ko)

Cdlt,

Re,

Ce dernier code VBA fonctionne si l'utilisateur tape "Entrée" après avoir saisir le N) CIN"

une erreur s'affiche si au contraire l'utilisateur tape sur "flèche" au lieu de "Entrée"

cdlt

Re,

C'est bon là sa fonctionne

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCIN As String
Dim coor As String
Dim i As Integer
i = ActiveCell.Row

If Range("B" & i).Value = "" Then
i = i - 1
End If
NewCIN = Range("B" & i).Value
coor = Range("B" & i).Address

Dim rg As Range
Set rg = Sheets("Feuil1").Range("B:B").Find(what:=NewCIN, lookat:=xlPart)
If coor <> rg.Address Then
If Not rg Is Nothing Then
    MsgBox "Le code CIN est déjà existant : " & rg.Address
    'Mettre code de copie
End If
End If
End Sub

Cdlt,

RE

Sa fonctionne sauf que le message se répète plusieurs fois au fur et à mesure que l'utilisateur ajoute des lignes

est il possible que le message Box s'affiche une seule fois dès que l'utilisateur ajoute un numéro CIN existant

cdlt

seyf1981 a écrit :

RE

Sa fonctionne sauf que le message se répète plusieurs fois au fur et à mesure que l'utilisateur ajoute des lignes

est il possible que le message Box s'affiche une seule fois dès que l'utilisateur ajoute un numéro CIN existant

cdlt

Désolé mais la j'ai pas compris .. JE viens de tester mais le message n'apparaît que si tu saisie dans la colonne B un CIN déjà existant..

Bjr,

Tout à fait, Le message Box apparaît sans doute, mais si tu ajoute des lignes juste après il va apparaître plusieurs fois

cdlt

Ca veux dire quoi "ajouter des lignes" pour toi ?

Je comprend pas du tout ou tu veux en venir, je test la macro elle marche parfaitement le message apparaît qu'une fois moi. Nonobstant le nombre de ligne que je saisie.

Même s'il apparaît 2 fois je suis très satisfait,

Votre solution est la meilleure pour moi, la répétition du même message pour la deuxième fois sera très utile, comme ça l'utilisateur tiendra compte de cette 2ème alerte si jamais il n'a pas remarqué la première

Merci infiniment VH_AE

Cdlt

Bonjour,

je vois votre discussion.

Il est normal que ce message apparaisse chaque fois que tu saisis un doublon, sinon à quoi servirait l'avertissement s'il ne fonctionnait que la première fois, tu pourrais alors ensuite saisir autant de doublons que tu veux !!

Bye

Merci bcp pour cet enrichissement

Rechercher des sujets similaires à "message box valeur existante"