Lorsque je lance l'Userform contenu dans le classeur "Mon_classeur.xlsm", je voudrais pouvoir renseigner manuellement le champ "Sélectionner un ID". Sauf que ce champ sert à rechercher directement des données dans le classeur "Donnees.Xlsx" pour les saisir automatiquement dans l'Userform (à savoir "Nom" et "Lieu").
Concrètement:
1) Il faut vérifier que le champ "ID saisie" fasse 4 caractères
2) que "ID saisie" ne soit composé que de chiffre
3) Si les deux conditions précédentes sont vérifiées : remplir automatiquement l'Userform à partir du classeur "Donnees.xslx"
4) Le top serait aussi qu'on puisse effacer le champ "ID saisie" (en cas d'erreur de saisie manuelle) pour ressaisir une nouvelle ID, et reprendre les conditions précédentes.
Bref, je suis un peu perdu. Et j'ai des difficultés avec les conditions en VBA.
N'hésitez pas à me dire si quelque chose n'est pas bien expliqué. Pour plus de clarté, je joins mes deux classeurs.
Option Explicit
Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(entrees_entieres_permises, Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Basiquement la même réponse que Kiki (à peu de choses près) pour obliger l'utilisateur à ne taper que des numéros. Puis, à la sortie de la TextBox1, une vérification de l’existence de l'ID avec la fonction Find, un message et retour si ce n'est pas le cas...
Le fichier :
Robert, encore un code très propre qui à l'air de répondre parfaitement à ce que je voulais. Je vais regarder plus en détail pour m'en imprégner! Beaucoup de choses sont nouvelles pour moi dans ce code.
Si... Merci aussi pour l'autre manière de voir les choses que tu m'as proposé.