Private Sub en passant d'un classseur à un autre

Le
JPMonnier
Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de classeur ?
Merci d'avance
--
Cordialement
jpmonnier-nospam@neuf.fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #18418311
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier"
Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de classeur ?
Merci d'avance
--
Cordialement

JPMonnier
Le #18418381
Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de classeur
?
Merci d'avance
--
Cordialement




michdenis
Le #18418491
| Existe t'il une commande qui puisse lancer une procédure lorsque je passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier"
Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de classeur
?
Merci d'avance
--
Cordialement




JPMonnier
Le #18418621
Mes procédures événementielles sont activées
j'ai simulé une private sub dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "a"
End Sub
Cela fonctionne !

Ma procédure devrait trier la feuille active que je quitte au changement de
classeur
elle ne passe pas dessus à l'activation d'un autre classeur

--
Cordialement


"michdenis" news:
| Existe t'il une commande qui puisse lancer une procédure lorsque je passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier" de discussion :

Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai
donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de
classeur
?
Merci d'avance
--
Cordialement







michdenis
Le #18419001
Je t'ai demandé à quoi servait ta commande?

Pour que l'événement "desactivate" se produise, il faut
qu'un autre classeur devienne le classeur actif à l'écran et
ce, dans la même instance excel.


"JPMonnier"
Mes procédures événementielles sont activées
j'ai simulé une private sub dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "a"
End Sub
Cela fonctionne !

Ma procédure devrait trier la feuille active que je quitte au changement de
classeur
elle ne passe pas dessus à l'activation d'un autre classeur

--
Cordialement


"michdenis" news:
| Existe t'il une commande qui puisse lancer une procédure lorsque je passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier" de discussion :

Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai
donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de
classeur
?
Merci d'avance
--
Cordialement







JPMonnier
Le #18419551
Oui, je change de classeur actif
J'ai 2 classeurs dans la même instance Excel
Engagements.xls et FcdeH.xls
J'ai Engagements.xls actif
je passe sur FcdeH.xls qui devient actif
ceci répond bien à la Private Sub Désactivate
La commande que je veux déclencher via la Private Sub Workbook_Desactivate()
est un tri sur Engagements.xls (Actif) en passant sur FcdeH.xls (Actif)


"michdenis" news:
Je t'ai demandé à quoi servait ta commande?

Pour que l'événement "desactivate" se produise, il faut
qu'un autre classeur devienne le classeur actif à l'écran et
ce, dans la même instance excel.


"JPMonnier" de discussion :

Mes procédures événementielles sont activées
j'ai simulé une private sub dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "a"
End Sub
Cela fonctionne !

Ma procédure devrait trier la feuille active que je quitte au changement
de
classeur
elle ne passe pas dessus à l'activation d'un autre classeur

--
Cordialement


"michdenis" news:
| Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier" de discussion :

Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai
donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" groupe
de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de
classeur
?
Merci d'avance
--
Cordialement










michdenis
Le #18420501
Peux-tu publier la procédure que tu déclenches
lorsque tu appelles la commande ?

Difficile lorsque l'on ne connaît pas la séquence
exacte des actions posées que ce soit pas l'usager
ou une procédure qu'il déclenche !



"JPMonnier" #
Oui, je change de classeur actif
J'ai 2 classeurs dans la même instance Excel
Engagements.xls et FcdeH.xls
J'ai Engagements.xls actif
je passe sur FcdeH.xls qui devient actif
ceci répond bien à la Private Sub Désactivate
La commande que je veux déclencher via la Private Sub Workbook_Desactivate()
est un tri sur Engagements.xls (Actif) en passant sur FcdeH.xls (Actif)


"michdenis" news:
Je t'ai demandé à quoi servait ta commande?

Pour que l'événement "desactivate" se produise, il faut
qu'un autre classeur devienne le classeur actif à l'écran et
ce, dans la même instance excel.


"JPMonnier" de discussion :

