VBA - Ouvir une Page d'une MultiPage grace a un OptionButton [Résolu]

Signaler
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
-
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
-
Bonjour a tous,

Voici mon probleme:

J'ai cree 2 USF.

Sur la UserForm1 j'ai :
Une MultiPage1 avec 2 Pages (Page1 et Page2)

Sur la UserForm2 j'ai:
un Frame avec 2 OptionButton.

Ce que je souhaite faire: Lorsque je selectionne l'OptionButton1, la Page1 de ma UserForm1 s'ouvre automatiquement. Lorsque je selectionne l'OptionButton2, la Page2 de ma UserForm1 s'ouvre.

Pour le moment j'ai reussi a ouvir la UserForme1 quand je coche un des boutons:

Private Sub OptionButton1_Click()
If OptionButton1 = True Then
UserForm1.Show
End If
End Sub

Mais si je veux rajouter le code pour dire que je veux que se soit sur la Page1 ou la Page2 que se fasse l'ouverture en fonction du Button selectionne, la ca coince:
Private Sub OptionButton1_Click()
If OptionButton1 = True Then
UserForm1.MultiPage1.Page1.Show
End If
End Sub

Ca me mets error 438 et le debug sur ma ligne UserForm1.MultiPage1.Page1.Show

Quelle est la solution ?

Merci beaucoup de votre aide

13 réponses

Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Sinon tu peux essayer de déplaçer Userform1.show (avec ou sans 0) en fin de procédure soit

Private Sub OptionButton1_Click()
If OptionButton1 = True Then
UserForm1.MultiPage1.Value = 0
End If
UserForm1.Show
End Sub

Idem dans OptionButton1_Click()

Chez moi ça marche mieux

Bon week end
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Bonjour

Essaies ceci:

Private Sub OptionButton1_Click()
If OptionButton1 = True Then
UserForm1.MultiPage1.Value = 0 'Pour afficher la page 1
UserForm1.MultiPage1.Value = 1 'Pour afficher la page 2
End If
End Sub

Cordialement.

Gérard
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
Bonjour Gerard (encore toi ),
ce code ne fait rien du tout. J'ai aussi tente en mettant :

Private Sub OptionButton1_Click()
If OptionButton1 = True Then
UserForm1.MultiPage1.Value = 0
End If
End Sub

Private Sub OptionButton2_Click()
If OptionButton2 = True Then
UserForm1.MultiPage1.Value = 1
End If
End Sub

Pour le moment j'ai contourne le probleme en creant 2 USF et chaque OptionButton ouvre un USF grace a ce code:

Private Sub OptionButton1_Click()
UserForm1.Show
End Sub

et la meme chose pour ouvrir l'autre USF avec le Button2 mais ce n'est pas ce que je souhaite.

Merci de ton aide
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Bonjour Nat

Et oui encore moi

En effet, mon message n'était pas très clair mais tu as très bien décodé ce que je voulais te dire.

Par contre, pour afficher l'userform1, il faut ajouter la commande:
Userform1.Show 0.

Ce qui nous donne:

Private Sub OptionButton1_Click()
Userform1.Show 0
If OptionButton1 = True Then
UserForm1.MultiPage1.Value = 0
End If
End Sub

Private Sub OptionButton2_Click()
Userform1.Show 0
If OptionButton2 = True Then
UserForm1.MultiPage1.Value = 1
End If
End Sub

Et ajouter la commande UserForm2.Show 0 pour afficher l'userform2
soit dans Workbook_Open() si cet affichage intervient lors de l'ouverture du classeur.

Private Sub Workbook_Open()
UserForm2.Show 0
End Sub

Attention de ne pas oublier le 0 après Show, sinon il faudra fermer userform1 pour pouvoir intervenir sur userform2.

Bon courage.

Gérard
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
Re bonjour,

je viens de tester le code que tu m'a envoye. Donc il y a quelques problemes.

* Tout d'abord avec le 0 ca me mets un debug sur la ligne le contenant (erreur 401).

