1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Boucle Frame dans userform résolu !

Discussion dans 'Forum Excel' démarrée par VLMX, 9 Janvier 2019.

  1. VLMX

    VLMX XLDnaute Nouveau

    Inscrit depuis le :
    30 Novembre 2017
    Messages :
    12
    "J'aime" reçus :
    0
    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 !
     
  2. Chargement...

    Discussions similaires - Boucle Frame userform Forum Date
    Boucle avec optionbutton et frame Forum Excel 29 Mai 2012
    Remplacer Les Boucles ListBox ComboBox Couleur Frames Forum Excel 16 Juin 2009
    XL 2010 VBA Macro Chemin + boucle +récupère NomFichier Forum Excel Aujourd'hui à 15:34
    boucle sur des checkbox Forum Excel 7 Janvier 2019
    XL 2010 Imprimer en PDF plusieurs feuilles en boucle Forum Excel 5 Janvier 2019

  3. youky(BJ)

    youky(BJ) XLDnaute Barbatruc

    Inscrit depuis le :
    4 Février 2009
    Messages :
    2567
    "J'aime" reçus :
    129
    Sexe :
    Masculin
    Habite à:
    69 CALUIRE
    Utilise:
    Excel 2016 (PC)
    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
     
  4. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14752
    "J'aime" reçus :
    906
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Bonsoir
    Si les Frame sont nommés de Frame1 à Frame26 :
    Code (Visual Basic):
    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
     
  5. VLMX

    VLMX XLDnaute Nouveau

    Inscrit depuis le :
    30 Novembre 2017
    Messages :
    12
    "J'aime" reçus :
    0
    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
     
  6. VLMX

    VLMX XLDnaute Nouveau

    Inscrit depuis le :
    30 Novembre 2017
    Messages :
    12
    "J'aime" reçus :
    0
    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
     
  7. VLMX

    VLMX XLDnaute Nouveau

    Inscrit depuis le :
    30 Novembre 2017
    Messages :
    12
    "J'aime" reçus :
    0
    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 !
     

Partager cette page