Comparer cellule colonne et renvoyer une messagebox

Bonjour à tous,

Je suis sur un problème depuis quelques jours et je n'arrive pas à me débloquer. J'ai cherché partout dans le forum mais impossible de trouver un sujet comparable (ou alors je n'arrive pas à adapter mon code).

Voici mon problème : J'aimerais que pour la colonne B, Excel me renvoie un message d'erreur (MessageBox "Numéro dossier déjà existant") si l'utilisateur entre dans une cellule de la colonne B un numéro qui existe déjà dans cette même colonne.

Un exemple sera peut-être plus parlant : Si en B6 je rentre la valeur "12/26" mais qu'elle est déjà présente en B3 alors une messagebox s'affiche, signalant l'erreur. Si la valeur n'existe pas déjà alors rien ne se passe.

Le but de mon code serait de vérifier qu'un numéro de dossier n'existe pas déjà dans ma colonne lorsque l'utilisateur entre une nouvelle valeur dans cette colonne.

Voici le code que j'ai pour l'instant, et qui ne fonctionne pas malheureusement :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Lig As Integer
Dim Col As String
Dim Nbrlig As Long
Dim msg
Dim condition As Integer
Dim Cible As String

If Target.Column = 2 Then
Col = "B"
condition = 0
Cible = Cells.Range("B:B")
Nbrlig = 0
Nbrlig = Cells(65536, Col).End(xlUp).Row
For Lig = 1 To Nbrlig
    If Application.Match(Cible, Worksheet("Feuil1").Range("B:B").Value, 0) Then
    condition = 1
    End If
Next

If condition = 1 Then
msg = MsgBox("SEP déjà existant", vbOKOnly, "Attention")
End If

End If

End Sub

Je vous joint également un document excel.

PS 1 : Je ne sais pas comment définir ma cellule "Cible". Elle représente la cellule où l'utilisateur entre une nouvelle valeur. C'est cette cellule qui devra être comparée avec toutes les autres parmi la colonne B.

PS 2 : ma version de Excel est la 2007

Je vous remercie par avance pour votre aide précieuse !

Cordialement,

13classeur1.xlsx (11.91 Ko)

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

25classeur1-v1.xlsm (24.21 Ko)

Bonjour, Salut gmb,

Essaye le code suivant dans le module de l'onglet concerné :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect([B:B], Target) Is Nothing Then
        If Application.CountIf(Range("B1:B" & Target.Row), Target) > 1 Then
            MsgBox "Le dossier & Target & existe déjà"
            Application.EnableEvents = False
            Target = ""
            Target.Select
        End If
    End If
    Application.EnableEvents = True
End Sub

Bonjour à vous deux,

Déjà un grand merci pour vos réponses rapides !

Pour la solution de gmb, rien ne se passe quand je teste le code :/

Pour Raja, c'est exactement ce que je souhaite à une chose près : est-il possible que le message d'erreur s'affiche lorsque l'utilisateur écrit sa valeur et clique sur Entrée ? Parce que pour l'instant, l'utilisateur est obligé de re-cliquer sur la cellule qu'il vient d'écrire pour la vérifier. Et j'ai juste modifier une petite erreur au niveau la Msgbox :

MsgBox "Le dossier " & Target & " existe déjà"

Merci d'avance.

Re,

A la validation après la saisie le code marche normalement. Bien entendu, il faut revalider sur le message d'erreur pour revenir à la saisie. Quant à la modification, je pense que tu as raison de le modifier.

Bonjour Raja

SmobyM a écrit :

Pour la solution de gmb, rien ne se passe quand je teste le code :/

Pour qu'il se passe quelque chose, il faut saisir une valeur dans la première cellule vide de la colonne B du tableau, en partant du haut.

Bye !

capture

C'est bon ! J'ai compris et tout fonctionne avec vos codes !

Merci énormément !

Bonne journée.

Rechercher des sujets similaires à "comparer colonne renvoyer messagebox"