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 SubA+
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 Subpetit 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+
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 !