[VBA] d=c3=a9tecter l'activation/d=c3=a9sactivation d'un groupe de travail

Le
JièL
Salutatousses,

y'a t'il un évènement dans le VBA qui se déclenche quand on active ou
désactive un groupe de travail ?

ActiveWindow.SelectedSheets.Count permet de savoir combien de feuille
sont groupées, mais je voudrais savoir quand ce chiffre change.

Merci d'avance

--
JièL rester groupir
Vos réponses Page 2 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #26447052
Ah, j'avais confiance.
je savais que tu trouverais.
Puis-je avoir la fin du msg, svp?
<La macro s'applique seulement pour ce classeur. Si un autre classeur
devient actif,
???
Déjà merci.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
or85s0$1vgn$
Voici ce qu'il est possible de faire dans ce classeur exemple :
http://www.cjoint.com/c/GJgo62QM2CX
MichD
JièL
Le #26447051
Et tu vas être "obligé" de faire travailler ton Excel 7 jour par semaine
? Houlala ;-)
Merci, c'est bien la piste que j'ai suivi (OnTime)
--
JièL
Le 06/10/2017 à 16:32, Jacquouille a écrit :
Si ça va pas comme cela à l'ouverture du dossier, tu peux partir de
l'heure d'ouverture et ajouter une exécution à timmer + x
Mais, si tu continues à me poser des colles, je vais finir par être
scotché à mon Excel favori .....
-))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"JièL"  a écrit dans le message de groupe de discussion :
59d77ce7$0$7177$
Le 06/10/2017 à 12:11, Jacquouille a écrit :
Elle n'était pas idiote, mais il manque le déclencheur, et donc je ne
sais pas "quand" compter.
Suggestion du jour: à l'ouverture du fichier, une macro auto-matique....

Pas con... Mais là je ne vois pas comment faire sans bloquer
l'utilisation d'Excel.
Donc la question devient : comment créer un macro qui travaille en tâche
de fond (vu qu'il n'y a pas d'évènement la déclenchant) sans bloquer
l'utilisation d'Excel ???
A suivre...
JièL
Le #26447050
Merci MichD
en attendant une réponse j'étais parti exactement dans cette voie...
Comme quoi des fois il suffit simplement de poser la question pour
trouver un début de solution.
Une question : il semble qu'il y ait un plantage aléatoire quand on
essaye de désactiver le OnTime dans le Before_Close.
Je vois que tu as mis un On Error, tu as du avoir le pb toi aussi, non ?
A priori je n'ai plus de plantage (ou je ne suis pas tombé dessus) si je
fais appel à une autre procédure dans le Before_Close.
--
JièL
Le 06/10/2017 à 17:01, MichD a écrit :
Voici ce qu'il est possible de faire dans ce classeur exemple :
http://www.cjoint.com/c/GJgo62QM2CX
MichD
MichD
Le #26447065
Le classeur exemple fonctionne correctement. Je n'éprouve aucune erreur.
La ligne de code "On error resume next" dans l'arrêt de la procédure n'est
pas optionnelle!
MichD
MichD
Le #26447064
La macro s'applique seulement pour ce classeur. Si un autre classeur devient
actif, la procédure s'arrête et reprend où elle était dès que le classeur
redevient actif.
MichD
isabelle
Le #26447073
bonjour JièL,
est ce que le groupe de travail est déjà présent à l'ouverture du fichier ?
isabelle
Le 2017-10-06 à 08:53, JièL a écrit :
Le 06/10/2017 à 12:11, Jacquouille a écrit :
Elle n'était pas idiote, mais il manque le déclencheur, et donc je ne
sais pas "quand" compter.
Suggestion du jour: à l'ouverture du fichier, une macro auto-matique....

Pas con... Mais là je ne vois pas comment faire sans bloquer l'utilisation d'Excel.
Donc la question devient : comment créer un macro qui travaille en tâche de fond
(vu qu'il n'y a pas d'évènement la déclenchant) sans bloquer l'utilisation
d'Excel ???
A suivre...
JièL
Le #26447083
Le 06/10/2017 à 18:56, MichD a écrit :
Le classeur exemple fonctionne correctement.

Je confirme
Je n'éprouve aucune erreur.

Super ;-)
La ligne de code "On error resume next" dans l'arrêt de la procédure
n'est pas optionnelle!

Ah ?
Et pourquoi donc steuplé ?
Normalement le "on error" est fait pour gérer une erreur, donc si il est
là c'est qu'il doit y avoir une erreur qui se produit, non ?
--
JièL
JièL
Le #26447082
Hello Isabelle de la Geôlière ;-)
oui, il doit l'être...
C'est quoi ton idée ?
--
JièL DX32768
Le 06/10/2017 à 21:11, isabelle a écrit :
bonjour JièL,
est ce que le groupe de travail est déjà présent à l'ouverture du fichier ?
isabelle
Le 2017-10-06 à 08:53, JièL a écrit :
Le 06/10/2017 à 12:11, Jacquouille a écrit :
Elle n'était pas idiote, mais il manque le déclencheur, et donc je ne
sais pas "quand" compter.
Suggestion du jour: à l'ouverture du fichier, une macro auto-matique....

Pas con... Mais là je ne vois pas comment faire sans bloquer
l'utilisation d'Excel.
Donc la question devient : comment créer un macro qui travaille en
tâche de fond (vu qu'il n'y a pas d'évènement la déclenchant) sans
bloquer l'utilisation d'Excel ???
A suivre...
Jacquouille
Le #26447085
Ne pas oublier la Loi de Murphy :'' Tout ce qui peut arriver pour
t'emmerder, arrivera''.
Donc, on peut mettre ''On error resume next'' par prudence, même si ça va
....
On n'est jamais trop prudent, mon cher Jièl. -))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"JièL" a écrit dans le message de groupe de discussion :
59d7e75c$0$3443$
Normalement le "on error" est fait pour gérer une erreur, donc si il est
là c'est qu'il doit y avoir une erreur qui se produit, non ?
--
JièL
MichD
Le #26447087
Fais une petite expérience.
Place le délai à 10 secondes plutôt que 2 secondes.
Maintenant, va dans le Thisworkbook et exécute la procédure
Private Sub Workbook_Deactivate()
Par la suite, place une apostrophe devant la ligne "On Error Resume Next
dans cette même proc.
Tu peux alors exécuter la procédure "Activate" et "Désactivate" à volonté
et cela fonctionne correctement sans erreur.
Le HIC, dans cette ligne de code qui annule l'événement, la variable
"HeureArrêt" est défini à chaque fois que la procédure "StartMacro" est
exécutée. Cependant, si une activité ou une procédure en cours empêche
l'exécution de la ligne de code avant le délai défini "HeureArrêt", la
procédure va planter au moment de l'arrêter. Par conséquent, l'ajout de la
ligne de code "on error resume next" permet de mettre fin à la procédure
quand même sans souci pour l'usager.
Si tu trouves d'autres raisons, publie-les!
MichD
Publicité
Poster une réponse
Anonyme