ACtiver/désactiver ShowModal dans une procédure

  • Initiateur de la discussion Vincent
  • Date de début
V

Vincent

Guest
Bonjours à tous les Saint-Bernard d'Excel

Dans un Userform contenant un multipage, je souhaite avoir un Showmodal=true pour une page et un Showmodal=false pour l'autre page.
Sauriez-vous me donner le code pour passer d'une valeur a l'autre lors du changement de page.
 
L

LaurentTBT

Guest
Bonjour Vincent, bonjour à tous,

Malheureusement, la propriété Showmodal n'est qu'en lecture seule. On ne peux pas la modifier en cours de macro.
Ce que tu peux essayer, mais je ne garantis pas que cela fonctionne, c'est, lors d'un changement de page de ton multipage (donc dans son événement Change), tu effaces ton userform (avec UserForm1.Hide, pour garder les infos stockées dans ton userform, et surtout pas avec Unload UserForm1 qui au contraire, te ferait perdre toutes les données déjà saisies), après avoir mis dans une variable quelle page a été sélectionnée.

Ensuite, tu fais un test sur la variable qui contient le numéro de page, et selon le résultat, tu réaffiches le UserForm en mode modal ou non:
UserForm1.Show ou UserForm1.show 0

Peut-être que cela fonctionnera, mais je ne sais pas si la propriété showmodal est définitivement choisie lors de l'initialisation du userForm, auquel cas ma solution ne fonctionnerait pas.

Bonne chance.
 
V

Vincent

Guest
Salut Laurent, bonjours aux Saint-Bernard de la programmation VB,

voilà en gros la procedure selon les indication ci-dessus :


Private Sub MultiPage1_Change()

xx1 = userform1.multiPage1.Value 'si xx1=0 : page 1, si xx1=1 : page2
userform1.Hide

If xx1 = 0 Then
userform1.Show 0
Application.StatusBar = "showmodal false"
End If

If xx1 = 1 Then
userform1.Show
Application.StatusBar = "showmodal True"
End If
End Sub

Je n'arrive pas à verifier la faisabilité de la manoeuvre car je bloque sur la ligne où xx1 prend la valeur de la page activée : Erreur de type '91'
Kesako (variable d'objet non définie)

@+
Vincent
 
L

LaurentTBT

Guest
Re bonjour,

Vincent, je viens de regarderr vite fait au boulot, mais ici, je ne peut pas afficher d'USF non modal (version excel)

Ceci dit, j'ai essayé ceci:

Private Sub MultiPage1_Change()
din xx1 as byte

xx1 = Me.multiPage1.Value 'si xx1=0 : page 1, si xx1=1 : page2

If xx1 = 0 Then
MsgBox "Vous venez de sélectionner la page 1"
else
MsgBox "Vous venez de sélectionner la page 2"

End If

Et cela fonctionne sans problème. Peut-être fallait-il que tu déclares ta variable? Sinon, pour la suite, pour voir si l'affichage modal ou non sera pris en compte, je ne peux malheureusement pas essayer, et j'espère ne pas t'aiguiller sur une fausse piste.

Bonne chance, tiens-nous au courant.

Laurent.
 
V

Vincent

Guest
Nickel Chrome.
Merci Laurent, cela fonctionne parfaitement sur excel 2000 et+.

Promis, la prochaine fois je declarerais mes variables correctement.
A bientôt sur le forum (du coté réponse de préférence)

Vincent J
 

Discussions similaires

Réponses
20
Affichages
862

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz