XL 2013 Affichage onglets multiPage (Userform)

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

  • UserForm multipage.xlsm
    650.9 KB · Affichages: 8
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

Lolote83

XLDnaute Barbatruc
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
 

M.Ben

XLDnaute Junior
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
 

patricktoulon

XLDnaute Barbatruc
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
 

Lolote83

XLDnaute Barbatruc
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
 

patricktoulon

XLDnaute Barbatruc
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:

Discussions similaires

Réponses
3
Affichages
211

Statistiques des forums

Discussions
312 106
Messages
2 085 352
Membres
102 871
dernier inscrit
Maïmanko