XL 2013 Affichage onglets multiPage (Userform)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M.Ben

XLDnaute Junior
Bonjour la communauté XLD,

Je fais appel à votre savoir faire pour m'aider à comprendre et résoudre mon problème concernant l'affichage d'onglets de mon Userform (multiPage) que je rend visible uniquement lors je clique sur un bouton.
J'ai déjà eu fait exactement la même chose sur un autre de mes programmes, mais il ne réagis pas pareil et je comprend pas pourquoi.
Pourtant niveau ligne de code c'est pareil et les paramètres des éléments dans mon Userform sont pareils.

Ce que je comprend pas, lorsque je clique sur l'un des boutons de ma page d'accueil pour aller sur un page précise de mon userform cela fonctionne, cependant le contenue de la page n'apparait pas alors que tout est en visible. pour le rendre visible je suis obligé de cliqué sur l'entête de la page pour que ça apparaisse.

J'ai fait attention au renseignement que j'ai mis dans les paramètre Enable et Visible (=True).

Alors que sur mon premier UserForms (multiPage) mes boutons font apparaitre la page et les éléments que je lui demande sans soucis.

page d'accueil
1681288355596.png

Page après avoir cliqué sur le bouton "Gestion des actionneurs":
1681288433686.png

Page Actionneur (une fois que j'ai cliqué sur l'entête de l'onglet):
1681288475393.png


Code:

Private Sub Userform_Activate()

MultiPage_BP.Value = 0
Me.MultiPage_BP.Pages(0).Visible = True
Me.MultiPage_BP.Pages(1).Visible = False
Me.MultiPage_BP.Pages(2).Visible = False
Me.MultiPage_BP.Pages(3).Visible = False

End Sub
Private Sub Button_acces_actionneur_page_Click()

Me.MultiPage_BP.Value = 1
Me.MultiPage_BP.Page1.Visible = False
Me.MultiPage_BP.Page2.Visible = True
Me.MultiPage_BP.Page3.Visible = False
Me.MultiPage_BP.Page4.Visible = False

End Sub
Private Sub Retour_Accueil_1_Click()

Call Userform_Activate

End Sub
Private Sub Button_acces_capteur_page_Click()

Me.MultiPage_BP.Value = 2
Me.MultiPage_BP.Page1.Visible = False
Me.MultiPage_BP.Page2.Visible = False
Me.MultiPage_BP.Page3.Visible = True
Me.MultiPage_BP.Page4.Visible = False

End Sub
Private Sub Retour_Accueil_2_Click()

Call Userform_Activate

End Sub
Private Sub Button_acces_BdB_page_Click()

Me.MultiPage_BP.Value = 1
Me.MultiPage_BP.Page1.Visible = False
Me.MultiPage_BP.Page2.Visible = False
Me.MultiPage_BP.Page3.Visible = False
Me.MultiPage_BP.Page4.Visible = True

End Sub
Pouvez-vous me dire ce que j'ai manqué s'il vous plait ?
 

Pièces jointes

Solution
Bonjour @M.Ben
En déplaçant simplement la ligne de code Me.MultiPage_BP.Value = 1 cela semble fonctionner
Avant
Code:
Private Sub Button_acces_actionneur_page_Click()
Me.MultiPage_BP.Value = 1
Me.MultiPage_BP.Page1.Visible = False
Me.MultiPage_BP.Page2.Visible = True
Me.MultiPage_BP.Page3.Visible = False
Me.MultiPage_BP.Page4.Visible = False
End Sub

Apres
VB:
Private Sub Button_acces_actionneur_page_Click()
Me.MultiPage_BP.Page1.Visible = False
Me.MultiPage_BP.Page2.Visible = True
Me.MultiPage_BP.Page3.Visible = False
Me.MultiPage_BP.Page4.Visible = False
Me.MultiPage_BP.Value = 1
End Sub
@+ Lolote83
Bonjour @M.Ben
En déplaçant simplement la ligne de code Me.MultiPage_BP.Value = 1 cela semble fonctionner
Avant
Code:
Private Sub Button_acces_actionneur_page_Click()
Me.MultiPage_BP.Value = 1
Me.MultiPage_BP.Page1.Visible = False
Me.MultiPage_BP.Page2.Visible = True
Me.MultiPage_BP.Page3.Visible = False
Me.MultiPage_BP.Page4.Visible = False
End Sub

Apres
VB:
Private Sub Button_acces_actionneur_page_Click()
Me.MultiPage_BP.Page1.Visible = False
Me.MultiPage_BP.Page2.Visible = True
Me.MultiPage_BP.Page3.Visible = False
Me.MultiPage_BP.Page4.Visible = False
Me.MultiPage_BP.Value = 1
End Sub
@+ Lolote83
 
Bonjour @Lolote83,

Je vous remercie, effectivement le simple fait de déplacer la première ligne et la positionner en fin cela semble fonctionner.

Je l'ai répercuté sur mon fichier principal et ça fonctionne.

Du coup, je me demande si je comprend bien le fonctionnement ce cette ligne, je vais approfondir histoire de voir si je trouve une explication.

Mais je peux passer ce post en résolut et continuer mon programme.

Merci à vous,

Bonne journée.

M.Ben
 
Bonjour à tous
et si on faisait encore plus simple et plus propre ?
VB:
Private Sub Button_Exit_Menu_Click()
    Unload Me
End Sub

Private Sub Userform_Activate()
    page_visible 0
End Sub

Private Sub Retour_Accueil_1_Click()
    page_visible 0
End Sub

Private Sub Button_acces_actionneur_page_Click()
    page_visible 1
End Sub

Private Sub Button_acces_capteur_page_Click()
    page_visible 2
End Sub

Private Sub Retour_Accueil_2_Click()
    page_visible 0
End Sub

Private Sub Button_acces_BdB_page_Click()
    page_visible 3
End Sub

Sub page_visible(X)
    Dim I&
    With Me.MultiPage_BP
        For I = 0 To .Pages.Count - 1: .Pages(I).Visible = I = X: Next
        .Value = 1
    End With
End Sub
 
Bonjour à tous.

@patricktoulon , encore une solution mais je ne suis pas sûr de bien comprendre la ligne
For I = 0 To .Pages.Count - 1: .Pages(I).Visible = I = X: Next
Surtout le = I = X
j'ai bien compris que tu passais en paramètre la valeur X (exemple : page_visible 3) ou 3 est le paramètres et qu'ensuite, tu boucles sur les onglets du multipage (For I = 0 To .Pages.Count - 1)
Quand X=3
Quand I=0, alors dans ce cas Pages(0).Visible = 0 = 3, la condition n'est pas OK, donc page non affichée
Quand I=1, alors dans ce cas Pages(1).Visible = 1 = 3, la condition n'est pas OK, donc page non affichée
Quand I=2, alors dans ce cas Pages(2).Visible = 2 = 3, la condition n'est pas OK, donc page non affichée
Quand I=3, alors dans ce cas Pages(0).Visible = 3 = 3la condition est OK, donc page affichée
C'est bien ça ????
Merci de ton retour

@+ Lolote83
 
Bonsoir a tous dure journée aujourd'hui je rentre tard

le "&" est la réduction de "As Long"
&= As long
%= As integer
$ = As string

et oui @Lolote83 c'est bien ça I=x renvoie un boolean
ce qu'il faut saisir dans mon intervention c'est en effet ce jeu de résultat boolean mais aussi le fait que l'on peut réduire et assainir un code répétitif en généralisant et utilisant une une sub ou fonction comune et argumentées sans partir dans une classe
d'autre part comme vous l'avez vu je boucle sur toute les pages au lieu de coder le visible en dur pour chaque pages
conclusion
demain tu ajoute des pages a ton projet le code ne change pas tu ajoute simplement un bouton et l'event avec l'appel

c'est gagnant de tout les cotés
😉
c'est carré et propre
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
280
Réponses
3
Affichages
251
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
94
Retour