Mes procédures événementielles sont activées
j'ai simulé une private sub dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "a"
End Sub
Cela fonctionne !

Ma procédure devrait trier la feuille active que je quitte au changement
de
classeur
elle ne passe pas dessus à l'activation d'un autre classeur

--
Cordialement


"michdenis" news:
| Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier" de discussion :

Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai
donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" groupe
de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de
classeur
?
Merci d'avance
--
Cordialement










JPMonnier
Le #18422071
Je suis dans fichier "Engagements.xls"
j'active le fichier "fcde.xls"

Procédure événementielle se trouvant dans "engagements.xls", ThisWorkbook

Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA" 'appel procédure du fichier fcde.xls
End Sub

Procédure du fichier fcde.xls
Sub TRIA()
Workbooks("Engagements.xls").Sheets("engagt").Range("A3:t999").Select
Selection.SORT Key1:=Range("B3"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
End Sub
Ce qui me surprend le plus est que le changement de classeur actif ne passe
pas par

Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA" 'appel procédure du fichier fcde.xls
End Sub
Etant certain que application.EnableEvents = True

********************************
Après avoir scruté de plus près, sous ma version Excel,
la Private Sub Workbook_Deactivate()
n'existe pas, j'ai donc remplacé par
Private Sub Workbook_WindowDesactivate(ByVal Wn As Window)
Application.Run "'fcde.xls'!TRIA"
Application.EnableEvents = False
workbooks("fcde.xls").Activate
Application.EnableEvents = True
End Sub
Il semble que cela fonctionne en ajoutant
Application.EnableEvents = False
workbooks("fcde.xls").Activate
Application.EnableEvents = True
afin de ne pas tourner en rond
peut être ais-je négligé de rappeler ma version Excel
Si tu as une version d'Excel différente tu as peut être l'événement Private
Sub Workbook_Desactivate()

Dans ce cas je te prie de m'excuser d'avoir été imprécis et d'avoir abusé de
ton temps
Merci encore "micheldenis"
--
Très amicalement


"michdenis" news:
Peux-tu publier la procédure que tu déclenches
lorsque tu appelles la commande ?

Difficile lorsque l'on ne connaît pas la séquence
exacte des actions posées que ce soit pas l'usager
ou une procédure qu'il déclenche !



"JPMonnier" de discussion :
#
Oui, je change de classeur actif
J'ai 2 classeurs dans la même instance Excel
Engagements.xls et FcdeH.xls
J'ai Engagements.xls actif
je passe sur FcdeH.xls qui devient actif
ceci répond bien à la Private Sub Désactivate
La commande que je veux déclencher via la Private Sub
Workbook_Desactivate()
est un tri sur Engagements.xls (Actif) en passant sur FcdeH.xls (Actif)


"michdenis" news:
Je t'ai demandé à quoi servait ta commande?

Pour que l'événement "desactivate" se produise, il faut
qu'un autre classeur devienne le classeur actif à l'écran et
ce, dans la même instance excel.


"JPMonnier" de discussion :

Mes procédures événementielles sont activées
j'ai simulé une private sub dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "a"
End Sub
Cela fonctionne !

Ma procédure devrait trier la feuille active que je quitte au changement
de
classeur
elle ne passe pas dessus à l'activation d'un autre classeur

--
Cordialement


"michdenis" news:
| Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier" groupe
de discussion :

Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai
donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" groupe
de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de
classeur
?
Merci d'avance
--
Cordialement













michdenis
Le #18423021
A )
D'abord cet événement "Private Sub Workbook_Deactivate()"
situé dans le ThisWorkbook du classeur existe dans tous les
classeurs de la version Excel 1977 à 2007 inclusivement.

B ) Si tu veux appliquer une procédure de "filtre" lorsqu'un
classeur devient le classeur actif, pourquoi ne pas utiliser
l'événement "Private Sub Workbook_Activate() dans le
ThisWorkbook du classeur qui devient actif pour appeler
ta macro : Sub TRIA()

