Novice en programmation VBA, je cherche à faire un contrôle de saisie sur une inputbox.
Je réalise un masque de saisie où l'utilisateur doit rentrer un identifiant. Si cet identifiant est contenu dans la base, ça ouvre un autre userform où il peut saisir les données. Je souhaiterai qu'un message d'erreur s'affiche en cas de saisie d'identifiant incorrect.
J'ai essayé avec ce code voir ci dessus mais ça fonctionne pas même si je rentre un identifiant correct, j'ai toujours la msgbox 'veuillez vérifier votre saisie !" qui s'affiche, si je remplace le else contenant cette msgbox par un if ça ne fonctionne pas non plus et si je l'enlève carrément ça fonctionne mais du coup je n'ai plus de message d'erreur en cas de saisie incorrect, ça arrête juste la sub.... (pas sur d'être très clair ! )
Si une âme charitable a une solution, je suis preneuse
Merci beaucoup
MON CODE VBA (de novice)
Private Sub CMB_MESURE_Click()
'déclaration des variables
Dim rep_ident As String
Dim temoin As String
choix_ident:
'création d'une variable "choix_ident" récupérant l'identifiant taper par l'utilisateur
choix_ident = InputBox("Entrez l'identifiant de l'enfant", "IDENTIFICATION ENFANT - SAISIE DE MESURE")
If choix_ident <> "" Then
'si la variable choix_ident est différent de vide alors :on vérifie que cet identifiant est bien dans la base
Worksheets(1).Activate 'activer la feuille 1
Range("a2").Select 'selectionner la cellule A2
'création de la variable findeligne qui compte le nombre de cellule remplie de la feuille active
findeligne = ActiveSheet.UsedRange.Rows.Count
'création de la variable fincol qui compte le nombre de colonne remplie de la feuille active
fincol = ActiveSheet.UsedRange.Columns.Count
'création de la variable plage qui selectionne le nombre de ligne et de colonne de la feuille active
plage = Range(Cells(1, 1), Cells(findeligne, fincol)).Select
For Each cellule In Selection
If cellule.Value = choix_ident Then
'si choix_ident est dans la base :création des variables tempnom et temppre qui récupére le nom et prénom de l'identifiant
tempnom = cellule.Offset(0, 1).Value 'offset permet de décaler d'autant de colonne et de ligne la cellule active
temppre = cellule.Offset(0, 2).Value
' création d'une variable "rep_ident" stockant la confirmation ou la non confirmation de l'utilisateur pour la saisie du dossier
rep_ident = MsgBox("Confirmez-vous la saisie de mesure pour : " & choix_ident & " ?", vbYesNo + vbQuestion, "Dossier trouvé")
If rep_ident = vbNo Then
' si non confirmation de l'utilisateur on arrête la procédure
Exit Sub
Else
'si oui on charge USF mesures
Load USF_MESURES
USF_MESURES.Show
End If
Else
MsgBox "Veuillez vérifier votre saisie !", vbExclamation, "Dossier non-trouvé"
GoTo choix_ident
End If
Next cellule
End If
End Sub
EDIT : Ajout des balises de code (la coloration syntaxique). Explications disponibles ici : ICI
Mon identifiant est bien du type chaine de caractères ex : enf1, enf2....
Tout a fait normal, il faut mettre la MsgBox "Veuillez vérifier votre saisie !" apres avoir vu toutes les cellules et si existe pas !!!
Vos identifiant sont seulement en colonne A ???
merci de vos réponses
Il y a plus simple et sans boucle de recherche pour votre cas