UserForm et Frame

Bonjour à tous,

Je fais actuellemet face à un petit problème sur la gestion d'un UserForm.

J'ai un fichier Excel où se trouvent diverses feuilles de résultats : feuilles pour des résultats par jour, feuilles pour des résultats par semaine et feuilles pour des résultats par mois (sous ce type de nom : "Res_Stations_Day" ou "Res_Stocks_Month").

Mon but est de créer un UserForm avec lequel l'utilisateur sélectionne les feuilles à afficher en cochant des CheckBox qui se trouvent dans des Frame dans l'UserForm.

Ainsi l'UserForm comporte trois Frame (Frame_Operators_Results, Frame_Stocks_Results, Frame_Stations_Results), chacune comportant trois CheckBox (CheckBox_Operators_Days, CheckBox_Operators_Week, ......, CheckBox_Stations_Week, CheckBox_Stations_Month).

Je pensais utiliser une boucle For each, cependant je n'arrive pas à appeler les Frame et les CheckBox que j'utilise (le but est de ne pas devoir appeler ces éléments un par un)...

Du coups, je ne vois pas comment appeler les CheckBox et les Frame dans un code.

Toute aide sera la bienvenue ;) !

Merci d'avance,

Groll

Bonjour,

Utilise le contrôle Tag de tes CheckBox comme ça pas besoin de savoir ou ils sont...

Private Sub UserForm_Initialize()
Dim o
For Each o In Me.Controls
If o.Tag = 1 Then o.Value = True
Next
End Sub

A+

Bonjour Galopin01,

Merci pour la réponse.

J'ai essayé avec le contrôle Tag, mais cela ne marche pas (je ne vois pas à quoi ça correspond). La boucle ne reconnait pas la commande apparemment.

Mon code est le suivant :

Private Sub CommandButton_OK_Click()Dim ctrlDim sht As WorksheetDim display_chosen As StringDim title As StringDim sht_name As StringFor Each ctrl In UserForm_Choice_Results.Controls If ctrl.Tag = True Then display_chosen = Right(ctrl.Name, Len(ctrl.Name) - 3) 'Suppress the part "By " on the beginning title = Mid(ctrl.Parent.Name, Len(ctrl.Parent.Name) - 6, Len(ctrl.Parent.Name) - 6 - 7) ' Supress the part "Frame_" on the beginning and "Results" on the ending sht_name = "Res_" + title + display_chosen 'One obtained the following format : "Res_Stocks_Week" sht(sht_name).Visible = True End IfNext ctrlUnload MeEnd Sub

Private Sub CommandButton_OK_Click()

Dim ctrl
Dim sht As Worksheet
Dim display_chosen As String
Dim title As String
Dim sht_name As String

For Each ctrl In UserForm_Choice_Results.Controls

    If ctrl.Tag = True Then

        display_chosen = Right(ctrl.Name, Len(ctrl.Name) - 3)           'Suppress the part "By " on the beginning
        title = Mid(ctrl.Parent.Name, Len(ctrl.Parent.Name) - 6, Len(ctrl.Parent.Name) - 6 - 7)         ' Supress the part "Frame_" on the beginning and "Results" on the ending
        sht_name = "Res_" + title + display_chosen          'One obtained the following format : "Res_Stocks_Week"

        sht(sht_name).Visible = True

    End If

Next ctrl

Unload Me

End Sub

petit problème d'affichage, je reposte ici.

bonsoir,

Ce code ne m'inspire rien qui vaille : Sans doute beaucoup de complication pour pas grand résultat !

Une fois pour toute tiens toi le pour dit : Rien ne vaut le classeur KIVABIEN avec !

En pièce jointe un autre exemple plus élémentaire.

A+

28chkbox.xlsm (23.78 Ko)

Bonsoir,

Merci pour la réponse, c'est exactement ce dont j'avais besoin ! Ne reste plus qu'à l'adapter à mon Form.

Pour le fichier excel, j'ai essayé de l'uploader, mais c'était impossible malheureusement (même en le compressan...)

Merci encore pour l'aide !

Rechercher des sujets similaires à "userform frame"