Bonjour,
J'ai un userform avec plein de Textbox, un formulaire classique avec 14 Texbox dont la saisie est obligatoire, d'autres optionel.
L'indexTab de chaque TextBox à été réglé de façon à parcourir le formulaire aisément
Donc je boucle avec un For each control sur la liste UserForm.controls et stop dès qu'un champ est vide pour mettre un HighLight sur la Textbox vide.
Le soucis c'est que je ne sais pas quel paramètre est pris en compte pour le classement de ces Textbox dans cette liste de controls, en tout cas ce n'est pas l'indexTab.
Exemple si mon formulaire est vide et que je valide il met en HighLight le second champ vide puis, le 5 ème....le premier 'Nom' tabIndex 2 lui sera le dernier de la liste.
Je me demandais s'il n'y avait pas moyen de mettre un 'sort', ou un 'order' dans la boucle ou la liste.
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
16
17
18
19
20
21 Public Sub Validate_Field() Dim Ctrl As Control For Each Ctrl In UF.Controls ' UF étant le formulaire en question If TypeOf Ctrl Is MSForms.TextBox And Left(Ctrl.Name, 4) <> "opt_" Then If Ctrl.Text = "" Then MsgBox "Nom : " & Ctrl.Name & " Index :" & Ctrl.TabIndex With Ctrl .BackColor = vbHighlight '.SetFocus End With Exit Sub End If End If Next Ctrl End Sub
En attendant j'ai créé un tableau avec mes TextBox dedans et je boucle sur le tableau.....
Merci
Bon dimanche
Partager