Dans l'explication qui suit, lorsque je parle du nom de la feuille
je ne fais pas référence à l'onglet de la feuille mais au nom
de l'objet de la classe Worksheet que tu peux lire dans la
fenêtre de l'édition de code

C ) La syntaxe de ta commande pour appeler une macro située
dans un autre classeur ouvert est celle-ci :
1 -Si ta macro est située dans un module standard :
NomDuClasseur!NomDeLaMacro:

2- Si ta macro est située dans un module feuille:
NomDuClasseur!NomDeLaFeuille.NomDeLaMacro

3- Si le nom du classeur contient des espaces et
ta Macro dans un module standard
Dim LaMacro As String
LaMacro = "'" & Nom Du Classeur.xls & "'!NomDeLaMacro"
Application.Run LaMacro

4- Si le nom du classeur contient des espaces et
ta Macro dans un module Feuille
Dim LaMacro As String
LaMacro = "'" & Nom Du Classeur.xls & "'!NomDeLaFeuille.NomDeLaMacro"
Application.Run LaMacro

Tu as suffisamment d'info. maintenant pour solutionner ton problème !



"JPMonnier" #
Je suis dans fichier "Engagements.xls"
j'active le fichier "fcde.xls"

Procédure événementielle se trouvant dans "engagements.xls", ThisWorkbook

Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA" 'appel procédure du fichier fcde.xls
End Sub

Procédure du fichier fcde.xls
Sub TRIA()
Workbooks("Engagements.xls").Sheets("engagt").Range("A3:t999").Select
Selection.SORT Key1:=Range("B3"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
End Sub
Ce qui me surprend le plus est que le changement de classeur actif ne passe
pas par

Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA" 'appel procédure du fichier fcde.xls
End Sub
Etant certain que application.EnableEvents = True

********************************
Après avoir scruté de plus près, sous ma version Excel,
la Private Sub Workbook_Deactivate()
n'existe pas, j'ai donc remplacé par
Private Sub Workbook_WindowDesactivate(ByVal Wn As Window)
Application.Run "'fcde.xls'!TRIA"
Application.EnableEvents = False
workbooks("fcde.xls").Activate
Application.EnableEvents = True
End Sub
Il semble que cela fonctionne en ajoutant
Application.EnableEvents = False
workbooks("fcde.xls").Activate
Application.EnableEvents = True
afin de ne pas tourner en rond
peut être ais-je négligé de rappeler ma version Excel
Si tu as une version d'Excel différente tu as peut être l'événement Private
Sub Workbook_Desactivate()

Dans ce cas je te prie de m'excuser d'avoir été imprécis et d'avoir abusé de
ton temps
Merci encore "micheldenis"
--
Très amicalement


"michdenis" news:
Peux-tu publier la procédure que tu déclenches
lorsque tu appelles la commande ?

Difficile lorsque l'on ne connaît pas la séquence
exacte des actions posées que ce soit pas l'usager
ou une procédure qu'il déclenche !



"JPMonnier" de discussion :
#
Oui, je change de classeur actif
J'ai 2 classeurs dans la même instance Excel
Engagements.xls et FcdeH.xls
J'ai Engagements.xls actif
je passe sur FcdeH.xls qui devient actif
ceci répond bien à la Private Sub Désactivate
La commande que je veux déclencher via la Private Sub
Workbook_Desactivate()
est un tri sur Engagements.xls (Actif) en passant sur FcdeH.xls (Actif)


"michdenis" news:
Je t'ai demandé à quoi servait ta commande?

Pour que l'événement "desactivate" se produise, il faut
qu'un autre classeur devienne le classeur actif à l'écran et
ce, dans la même instance excel.


"JPMonnier" de discussion :

Mes procédures événementielles sont activées
j'ai simulé une private sub dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "a"
End Sub
Cela fonctionne !

Ma procédure devrait trier la feuille active que je quitte au changement
de
classeur
elle ne passe pas dessus à l'activation d'un autre classeur

--
Cordialement


"michdenis" news:
| Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier" groupe
de discussion :

Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai
donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" groupe
de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de
classeur
?
Merci d'avance
--
Cordialement













JPMonnier
Le #18423391
Bonjour micheldenis
merci pour toutes tes explications
Mon problème est solutionné comme indiqué dans ma réponse précédente

J'ai bien trouvé la fonction dan la bibliothèque d'objet
Excel/Application/WorkbookDeactivate
En revanche elle n'apparait pas dans Thisworkbook de mes classeurs ouverts,
mais se trouve dans le classeur
VBAProject(FUNCRES.XLA) ThisWorkbook !!
Quoi qu'il en soit elle ne fonctionne pas et n'est pas reconnue si je
l'écris manuellement dans Thisworkbook de mes classeurs

la Private Sub Workbook_WindowDesactivate(ByVal Wn As Window)
fonctionne et me convient

Concernant le tri :
j'accède à mon classeur avec un US pour un choix de tri
je dois trier ce classeur dans un tri bien précis avant de choisir un autre
classeur
Quand à l'utilisation de l'événement "Private Sub Workbook_Activate()
Je n'ai pas à trier le dit classeur à chaque fois car ayant plusieurs
classeurs, je ne vois pas l'intérêt de trier toujours le classeur
"Engagements"

Je ne veux pas user plus de ton temps vu que j'ai solutionné différemment;
mais je tenais à donner ces précisions
Mais il me semble que, par ta dernière phrase, que je t'ennuie un peu !!
J'espère me tromper
A bientôt

--
Cordialement







"michdenis" news:
A )
D'abord cet événement "Private Sub Workbook_Deactivate()"
situé dans le ThisWorkbook du classeur existe dans tous les
classeurs de la version Excel 1977 à 2007 inclusivement.

