Contrôle sur inputbox

Fermé
mariel28* Messages postés 9 Date d'inscription lundi 8 août 2016 Statut Membre Dernière intervention 10 août 2016 - Modifié par NHenry le 8/08/2016 à 16:32
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 - 10 août 2016 à 10:47
Bonjour,

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

Merci d'y penser dans tes prochains messages.

1 réponse

f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
8 août 2016 à 19:27
Bonjour,

Inputbox ---> chaine de caracteres

vos celllules a tester sont comment, chaine de caracteres ou numerique ??
0
mariel28* Messages postés 9 Date d'inscription lundi 8 août 2016 Statut Membre Dernière intervention 10 août 2016
9 août 2016 à 09:22
Bonjour,

Mon identifiant est bien du type chaine de caractères ex : enf1, enf2....
0
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712 > mariel28* Messages postés 9 Date d'inscription lundi 8 août 2016 Statut Membre Dernière intervention 10 août 2016
9 août 2016 à 09:42
Bonjour,

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 ???
0
mariel28* Messages postés 9 Date d'inscription lundi 8 août 2016 Statut Membre Dernière intervention 10 août 2016
9 août 2016 à 09:48
Oui mes identifiants sont seulement en colonne A
0
mariel28* Messages postés 9 Date d'inscription lundi 8 août 2016 Statut Membre Dernière intervention 10 août 2016
9 août 2016 à 09:51
Ok donc il faudrait que je place la msgbox après le next cellule ?

merci de vos réponses
0
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712 > mariel28* Messages postés 9 Date d'inscription lundi 8 août 2016 Statut Membre Dernière intervention 10 août 2016
9 août 2016 à 09:54
Re,

Il y a plus simple et sans boucle de recherche pour votre cas
0