Problème parcours de contrôles dans UserForm

ailete

XLDnaute Nouveau
Bonjour,

je réalise un formulaire en VBA qui me génère un rapport sur Word.
Dans ce formulaire, j'ai plusieurs Frames, découpées en parties et sous-parties (ex : 1, 1.1, 1.1.2 etc...)

Je fais un parcours de ces contrôles grâce au For each ... If TypeName(control)="frame" etc...
Les propriétés TabIndex des différents contrôles sont bien paramétrées (frm1_1 : tabIndex = 0, frm1_2 : tabIndex = 1...) Cependant, quand la macro parcours les contrôle dans le For Each, certaines Frame sont "sautées" (ex: il parcourt frm1_2_2, 1_2_3, 1_2_4 et ensuite seulement 1_2_1)

Je ne sais pas comment cela se fait qu'il réagisse comme ça.

J'attends vos éclaircissements, en espérant avoir été un petit peu clair quand même :)

Merci d'avance!
 

ailete

XLDnaute Nouveau
Re : Problème parcours de contrôles dans UserForm

Merci pour ta réponse.

Je l'ai fait, tout est dans l'ordre, mais il continue de parcourir bizarrement.
Même quand je mets tout dans le désordre, il parcourt exactement de la même façon...
 

david84

XLDnaute Barbatruc
Re : Problème parcours de contrôles dans UserForm

Re,
et en remplaçant ta boucle for each par for i = 1 to TonNombreDeControles.....Next i ?
Sinon en exécutant ta macro pas à pas, tu pourrais peut-être y voir plus clair quant à son comportement...
A+
 

ailete

XLDnaute Nouveau
Re : Problème parcours de contrôles dans UserForm

Rien n'y fait, même avec un for "normal".
J'ai exécuté pas à pas, je n'y voit rien de spécial, mis à part que le focus se fait sur les contrôles sans suivre l'ordre de tabulation...

Je n'y comprends rien, y a aucune logique la dedans.
 

ailete

XLDnaute Nouveau
Re : Problème parcours de contrôles dans UserForm

En fait il suit l'ordre dans lequel les contrôles ont été créés, et non-pas l'ordre de tabulation.
Mais j'ai tellement de frames, je ne peux pas me retaper tout le boulot, vous ne savez pas s'il y a moyen de le faire suivre l'ordre de tabulation plutot que l'ordre de création?
 

Pierrot93

XLDnaute Barbatruc
Re : Problème parcours de contrôles dans UserForm

Bonjour Alete, David:)

peut être avec une approche comme ci-dessous :
Code:
Option Explicit
Private Sub UserForm_Click()
Dim c As Control, t() As Variant, i As Byte
For Each c In Me.Controls
    If TypeName(c) = "Frame" Then i = i + 1
Next c
ReDim t(0 To i - 1)
For Each c In Me.Controls
    If TypeName(c) = "Frame" Then t(c.TabIndex) = c.Name
Next c
For i = 0 To UBound(t)
    MsgBox t(i)
Next i
End Sub

bonne journée
@+
 

Statistiques des forums

Discussions
312 490
Messages
2 088 882
Membres
103 981
dernier inscrit
vinsalcatraz