B ) Si tu veux appliquer une procédure de "filtre" lorsqu'un
classeur devient le classeur actif, pourquoi ne pas utiliser
l'événement "Private Sub Workbook_Activate() dans le
ThisWorkbook du classeur qui devient actif pour appeler
ta macro : Sub TRIA()

Dans l'explication qui suit, lorsque je parle du nom de la feuille
je ne fais pas référence à l'onglet de la feuille mais au nom
de l'objet de la classe Worksheet que tu peux lire dans la
fenêtre de l'édition de code

C ) La syntaxe de ta commande pour appeler une macro située
dans un autre classeur ouvert est celle-ci :
1 -Si ta macro est située dans un module standard :
NomDuClasseur!NomDeLaMacro:

2- Si ta macro est située dans un module feuille:
NomDuClasseur!NomDeLaFeuille.NomDeLaMacro

3- Si le nom du classeur contient des espaces et
ta Macro dans un module standard
Dim LaMacro As String
LaMacro = "'" & Nom Du Classeur.xls & "'!NomDeLaMacro"
Application.Run LaMacro

4- Si le nom du classeur contient des espaces et
ta Macro dans un module Feuille
Dim LaMacro As String
LaMacro = "'" & Nom Du Classeur.xls &
"'!NomDeLaFeuille.NomDeLaMacro"
Application.Run LaMacro

Tu as suffisamment d'info. maintenant pour solutionner ton problème !



"JPMonnier" de discussion :
#
Je suis dans fichier "Engagements.xls"
j'active le fichier "fcde.xls"

Procédure événementielle se trouvant dans "engagements.xls",
ThisWorkbook

Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA" 'appel procédure du fichier fcde.xls
End Sub

