Boucle Frame dans userform résolu !

VLMX

XLDnaute Nouveau
Bien le bonjour à tous, bonne et heureuse année au passage !

Je fais appel à vos connaissances, est ce que quelqu'un à t'il réussi à résoudre le problème de la boucle sur des "Frame" ?
Je m'explique j'ai un userform avec plsieurs boutons d'options ( 26 Frames avec 9 boutons d'options par frame).
En ce qui concerne la boucle sur une Frame pas de soucis :

For Each C In Me.Frame1.Controls
If C.Value = True Then lign = Right(Left(C.Name, 7), 1)
Next C
MsgBox lign

Mais je bloque pour remplacer le "Frame1" ici en rouge par quelque chose qui pourrait boucler ..

Comme par exemple

Dim i as integer
Dim Frame as ... Controls (maybe ..)
For i = 1 to 26

Frame.Name = "Frame" & i

Mais cela ne fonctionne pas ...
Merci d'avance !
 

youky(BJ)

XLDnaute Barbatruc
Bonjour VLMX,
Essayer ceci, Excel nomme direct les controls avec un chiffre qui s'incrémente
For k = 1 To 9 'ou 26*9
if Me.Controls("OptionButton" & k).Value = then '........
Next

Bruno
 

Dranreb

XLDnaute Barbatruc
Bonsoir
Si les Frame sont nommés de Frame1 à Frame26 :
VB:
Dim Frm As MSForms.Frame, OBn As MSForms.OptionButton, N as Long
For N = 1 To 26
    Set Frm = Me("Frame" & N)
    For Each OBn In Frm.Controls
    …
        Next OBn, N
 

VLMX

XLDnaute Nouveau
Bonjour Bruno,

j'ai pris soin de renommer chacun de mes boutons d'options (CalqueL_K) avec L de 1à26 et K de 1à9

Je viens d'essayer ceci pour tester :

Dim x, k, l As Integer
x = 45
For l = 1 To 26
For k = 1 To 9 'ou 26*9
If Me.Controls("Calque" & l & "_" & k).Value = True Then
Feuil14.Cells(x, 2).Value = x
End If
x = x + 1
Next k
Next l

mais j'ai un message d'erreur : "Objet spécifié introuvable." sur la ligne en rouge.

Valentin
 

VLMX

XLDnaute Nouveau
Bonsoir Dranreb,

Effectivement ca fonctionne !!
j'ai quelques bugs avec mon résultats mais celui ci boucle bien sur les Frames et les boutons options !
Merci beaucoup, par contre j'ai l'impression qu'il me renvoie plusieurs fois les même valeurs

Dim Frm As MSForms.Frame, OBn As MSForms.OptionButton, N As Long
For N = 1 To 26
Set Frm = Me("Frame" & N)
For Each OBn In Frm.Controls
If OBn.Value = True Then lign = OBn.Name

MsgBox lign
Next OBn, N
 

VLMX

XLDnaute Nouveau
Et non finalement ca marche parfaitement !

J'avais juste un bug ou excel ne me reconnaissais pas mon bloc "if" du coups il ne m’autorisait pas a mettre le "end if " et ça faisait surement n'importe quoi ...

Dim Frm As MSForms.Frame, OBn As MSForms.OptionButton, N As Long
For N = 1 To 26
Set Frm = Me("Frame" & N)
For Each OBn In Frm.Controls
If OBn.Value = True Then
lign = OBn.Name
MsgBox lign
End If
Next OBn, N

Merci beaucoup !
 

Discussions similaires


Haut Bas