Bonjour,
je vous expose mon problème.
Dans mon application j'ai X userform (nom normalisé de type usf1, usf2, etc...) qui peuvent contenir, chacun, de 1 à n TextBox avec des noms formalisés (de type txtC1P1 ou txtC2P1 - C correspondant à l'usf et P à l'indice du textbox dans l'usf) ainsi que 3 boutons.
Chaque bouton appelle une procédure qui va effectuer des actions sur l'un des textbox sans savoir lequel. Je suis obligé de boucler sur les contrôles de l'userform et de détecter sur lequel faire les actions.
Si je mets la procédure dans chaque userform, aucun soucis cela fonctionne mais j'ai du code dupliquée. Si je mets la procédure dans un module (avec le nom de l'usf en paramètre), j'ai une erreur 91 lors du parcours des contrôles sur l'userform qui lance la procédure, à priori car il est ouvert.
La question est de savoir comment, dans un module, boucler sur les contrôles d'un userform qui est ouvert ?
Voici le code utilisé qui, je précise, fonctionne très bien sur des userform non chargé:
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 For Each VBCmp In ThisWorkbook.VBProject.VBComponents If VBCmp.Type = vbext_ct_MSForm Then If VBCmp.Name = nameUsf Then For Each ctrl In VBCmp.Designer.Controls If TypeName(ctrl) = "TextBox" Then If Left(ctrl.Name, 5) = "txtCh" Then texte = ctrl.SelText numTxtBox = numTxtBox + 1 If texte <> "" Then texteTotal = ctrl.Text position = ctrl.SelStart Exit For End If End If End If Next ctrl End If End If Next VBCmp
Partager