Bonjour,

En listant les contrôles de mon Userform de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Dim i As Integer
For i = 0 To ActiveControl.Controls.Count - 1
    Debug.Print i, ActiveControl.Controls(i).Name
Next i
Je me suis rendu compte que l'ordre était totalement aléatoire en apparence. Il me semble que l'ordre (l'indice) des contrôles est en fait leur ordre de création. Cependant, cela ne me convient pas et j'aimerais donc pouvoir modifier ces indices mais je ne parviens pas à trouver comment faire

Pour des raisons de lisibilité, mes contrôles sont nommés ainsi, chaque chekbox étant en face de sa textbox :
  • CheckBoxNom
  • TextBoxNom
  • CheckBoxPrénom
  • TextBoxPrénom
  • ...


Je voudrais que le premier indice soit celui de CheckBoxNom, le deuxième celui de TextBoxNom etc.

Mon but est de créer une fonction générique qui active le champ à renseigner par clic sur la checkbox quelque soit son type (j'arrive à le faire en utilisant .Replace et TypeName() entre checkbox et textbox et je pourrais utiliser un Select Case sur l'ordre de création des contrôles mais ça fait un peu bricolage)

Du coup j'en fais appel à vos conseils. Si j'ai raté de la doc je suis preneur aussi