OVH Cloud OVH Cloud

Touche de raccourci et UserForm

3 réponses
Avatar
Noegor
Bonjour,
J'ai créé un classeur (Heur2004) dans lequel j'exécute une macro à l'aide
d'un raccourci clavier, macro qui à son tour lance un UserForm pour la
saisie d'informations.
Tout ceci fonctionne très bien, sauf lorsque je charge en mémoire le même
classeur mais qui concerne 2005 (Heur2005).
Le dossier Heur2004 étant déjà en mémoire, j'ouvre Heur2005 qui de ce fait
devient le dossier actif. Si je lance ma macro à l'aide de la touche de
raccourci en vue de mettre à jour Heur2005, ce dernier est mis en veilleuse,
Heur2004 est activé et je ne peux modifier que le classeur Heur2004!En fait,
c'est systématiquement le premier classeur qui est chargé en mémoire qui
s'impose.
J'aimerais comprendre ce qui se passe et surtout que faire?..
( Je bidouille un peu le VBA. J'utilise Excel2000 sous Win98. )

Merci et bon week-end

Noeg..

3 réponses

Avatar
michdenis
Bonjour Noegor,

Tu peux donner la macro liée au raccourci clavier ?


Salutations!


"Noegor" a écrit dans le message de news:
Bonjour,
J'ai créé un classeur (Heur2004) dans lequel j'exécute une macro à l'aide
d'un raccourci clavier, macro qui à son tour lance un UserForm pour la
saisie d'informations.
Tout ceci fonctionne très bien, sauf lorsque je charge en mémoire le même
classeur mais qui concerne 2005 (Heur2005).
Le dossier Heur2004 étant déjà en mémoire, j'ouvre Heur2005 qui de ce fait
devient le dossier actif. Si je lance ma macro à l'aide de la touche de
raccourci en vue de mettre à jour Heur2005, ce dernier est mis en veilleuse,
Heur2004 est activé et je ne peux modifier que le classeur Heur2004!En fait,
c'est systématiquement le premier classeur qui est chargé en mémoire qui
s'impose.
J'aimerais comprendre ce qui se passe et surtout que faire?..
( Je bidouille un peu le VBA. J'utilise Excel2000 sous Win98. )

Merci et bon week-end

Noeg..
Avatar
Noegor
Voici les 4 lignes de code :
Sub cellule()
Load UserForm1
UserForm1.Show
End Sub
??
"michdenis" a écrit dans le message de
news:eFY3L%
Bonjour Noegor,

Tu peux donner la macro liée au raccourci clavier ?


Salutations!


"Noegor" a écrit dans le message de news:


Bonjour,
J'ai créé un classeur (Heur2004) dans lequel j'exécute une macro à l'aide
d'un raccourci clavier, macro qui à son tour lance un UserForm pour la
saisie d'informations.
Tout ceci fonctionne très bien, sauf lorsque je charge en mémoire le même
classeur mais qui concerne 2005 (Heur2005).
Le dossier Heur2004 étant déjà en mémoire, j'ouvre Heur2005 qui de ce fait
devient le dossier actif. Si je lance ma macro à l'aide de la touche de
raccourci en vue de mettre à jour Heur2005, ce dernier est mis en
veilleuse,

Heur2004 est activé et je ne peux modifier que le classeur Heur2004!En
fait,

c'est systématiquement le premier classeur qui est chargé en mémoire qui
s'impose.
J'aimerais comprendre ce qui se passe et surtout que faire?..
( Je bidouille un peu le VBA. J'utilise Excel2000 sous Win98. )

Merci et bon week-end

Noeg..





Avatar
Noegor
Dans l'attente d'une réponse à ma bogue, j'ai continué à me torturer les
neurones.
Ni comprenant plus rien, j'ai laissé tombé mon programme et j'ai repris
l'affaire en essayant de reproduire le phénomène, mais cette fois-ci, sur le
classeur d'un spécialiste. J'ai trouvé que le classeur :
"Demo_UformTransparent" de Michel Pierron convenait parfaitement. En effet,
une macro : "main" et un UserForm : "UserForm1".
J'ai donc procédé à plusieurs tests :
Premier test :
1. Chargement en mémoire de "Demo_UformTransparent".
2. ajout de la touche de raccourci "C" dans la macro : "main".
3. Sauvegarde du classeur sous le nom : UF-test1
4. Test du raccourci = Ok
5. sauvegarde du classeur sous un autre nom : UF-test2.
6. Ouverture du classeur UF-test1..
7. Test de la touche de raccourci : [Shift Ctrl C] sur le classeur actif
UF-test1 = Ok
8. Activation de UF-test2.
9. Test de la touche de raccourci : [Shift Ctrl C] sur le classeur actif
UF-test2 = Ok
10. Tout "semble" fonctionner sans problème!!!
Déçu mais pas convaincu, je pousse un peu plus loin le bouchon.

Deuxième test :
1. Insertion du MsgBox suivant, en début de la macro "main" de UF-test1

Titre = "Macro main de UF-test1"
Config = vbOKOnly
Msg = ActiveWorkbook.Name
Msg = Msg & vbNewLine
Msg = Msg & ActiveSheet. Name
Réponse = MsgBox(Msg, Config, Titre)

2. le classeur UF-test2 étant encore en mémoire, j'en profite pour glisser
le même MsgBox dans la macro "main", mais en modifiant le titre :
Titre = "Macro main de UF-test2"
3. Fermeture et sauvegarde des deux classeurs.
4. Ouverture de UF-test1
5. A l'ouverture apparaît le MsgBox, qui affiche :

Titre = "Macro main de UF-test1"
ActiveWorkbook.Name = "UF-test1"
C'est conforme.
6. Test de la touche de raccourci : [Shift Ctrl C] sur le classeur actif
UF-test1. Le MsgBox qui s'affiche est identique à 5, ce qui est correct.
7. Ouverture de UF-test2
8. A l'ouverture apparaît le MsgBox qui affiche :

Titre = "Macro main de UF-test1", ceci est erroné : [Shift Ctrl C], aurait
dû lancer la macro "main "de UF-test2.
ActiveWorkbook.Name = UF-test2, ceci est correct, car c'est bien le classeur
UF-test2 qui est actif.

9. Par contre le test sur les boutons "Press me" est concluant.

Manifestement, la touche de raccourci [Shift Ctrl C] lance la première macro
"main" chargée en mémoire, alors que l'on pourrait s'attendre à ce qu'elle
lance la macro du classeur actif.
Pour confirmer cela d'une façon encore plus visuelle, j'ai procédé à un
dernier test, qui a consisté à colorer en rouge tous les "Back Color" du
UserForm1 de UF-test1.
Regardez le résultat, c'est flagrant.
Maintenant que l'on comprend un peu mieux ce qui ce passe qu'elle est la
parade?.
QUI PEUT M'AIDER?
Je vais poursuivre mes investigations, mais pour l'instant je suis coulé..
Merci d'avance.


"Noegor" a écrit dans le message de
news:
Bonjour,
J'ai créé un classeur (Heur2004) dans lequel j'exécute une macro à l'aide
d'un raccourci clavier, macro qui à son tour lance un UserForm pour la
saisie d'informations.
Tout ceci fonctionne très bien, sauf lorsque je charge en mémoire le même
classeur mais qui concerne 2005 (Heur2005).
Le dossier Heur2004 étant déjà en mémoire, j'ouvre Heur2005 qui de ce fait
devient le dossier actif. Si je lance ma macro à l'aide de la touche de
raccourci en vue de mettre à jour Heur2005, ce dernier est mis en
veilleuse,

Heur2004 est activé et je ne peux modifier que le classeur Heur2004!En
fait,

c'est systématiquement le premier classeur qui est chargé en mémoire qui
s'impose.
J'aimerais comprendre ce qui se passe et surtout que faire?..
( Je bidouille un peu le VBA. J'utilise Excel2000 sous Win98. )

Merci et bon week-end

Noeg..