Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Menu de naviguation avec VBA

  • Initiateur de la discussion Initiateur de la discussion A2H
  • Date de début Date de début

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 !

A2H

XLDnaute Nouveau
Bonjour à tous
Je voudrais créer un Menu dans un userform pour naviguer entre plusieurs classeurs avec VBA, dont chacun contient son propre Userform.
Je voudrais bien faire des boutons d'aller retour au menu
Merci
 
Bonjour le forum,

Pour ne pas finir en eau de boudin téléchargez les fichiers joints dans un même répertoire.

Le menu se trouve dans une ComboBox.

Bonne journée.
 

Pièces jointes

Réactions: A2H
Bonjour Job je suis vraiment désolée, j'ai déjà essayer avec les codes que vous m'avez donné mais ça ne marche pas c'est pour ca que j'ai essayer de faire une autre discussion car j'ai cru que j'ai mal présenté ma question la première fois.
Ci_joint deux fichier et mon but de faire un "userform" contenant un menu de boutons qui me permet d'aller vers autre classeur.
Désolée autre fois et Merci pour l'aide
 

Pièces jointes

Bonjour A2H,
Bonjour Job je suis vraiment désolée, j'ai déjà essayer avec les codes que vous m'avez donné mais ça ne marche pas
Mes codes fonctionnent très bien, il suffit de savoir les adapter !!!

Vos fichiers en retour, les codes sont bien sûr ceux de l'autre fil.

A+
 

Pièces jointes

Réactions: A2H
Bonjour.
Avec cette hiérarchie d'un UFmMenu maître plus besoin que les UserForm soient affichés non modal.
Dans un module standard de Filtre.xlsm :
VB:
Sub AfficherUFm()
   USFFiltre.Show
   End Sub
Dans l'USFFiltre :
VB:
Private Sub BTMenu_Click()
Me.Hide ' ou bien Unload Me, ça dépend …
End Sub
Dans l'USFMenu :
VB:
Private Sub Filtre_Click()
   Me.Hide
   Run "'C:\Users\Luck\AppData\Local\Temp\Filtre.xlsm'!AfficherUFm"
   Me.Show
   End Sub
Adaptez naturellement le chemin du Filtre.xlsm
et supprimez sa Private Sub Workbook_Open().
Celle du Menu.xlsm, à ouvrir en premier, peut être gardée.
 
Dernière édition:
Réactions: A2H
Oui, c'était le sens de l'autre discussion: se balader d'un classeur à l'autre sans ordre prédéfini.
Là c'est différent: c'est toujours d'un menu père vers un classeur fils, puis retour au menu.
On peut alors éviter le non modal autorisant l'accès aux cellules, ce qui peut représenter un inconvénient.
 
Bien marché Merci 😛
 
Re,
Là c'est différent: c'est toujours d'un menu père vers un classeur fils, puis retour au menu.
On peut alors éviter le non modal autorisant l'accès aux cellules, ce qui peut représenter un inconvénient.
On évite facilement le non modal en utilisant Me.Hide.

Dans les fichiers joints toujours aucune hiérarchie, les codes sont les mêmes.

Notez que l'enchaînement est plus "fluide" qu'en non modal.

A+
 

Pièces jointes

Sans hiérarchie en modal ce n'est pas tout à fait pareil: je crois que les Show imbriqués non terminés vont s'ajouter dans la pile, parce que je pense que le Me.Hide ne peut terminer le Show qui a affiché l'UserForm qu'une fois la procédure qui le contient terminée.
Mais bon… même si j'ai raison, ça peut marcher quand même. Il faudrait sans doute des millier d'années pour arriver à saturer la pile par ce biais ! Mais ce n'est techniquement pas correct.
 
Bonsoir Bernard,

Oui Me.Hide crée une pile et ça n'a aucune importance.

Cette instruction évite d'avoir à recharger l'UserForm, c'est un avantage.

Maintenant si tu n'aimes pas tu peux toujours la remplacer par Unload Me, aucun problème.

A+
 
Non, Me.Hide ne crée pas de pile. La pile existe toujours. C'est un fondement de base du fonctionnement de tous les programmes et procédures. C'est le support des paramètres, variables locales et adresse de retour dans le code de la procédure appelante.

Je parle en somme de procédures qui n'arrivent pas à se terminer, alors qu'elle n'ont plus rien à faire, à cause d'incessants appels récursifs mutuels.
 
Dernière édition:
Bonjour Job75.
Oui, je me doutais vaguement aussi que ça ne dégagerais pas la pile non plus avec des Unload Me
Le problème c'est plutôt que les procédures engagent indirectement des UFm.Show modaux et mutuels avant de pouvoir se terminer.
J'ai commencé un truc avec un seul chef d'orchestre dans un module de classe du classeur de menu. J'ai mis les procédures supposées externes dans le même classeur, mais elles peuvent être mises dans d'autres, il suffirait de spécifier leurs noms à la place de "Menu" dans les BMs.Add
 

Pièces jointes

- 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 affichage userform
Réponses
4
Affichages
374
Réponses
40
Affichages
1 K
  • Question Question
Autres Code VBA
Réponses
11
Affichages
268
Réponses
32
Affichages
1 K
Réponses
8
Affichages
594
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…