• Initiateur de la discussion Initiateur de la discussion Darnel
  • 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 !

Darnel

XLDnaute Impliqué
Bonjour :

J'ai une macro1 qui appel un USF qui sert à informer les utilisateurs du fichier et qui leur propose des raccourcis.

Cette macro1 est également appellée par une autre (macro2) et dans ce cas, je ne veux pas que l'usf soit affiché.
J'ai essayé de placer un peu partout des Unload UserForm1 mais rien n'y fait, il continu à s'afficher.

Il me reste une solution mais qui ne me plait pas : remplacer dans macro2 l'appel de la macro1 par le code de celle ci, modifié pour ne pas appeller l'usf.

Ma question est la suivante :

Y a t il un code qui se place en début de macro pour désactiver un USF, ou l'empecher de s'afficher, pendant l'execution de celle ci ?

Merci d'avance de votre aide
 
Re : désactiver USF

Bonjour,

Si j'ai bien compris ta question, tu ne veux pas que l'userform s'affiche quand tu actives la macro 2, qui quant à elle appelle la macro1 qui a pour but d'ouvrir l'userform

Compliqué ...... mais il me semble avoir compris cela

Si c'est le cas, essaies en utilisant la méthode "Hide" (UserForm.Hide) que tu placeras dans un test du genre :

si macro2 acivée alors UserForm.Hide

J'espère avoir bien compris ta question et être asez clair

A ta disposition
 
Re : désactiver USF

Re,

J'ai une petite idée (qui ne sera peut être pas la meilleure) mais qui devrait te rendre service.

Tu places en début de macro 2 un "drapeau" en tant que variable Publique.
Je m'explique un "drapeau" permet de suivre un état binaire (Macro 2 appelée => drapeau = 1, Macro 2 non activée => drapeau = 0)

Donc en première ligne de Macro2 tu "pousses" ton drapeau à 1
Et en première ligne de Macro 1 tu regardes la valeur de ton drapeau : si drapeau = 1 alors UserForm.Hide
Ne pas oublier surtout de remettre le drapeau à 0 en fin de macro 1

J'utilise parfois ce bidouillage qui m'a bien rendu service

A ta disposition



Oups, bonjour Robert
 
Re : désactiver USF

Bonjour Darnel, Jacques, Robert,

Je ne suis pas très sûrs que cela corresponde à ton besoin mais si tu as un macro 1 avec l'ouverture de l'UF + du code qui doit être executé via la Macro2
et dans ta marco 2 un autre code.
tu pourrais créer une 3eme macro qui regroupe le code commun.

Macro1 lance la macro3 et l'ouverture de l'UF
Macro2 lance la macro3 et son propre code.

Est ce clair ??

C'est quelquefois plus facile à suivre avec plusieurs macros qui se succedent plutôt qu'une très longue.


Vic
 
Re : désactiver USF

Re Jacques

Bonjour, Robert, VIC

Merci de votre aide

Robert, je vien de jetter un oeil à l'aide et malheureusement je ne semble pas équipé de suffisament de neuronnes pour comprendre l'assistant vba, ou bien je ne parles vraiment pas la même langue que bilou ... je ne doute pas que cela soit traduit en Français, mais on doit pas vivre sur la même planète lui et moi... 😱

VIC, j'avais déjà penser à cette solution, mais le probleme c'est que les macro1 comme 2 utilisent des If en quantité avant d'appeler ou non la macro suivante, or, l'affichage de l'usf doit aussi être dépendant de ces If pour etre appellé ou non.
C'est certainement réalisable, mais pour l'instant, je ne suis pas parvenu à quelque chose de concluant.

Jacques, ta solution à l'air interessante (car en plus elle me permet d'apprendre un nouveau truc), a condition que j'arrive à trouver comment mettre en place ces fameux drapeaux.

Je comprend bien le fonctionnement, mais je n'ai aucune idée de là ou trouver ces "drapeau"

J'avoue qu'un petit exemple de code me serai bien utile.
Je continu à chercher

Merci de votre aide
 
Re : désactiver USF

Bonjour le fil, bonjour le forum,

Oui je crois que la "bidouille" de jacques est la plus appropriée.
Tu déclares une variable publique dans une module :
Code:
Public test As Boolean

Dans ta macro2 tu place ce code :
Code:
test = True

puis une conditionnelle pour l'affichage de l'Userform avec balise "suite"
Code:
 If test = True Then test = False : GoTo suite
UserForm1.Show
 
suite : 
.... suite du code

J'espère que c'est suffisamment clair....
 
Re : désactiver USF

Darnel,
les macro1 comme 2 utilisent des If en quantité
Je ne connait pas ton code mais si tu as beaucoup de "si"
tu peut regarder si une solution du type "Select case" pourrait simplifier ton code

...a condition que j'arrive à trouver comment mettre en place ces fameux drapeaux.

Ce qu'on appelle ici un drapeau c'est une variable que tu nommes comme tu veux et qui peut prendre les valeurs 0 et 1, ou "Vrai" et "Faux" ou ce que tu veux

Avant tes macros tu places : Public MonDrapeau As boolean

ensuite dans ton code, comme le dit Jacques, tu places
MonDrapeau = 1 en début de Macro2
Et dans ta macro 1 tu places
If Mondrapeau = 0 then ...[tu lance l'Userform]
Donc si l'execution viens tde ta macro2, comme Mon drapeau =1 la condition n'est pas rempli pour lancer l'UF.

J'espere avoir été clair et avoir respecté l'esprit de la proposition de Jacques

A+
Vic
 
Dernière modification par un modérateur:
Re : désactiver USF

Re

Merci encore pour le mal que vous vous donnez

Je vien de tester

Donc, dans chaque module concerné (Macro1 dans module 1 et macro 2 dans module 2) j'ai mis

Public Drapeau As boolean

ensuite dans ma Macro2, au début (1ère ligne ), j'ai mis : Drapeau=1

et enfin

dans ma macro 1, la ou avant je lancait automatiquement l'ouverture de l'usf, j'ai mis ca :
If Drapeau = 0 Then
Load UserForm1
UserForm1.Show
Else
UserForm1.Hide
End If

Problème cela ne marche pas
une idée, je n'ai peut etre pas tout fait correctement ( cela ne m'etonnerait pas)
en tout cas c'est ce que j'ai cru comprendre
 
Re : désactiver USF

Re

En fait j'avais oublier encore un truc

J'avais oublier de mettre Drapeau = 0 à la fin de macro 2 ce qui faisait que ca marchait mais juste la première fois.
Maintenant tout roule

Merci de votre aide à tous
et désolé d'avoir été aussi peu doué
il vous a fallu vous y mettre à 3 pour que j'y arrive.

Merci à vous trois.
 
Re : désactiver USF

Bravo à tous les trois : Darnel, Robert et Vic

Je dis bravo, car je suis heureux de voir qu'avec votre aide, ma "bidouille" a été efficace.
Comme quoi parfois avec peu de choses on obtient satisfaction.

Je crois que c'est Dan qui disait : inutile de prendre un 35 tonnes pour transporter une boite d'allumettes ....

Maintenant il est évident que je reste preneur de toute solution plus "catholique"

Au plaisir de vous croiser sur XLD
 
- 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

S
  • Résolu(e)
Réponses
6
Affichages
2 K
Serge6926
S
M
Réponses
11
Affichages
2 K
MattMons
M
E
Réponses
2
Affichages
3 K
Emmanuel93170
E
J
Réponses
4
Affichages
1 K
jmten92
J
J
Réponses
2
Affichages
816
J
Retour