VBA Renvoyer erreur si valeur saisie dans formulaire déja existante

Johan

XLDnaute Occasionnel
Bonjour à tous!


J'aimerais renvoyer automatiquement un message d'erreur si la valeur saisie dans mon textbox "ID" de mon userform existe déja dans la colonne A de ma feuille 1 lorsque je valide le formulaire, dans le but d'éviter les erreurs.

Dans le fichier prototype ci-joint, les différents champs du formulaire viennent renseigner la feuille 2.


PS : Ne sachant pas encore trop comment m'y prendre à l'heure actuelle sur mon fichier d'origine, pourriez-vous également mettre en apostrophe dans le code le cas inverse, c'est à dire si erreur si ce n'est pas une valeur existante dans ma colonne A ?

Un grand merci d'avance, en espérant avoir été suffisamment clair.

A votre disposition si besoin.
 

Pièces jointes

  • Test_ValeurFormulaireExistante.xlsm
    21.3 KB · Affichages: 50

Paf

XLDnaute Barbatruc
Re : VBA Renvoyer erreur si valeur saisie dans formulaire déja existante

Bonjour,

C'est un peu comme dans cette discussion:

https://www.excel-downloads.com/thr...ndre-dans-feuil2-valeur-equivalente.20005409/

on cherche la valeur sur une plage

Code:
Private Sub ID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Dim DerLig As Long
 With Sheets("Feuil1")
 DerLig = .Range("A" & Rows.Count).End(xlUp).Row
 Set r = .Range("A14:A" & DerLig).Find(ID.Value)
 If r Is Nothing Then
    MsgBox "L'ID n'existe pas"
 Else
    MsgBox "L'ID existe"
    ID = ""
    Cancel = True
 End If
 End With
End Sub

A+
 

Johan

XLDnaute Occasionnel
Re : VBA Renvoyer erreur si valeur saisie dans formulaire déja existante

Re!

Le lien vers la discussion est un sujet dont je suis l'auteur... ;)

Du coup j'ai modifié votre code à ma façon et ça marche exactement comme je l'ai souhaité.

Public Sub ID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim DerLig As Long
With Sheets("Feuil1")
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
Set r = .Range("A14:A" & DerLig).Find(ID.Value)
If Not r Is Nothing Then
MsgBox "ID DEJA EXISTANT"

Cancel = True
End If
End With
End Sub

Private Sub VALIDER_Click()

Feuil2.Range("A1").Value = ID.Value
Feuil2.Range("B1").Value = test1.Value
Feuil2.Range("C1").Value = test2.Value

Unload UserForm1

End Sub


Et si je change d'avis je n'ai qu'à enlever le "not" de "If not r is Nothing" et modifier le msgbox.

Merci à vous Paf, problème résolu
 

Discussions similaires

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 656
dernier inscrit
VNVT