Disparition Usf après ouverture d'un nouveau classeur

Bonjour,

Je viens de transférer une application écrite en VBA -EXCEL 2010 vers VBA -EXCEL 2021. Dans cette application, les commandes principales sont rassemblées sur une feuille "Menu" du classeur principal, à partir duquel ont été développées les macros.

Certaines de ces macros affichent une boite de dialogue qui, à l'initialisation, ouvrent un deuxième classeur qui permet d'enregistrer un formulaire. La USF est donc en "Non Modal" afin de permettre la saisie des données tout en la laissant affichée. Or dans la version 2021, après que le formulaire ait été ouvert, il disparait pour laisser la place à nouveau au classeur "menu" avec la USF affichée. Lorsque je clique sur l'icone du formulaire dans la barre de tâches, celui-ci réapparaît mais sans la USF. Il semble donc que la USF soit liée au classeur "menu" ce qui n'était pas le cas dans la version 2010. J'ai essayé vainement ".activate" sur le classeur formulaire dans la macro pour le maintenir affiché et ".Show" sur la usf sans succès. J'ai également changé de Non Modal à Modal sans succès.

Pour que celà fonctionne j'ai du modifier le séquencement du processus d'ouverture de la USF et du classeur, soit d'abord d'ouvrir le classeur formulaire PUIS la USF.

QUID ? comment faire pour que VBA 2021 se comporte comme VBA 2010 à partir duquel j'ai développé mes macros.

En vous remerciant

Bonjour

si j'ai bien compris
ton userform est masqué par le 2d classeur ouvert
alors que tu voudrais l'avoir toujours au premier plan
ça m'étonnerais que sur 2010 tu n'ai pas eu le même problème qui n'en est pas un d'ailleurs (puisque c'est normal )

mais bon passons

tu va devoir utiliser les api pour bloquer ton userform au premier plan

fait une recherche sur les api suivantes

  1. FindWindow ou GetActivewindow
  2. SetWindowPos

Merci pour ta réponse mais je peux t'affirmer que je n'ai pas eu ce problème sur 2010 (version 32 bits). Il y a en fait 2 problèmes qui ne se posent maintenant sur la version 2021 (64 bits) :

1) après ouverture du classeur Formulaire à l'initialisation de la USF, celui-ci n'apparait pas en premier plan de même que la boite de dialogue. C'est la feuille "Menu" qui reste (ou réapparait) au premier plan avec pas de possibilité via la macro de faire réapparaitre le Formulaire par "activate"

2) la boite de dialogue ne réapparaît qu'avec le classeur "Menu" auquel elle semble liée.

Je vais quand même creuser les sujets que tu m'as suggérés.

En te remerciant

exemple

si tu es sur 2019 et plus il te faudra peut être activer les macro4

Bonjour et merci pour ta réponse.

Je ne suis pas du tout familier avec l'API mais je vais essayer de comprendre et d'apprendre à m'en servir avant que d'insérer cette procédure dans mon code. Pour l'instant le fait d'ouvrir d'abord le formulaire avant que d'ouvrir la USF semble fonctionner bien que je ne sache pourquoi, et je vais donc appliquer cette "stratégie" partout ou c'est nécessaire dans mon application.

Encore merci

Bonjour

Les procédures fonctionnent bien mais ne correspondent pas tout à fait à ma problématique que je reprends ici:

J'ai un classeur MENU sur lequel figurent tous les boutons de commande (formulaires) de l'application développée sous Excel-VBA 2010 32 BITS.

Un bouton de commande appelle une Userform par la procédure qui lui est associée :

Private sub BoutonCommande

Userform.show

end Sub

Cette Userform appelle l'ouverture d'un NOUVEAU classeur PREDEFINI (et non à choisir par la boite de dialogue "Choisir") par sa cible C:\......NOUVEAU.xlsx, par exemple pour simplifier :

Private sub UserForm_Initialize

workbooks.Open FileName:=C:\.....NOUVEAU.xlsx

End Sub

Quand cette procédure est exécutée :

1) Dans la version 2010 de l'application c'est le classeur NOUVEAU qui est affiché en même temps que la Userform en premier plan ce que je souhaitais car le classeur nouveau est généralement une feuille à compléter (Usf Non modale dans ce cas), la Usf comportant les commandes telles que "Enregistrer" et "Fermer".

2) Or lorsque je transfère l'application sur Excel-VBA 2021 64 BITS, si je clique sur le bouton de commande c'est le classeur MENU qui s'affiche avec en premier plan la Userform, et non le classeur NOUVEAU alors que ce dernier a bien été ouvert. lorsque je le sélectionne sur la barre de tâche il s'affiche bien mais la Userform disparaît avec la classeur MENU. J'ai bien tenté de la faire réapparaître l'un et l'autre par un Userform.show ou par un NOUVEAU.activate sans succès.

Lorsque c'est possible, mais celà ne l'est pas toujours dans mon application, j'ai inversé les rôles du bouton de commande et de la Userform en faisant d'abord ouvrir le classeur NOUVEAU PREDEFINI par la procédure du bouton puis la Userform dans laquelle la commande d'ouverture a disparu :

Private sub BoutonCommande

workbooks.Open FileName:=C:\.....NOUVEAU.xlsx

Userform.show

End Sub

Et là ça marche ! J'ai bien affiché le classeur NOUVEAU et la Userform en premier plan.

Je ne comprends pas ce qui a changé entre la version 2010 32 bits et la version 2021 64 Bits n'étant pas un familier des API.

Un peu de vos lumières SVP. MERCI

J'ai oublié de mettre des guillemets dans ma réponse, de par et d'autre de l'adresse du NOUVEAU classeur.

C'est bien Workbooks.Open Filename:="C:\.....NOUVEAU.xlsx" qu'il faut lire

RE

OK DONC TU OUVRE LE CLASSEUR AVANT LE SHOW DU USERFORM pour que ca marche

c'est bizarre ton truc car la c'est plus le activate de l'userform qui commande l'ouverture

normalement quoi que tu fasse avec mon modele le userform restera toujours au premier plan

Rechercher des sujets similaires à "disparition usf ouverture nouveau classeur"