[VBA]Valider UserForm avec la touche Entrée ?

Résolu/Fermé
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 - 20 août 2010 à 12:20
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 20 août 2010 à 14:50
Bonjour,

J'ai actuellement dans mon classeur excel un userform avec dans ma textbox ce code :

Private Sub nom_client_Change()

If Me.nom_client.Value <> "" Then
    Me.OK.Enabled = True
Else
    Me.OK.Enabled = False
End If

End Sub


Ce que j'aimerais savoir, c'est si c'est possible en complément de ce code, avoir une propriété qui m'appelle directement Me.OK si après avoir saisi mon nom j'appuye sur entrée ?

Merci beaucoup :-)

4 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 août 2010 à 13:00
Bonjour,
Tu veux que quand ont tape ENTER dans la texte box tu appel le code qui se trouve dans le Clic du bouton ? Si oui,...
Private Sub nom_client_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        OK_Click
    End If
End Sub

A+
2
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 120
20 août 2010 à 14:05
Le problème c'est que j'ai déjà la propriété nom_client_change affecté a textbox1, cela pose problème d'avoir deux propriétés différentes du même nom, non ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 20/08/2010 à 14:13
absolument pas.. Colle ce code dans le module de l'UF et tu verra...
et ce ne sont pas des propriétés mais des événements.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 août 2010 à 14:20
Autre..
Remplace
Private Sub nom_client_Change()
    If Me.nom_client.Value <> "" Then
        Me.OK.Enabled = True
    Else
        Me.OK.Enabled = False
    End If
End Sub

par
Private Sub nom_client_Change()
    OK.Enabled = nom_client <> ""
End Sub


C'est plus court o)
le "Me" n'est pas nécessaire, juste quend tu veux faire référence à l'userform...
    Me.ForeColor = XX

0
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 120
Modifié par lml-mike le 20/08/2010 à 14:49
Génial, non seulement tout marche, mais en plus j'ai une astuce d'optimisation de mon code =)

Merci beaucoup pour toutes tes réponses lermite !

Sinon tu connais le KeyCode pour la touche BackSpace ? (la touche effacer quoi :P) ?

P.S.: je recherche un article sur le contrôle de saisie de textbox avec restriction de caractères numériques pour des prix et dates(0123456789./), conversion "." en "," , interdiction du copier/coller, contrôle de la forme JJ/MM/AAAA etc...

Est-ce que tu connais un tutorial complet sur toutes les fonctionnalités disponibles quelque part sur la toile ? J'avais trouvé un dossier super mais j'arrive plus a remettre la main dessus :'( . Merci encore !
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 août 2010 à 14:50
Non, mais ce sont toutes des fonctions qu'il faut créer sois-même, par exemple pour conversion "." en ","
    nom_client = replace(nom_client".",",")

tu colle ça dans le Change et si tu tape un point il serra transformer en virgule.
0