* Ensuite j'ai tester en enlevant le 0, donc la mes feuilles s'ouvrent mais petit probleme:
Quand je clique sur le OptionButton1, pas de probleme, il m'ouvre la USF1 sur la Page1. Mais quand je clique sur OptionButton2, il m'ouvre aussi sur la page1 (etonnant car la valeur est bien egale a 1). Le plus suprenant, c'est quand je veux recocher l'OptionButton1 (sans avoir fermer l'application avant), il m'ouvre la Page2 de la USF1 et quand je veux recocher l'OptionButton2 (apres avoir cocher une seconde fois le Button1) il m'ouvre aussi la page2.
Je pense donc soulever 2 problemes:
- l'OptionButton2 suit l'OptionButton1
- l'OptionButton1 s'incremante au fur et a mesure.

Voila, j'espere que tu vas me comprendre car c'est assez difficil a expliquer !!!

Bonne journee (je ne pourrais tester tes suggestions que ce matin ou a partir de lundi donc desole si je ne te repond pas).


Merci
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Bonjour

Tout d'abord, une petite confirmation: on est bien sur une appli Excel?

Comment ouvres-tu ton userform2?
S'ouvre-t-elle automatiquement ou suite à une intervention de ta part?

Je te suggérais de placer l'instruction userform2.show 0 dans workbook_open si USF2 doit s'ouvrir en même temps que ton classeur.

En effet: il faut l'ouvrir en non modal c'est à dire par l'instruction userform2.show 0, sinon tu auras effectivement l'erreur 401.

A+
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
Oui on est bien sur sur application Excel (Excel 2000 pour plus de precision).
Et oui j'ouvre mon application a l'ouverture de mon classeur.

Mais mon erreur 401 survient aussi avec c'est deux autres phrases de code:Userform1.Show 0 pour chacun des boutons.

Merci,

A+
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Ok pour UserForm1.show 0.

Mais ton USF2 (celle où se trouvent tes OptionButton) s'ouvre en modal.
Dans ton code tu dois avoir l'instruction userform2.show quelque part.
Là aussi, il faut rajouter le 0. ==> UserForm2.show 0 pour qu'elle s'ouvre en non modal.

En effet, on ne peut pas commander une fenêtre non modale à partir d'une fenêtre modale.

Actuellement, ton USF2 modale commande ton USF1 non modale d'où ton erreur 401.

A bientôt.

Bon week-end à toi.

Gérard
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
Parfait encore un probleme de resolu. Il fallait juste que je rajoute un 0 dans mon code pour appeler la USF (dans mon module1). et j'ai du enlever les 0 dans le code des Optionbutton (je ne sais pas pourquoi)

Donc pour resumer pour les futurs internautes:

- Dans ma USF2:

Private Sub OptionButton1_Click()
Userform1.Show
If OptionButton1 = True Then
UserForm1.MultiPage1.Value = 0
End If
End Sub

Private Sub OptionButton2_Click()
Userform1.Show
If OptionButton2 = True Then
UserForm1.MultiPage1.Value = 1
End If
End Sub

- Dans ThisWorkbook:

Private Sub Workbook_Open()
UserForm2.Show 0
End Sub

- Dans le Module :

Sub NomApplication()
UserForm2.Show 0
End Sub

Merci Beaucoup Gerard de ton aide (encore une fois)

A bientot sur le Forum (car je pense que j'aurais encore d'autres questions vu que je debute ).
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Bizarre, bizarre,

Si j'utilise ton code, je me retrouve avec le décalage que tu me signalais donc

OptionButton1 ouvre la page2 dans multipage1
et
OptionButton2 ouvre la page1 dans multipage1

De plus le fait de supprimer le 0 dans le code USF2 t'oblige à fermer USF1 à chaque fois pour accéder à USF2 mais sans doute n'est-ce pas un problème pour ton appli.

En tout cas, l'essentiel, c'est que tout fonctionne bien chez toi.

A+
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
Heu oui pardon moi aussi j'ai eu une inversion dans les Pages du coup j'ai bidouiller le truc en mettant 1 pour l'OptionButton1 et 0 pour l'Optionbutton2 (bizar bizar tout ca et pas tres classe!!!).

Et le fait de ne pas fermer l'appli ne me derange pas car j'ai deja creer un bouton Fermer.

Merci a toi.

bon WE

A+
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011

Je voulais dire

Idem dans OptionButton2_Click()
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
OUI

Ca marche carrement bien et au moins il n'y a pas de bidouillage de Page . Le Bouton 1 ouvre bien la Page 1 et idem pour le bouton 2.

Trop trop contente !

Merci beaucoup ! Tu m'enleve une grosse epine du pied

Bon et bien on va enfin pourvoir dire que cette histoire est resolue.

Bon WE a toi et encore merci