Bonjour,
alors ça fait un petit moment que je planche sur ce problème. En fait, j'ai un certains nombre d'userform dans lesquels les utilisateurs rentrent des infos soit dans des textbox ou des listbox, le tout ayant des noms variables.
J'aimerais donc pouvoir vérifier que tout les contrôles d'un userform sont remplis avant de passer au suivant et si un n'est pas rempli, l'indiquer à l'utilisateur
Donc je suis parti sur la fonction suivante que j'appelle en cliquant sur le bouton pour passer au userform suivant. Sur le bouton, j'ai un test de retour. Si la fonction renvoie 1, j'empêche de passer à la page suivante sinon ça passe.
Le problème : je n'arrive pas à obtenir la valeur des contrôles. La commande trouve le UserForm, trouve chaque contrôle, je peux avoir toutes les propriétés de chacun d'entre eux mais si je rentre une valeur et que je lance le test après, cela me restitue une valeur vide "". En gros il me restitue les propriétés de base du contrôle, la valeur étant vide à la base, il me la donne donc vide quand je l'appelle...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Function Vérif_UserForm(UF As String) As Integer '##### Routine vérifiant que chaque control d'un UserForm est rempli ##### Dim Ctrl As Control Dim NomUF As String NomUF = UF Vérif_UserForm = 0 For Each Ctrl In VBA.UserForms.Add(NomUF).Controls If VBA.UserForms.Add(NomUF).Controls(Ctrl.Name).Value = "" Then MsgBox ("Onglet " & VBA.UserForms.Add(NomUF).Controls(Ctrl.Name).Name & " non renseigné.") Vérif_UserForm = 1 End If Next Ctrl End Function
J'ai essayé VBA.UserForms(NomUF).Controls(Ctrl.Name).Value à la place mais ça ne marche pas mieux.
Donc comment obtenir la valeur d'un contrôle aléatoire dans un userform aléatoire?
Merci de votre attention.
EDIT : en pièce joint un mini excel. Le but étant d'arriver à entrer une valeur dans le TextBox et que le clique sur le bouton ne déclenche pas le message "L'ongle TextBox est non renseigné".
Partager