Procédure du fichier fcde.xls
Sub TRIA()
Workbooks("Engagements.xls").Sheets("engagt").Range("A3:t999").Select
Selection.SORT Key1:=Range("B3"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
End Sub
Ce qui me surprend le plus est que le changement de classeur actif ne
passe
pas par

Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA" 'appel procédure du fichier fcde.xls
End Sub
Etant certain que application.EnableEvents = True

********************************
Après avoir scruté de plus près, sous ma version Excel,
la Private Sub Workbook_Deactivate()
n'existe pas, j'ai donc remplacé par
Private Sub Workbook_WindowDesactivate(ByVal Wn As Window)
Application.Run "'fcde.xls'!TRIA"
Application.EnableEvents = False
workbooks("fcde.xls").Activate
Application.EnableEvents = True
End Sub
Il semble que cela fonctionne en ajoutant
Application.EnableEvents = False
workbooks("fcde.xls").Activate
Application.EnableEvents = True
afin de ne pas tourner en rond
peut être ais-je négligé de rappeler ma version Excel
Si tu as une version d'Excel différente tu as peut être l'événement
Private
Sub Workbook_Desactivate()

Dans ce cas je te prie de m'excuser d'avoir été imprécis et d'avoir abusé
de
ton temps
Merci encore "micheldenis"
--
Très amicalement


"michdenis" news:
Peux-tu publier la procédure que tu déclenches
lorsque tu appelles la commande ?

Difficile lorsque l'on ne connaît pas la séquence
exacte des actions posées que ce soit pas l'usager
ou une procédure qu'il déclenche !



"JPMonnier" de discussion :
#
Oui, je change de classeur actif
J'ai 2 classeurs dans la même instance Excel
Engagements.xls et FcdeH.xls
J'ai Engagements.xls actif
je passe sur FcdeH.xls qui devient actif
ceci répond bien à la Private Sub Désactivate
La commande que je veux déclencher via la Private Sub
Workbook_Desactivate()
est un tri sur Engagements.xls (Actif) en passant sur FcdeH.xls (Actif)


"michdenis" news:
Je t'ai demandé à quoi servait ta commande?

Pour que l'événement "desactivate" se produise, il faut
qu'un autre classeur devienne le classeur actif à l'écran et
ce, dans la même instance excel.


"JPMonnier" groupe
de discussion :

Mes procédures événementielles sont activées
j'ai simulé une private sub dans une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "a"
End Sub
Cela fonctionne !

Ma procédure devrait trier la feuille active que je quitte au changement
de
classeur
elle ne passe pas dessus à l'activation d'un autre classeur

--
Cordialement


"michdenis" news:
| Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
| d'un classeur à un autre par l'intermédiaire d'un menu personnalisé

Elle fait quoi ta commande ?

Est-ce que tes procédures événementielles sont activées?
Exécute la ligne de code suivante : application.EnableEvents = True



"JPMonnier" groupe
de discussion :

Bonjour micheldenis
J'avais fait ce que tu dis, mais l'avais placé dans la feuille, je l'ai
donc
placé dans ThisWorkbook
Private Sub Workbook_Desactivate()
Application.Run "'fcde.xls'!TRIA"
End Sub

Rien ne s'exécute
Lorsque je mets un point d'arrêt sur la private sub, elle ne passe pas
dessus !!
merci encore pour ton aide
--
Cordialement

"michdenis" news:
Pas sûr d'avoir compris ce que tu désires ..

À chaque fois qu'un classeur passe la main à un autre classeur
lorsqu'ils sont ouverts dans LA MÊME INSTANCE D'EXCEL, il
y a cet événement qui se produite dans le classeur qui perd la
main :
'----------------------------
Private Sub Workbook_Deactivate()

End Sub
'----------------------------
Cet événement s'exécute avant que le nouveau classeur sélectionné
devienne le classeur actif.

Cet événement est disponible dans le ThisWorkbook de chaque classeur.



"JPMonnier" groupe
de discussion :

Bonjour,
Existe t'il une commande qui puisse lancer une procédure lorsque je
passe
d'un classeur à un autre par l'intermédiaire d'un menu personnalisé
Du style Private Sub Workbooks_Deactivate()
ou
Private Sub WindowDeactivate(ByVal Wb As Excel.workbook, ByVal Wn As
Excel.Window)
et comment lancer l'éventuelle Private Sub avant le changement de
classeur
?
Merci d'avance
--
Cordialement
















Publicité
Poster une réponse
Anonyme