OVH Cloud OVH Cloud

Activate- deactivate

11 réponses
Avatar
Patrick BASTARD
Bonjour à tous.

Toujours dans mes procédures événementielles, j'ai un soucis pour adapter la
macro de Pierre (en fin de message) à mon cas.
Mon classeur comporte plusieurs onglets, et je souhaite masquer certains
éléments (barres d'outils dans cet exemple) sur des onglets précis (pas
tous, ce qui m'empêche de mettre cette procédure dans ThisWorkbook).
Je rencontre les problèmes suivants :
Macro dans une feuille :
1° - ça fonctionne tant que je reste dans le même classeur, les barres
d'outil disparaissent de cette feuille, et réapparaissent quand j'en
sélectionne une autre.
2° - ça ne fonctionne plus quand 2 classeurs sont ouverts et que je passe de
l'un à l'autre.
Macro dans plusieurs feuilles :
3° - ça ne fonctionne plus.

Les questions que je me pose peuvent vous apparaitre basiques, et je m'en
excuse, mais comment s'enchainent les activations-désactivations de feuilles
?
Passer d'une feuille à une autre feuille, ou à la feuille d'un autre
classeur, n'est-ce pas désactitvation de l'ancienne feuille, puis activation
d'une nouvelle?

Merci d'avance de tout éclaircissement que vous voudrez bien m'apporter.
--
Bien cordialement,
P. Bastard




Option Explicit
'masquer puis réafficher toutes les barres d'outils d'une feuille
'd'après Pierre Fauconnier, mpfe

Sub worksheet_activate()
Dim ColBarresOutils As Collection
Dim BarreOutils As CommandBar

Set ColBarresOutils = New Collection
For Each BarreOutils In Application.CommandBars
If BarreOutils.Type = 0 And BarreOutils.Visible = True Then
ColBarresOutils.Add BarreOutils.Name
BarreOutils.Visible = False
End If
Next BarreOutils
End Sub

Sub worksheet_deactivate()
'MontreBars()
'à appeler dans l'événement DeActivate d'un classeur
Dim Element
For Each Element In ColBarresOutils
Application.CommandBars(Element).Visible = True
Next Element
End Sub

10 réponses

1 2
Avatar
anonymousA
bonjour,

visiblement non. Passer d'une feuille à une autre c'est bien désactiver
la 1ere pour activer l'autre quand l'évenement se produit dans le même
classeur.
Quand on passe d'une feuille d'un classeur à une autre feuille d'un
autre classeur ou d'une fenêtre à une autre dans un même classeur p.e
ces sont les evenements workbook_Deactivate ou Window_Deactivate qui ont
lieu ( d'ailleurs le 2eme avant le 1er très exactement si on change de
classeur et qu'on a mis un Window_Deactivate et un workbook_Deactivate).

Le + simple pour résoudre ton problème est sans doute d'utiliser un
module de classe dans lequel tu déclarerais dans des evemements
d'application , tes modifications de barre d'outils. Pour ce faire, il
te faudra bien sur discriminer sur quels fichiers et/ou quelles feuilles
( par workbooks("X").name et sheets("X").name ou activeworkbook et
activesheet) tu veux que s'appliquent tes evenements.

je pense que tu sais construire un module de classe comme celui-ci mais
si ce n'est pas le cas, reviens sur le forum ou va sur Excelabo. Il me
semble qu'il y a au moins 1 exemple.

Enfin, je n'ai peut-être pas compris ta demande mais si c'est le cas, je
pense que tu me le feras savoir.

A+


Bonjour à tous.

Toujours dans mes procédures événementielles, j'ai un soucis pour adapter la
macro de Pierre (en fin de message) à mon cas.
Mon classeur comporte plusieurs onglets, et je souhaite masquer certains
éléments (barres d'outils dans cet exemple) sur des onglets précis (pas
tous, ce qui m'empêche de mettre cette procédure dans ThisWorkbook).
Je rencontre les problèmes suivants :
Macro dans une feuille :
1° - ça fonctionne tant que je reste dans le même classeur, les barres
d'outil disparaissent de cette feuille, et réapparaissent quand j'en
sélectionne une autre.
2° - ça ne fonctionne plus quand 2 classeurs sont ouverts et que je passe de
l'un à l'autre.
Macro dans plusieurs feuilles :
3° - ça ne fonctionne plus.

Les questions que je me pose peuvent vous apparaitre basiques, et je m'en
excuse, mais comment s'enchainent les activations-désactivations de feuilles
?
Passer d'une feuille à une autre feuille, ou à la feuille d'un autre
classeur, n'est-ce pas désactitvation de l'ancienne feuille, puis activation
d'une nouvelle?

Merci d'avance de tout éclaircissement que vous voudrez bien m'apporter.


Avatar
Patrick BASTARD
Bonjour, *anonymousA* .

Ben c'est pas gagné !!!

Je ne fais actuellement que balbutier le VBA, (le B.A.BA du VBA ;-) ).
Et si je sais utiliser l'enregistreur, si j'arrive (parfois) à comprendre le
code glané sur ce forum et sur les sites dédiés à Excel, je n'en suis pas,
et de loin, aux modules de classe.
Mais il faudra bien que ça vienne.

Je vais de ce pas chez misange, faire mes emplètes.
Et je sais d'autre part avoir aperçu ces "créatures" dans des fichiers de
Serge GARNEAU et de Frédéric SIGONNEAU, mais je ne connais pas encore leurs
coutumes (aux modules de classe).

Merci en tous cas de m'avoir indiqué cette piste.
C'est l'occasion d'approfondir.


--
Bien cordialement,
P. Bastard
.

bonjour,

visiblement non. Passer d'une feuille à une autre c'est bien
désactiver la 1ere pour activer l'autre quand l'évenement se produit
dans le même classeur.
Quand on passe d'une feuille d'un classeur à une autre feuille d'un
autre classeur ou d'une fenêtre à une autre dans un même classeur p.e
ces sont les evenements workbook_Deactivate ou Window_Deactivate qui
ont lieu ( d'ailleurs le 2eme avant le 1er très exactement si on
change de classeur et qu'on a mis un Window_Deactivate et un
workbook_Deactivate).
Le + simple pour résoudre ton problème est sans doute d'utiliser un
module de classe dans lequel tu déclarerais dans des evemements
d'application , tes modifications de barre d'outils. Pour ce faire, il
te faudra bien sur discriminer sur quels fichiers et/ou quelles
feuilles ( par workbooks("X").name et sheets("X").name ou
activeworkbook et activesheet) tu veux que s'appliquent tes
evenements.
je pense que tu sais construire un module de classe comme celui-ci
mais si ce n'est pas le cas, reviens sur le forum ou va sur Excelabo.
Il me semble qu'il y a au moins 1 exemple.

Enfin, je n'ai peut-être pas compris ta demande mais si c'est le cas,
je pense que tu me le feras savoir.

A+


Bonjour à tous.

Toujours dans mes procédures événementielles, j'ai un soucis pour
adapter la macro de Pierre (en fin de message) à mon cas.
Mon classeur comporte plusieurs onglets, et je souhaite masquer
certains éléments (barres d'outils dans cet exemple) sur des onglets
précis (pas tous, ce qui m'empêche de mettre cette procédure dans
ThisWorkbook). Je rencontre les problèmes suivants :
Macro dans une feuille :
1° - ça fonctionne tant que je reste dans le même classeur, les
barres d'outil disparaissent de cette feuille, et réapparaissent
quand j'en sélectionne une autre.
2° - ça ne fonctionne plus quand 2 classeurs sont ouverts et que je
passe de l'un à l'autre.
Macro dans plusieurs feuilles :
3° - ça ne fonctionne plus.

Les questions que je me pose peuvent vous apparaitre basiques, et je
m'en excuse, mais comment s'enchainent les
activations-désactivations de feuilles ?
Passer d'une feuille à une autre feuille, ou à la feuille d'un autre
classeur, n'est-ce pas désactitvation de l'ancienne feuille, puis
activation d'une nouvelle?

Merci d'avance de tout éclaircissement que vous voudrez bien
m'apporter.




Avatar
Patrick BASTARD
re- Bonjour, *anonymousA* .

En fin de compte, et si j'ai bien compris,
- je définis la liste des feuilles concernées comme une nouvelle classe -
collection-
- et je peux affecter, par exemple, des procédures événementielles à cette
collection ?

C'est ce que j'ai cru comprendre en lisant -en diagonale-la définition de
Laurent 4 pen sur Excelabo et de Daniel MAHER dans son classeur
moduleclasse.xls, téléchargé au même endroit (merci à eux deux, et bien sûr
à misange).

Il me reste un jour de RTT et le WE pour assimiler tout ça.

Encore merci pour ta piste.

PS: anonymousA et anomymousA sont ils une seule et même personne ?

--
Bien cordialement,
P. Bastard



bonjour,

visiblement non. Passer d'une feuille à une autre c'est bien
désactiver la 1ere pour activer l'autre quand l'évenement se produit
dans le même classeur.
Quand on passe d'une feuille d'un classeur à une autre feuille d'un
autre classeur ou d'une fenêtre à une autre dans un même classeur
p.e ces sont les evenements workbook_Deactivate ou Window_Deactivate
qui ont lieu ( d'ailleurs le 2eme avant le 1er très exactement si on
change de classeur et qu'on a mis un Window_Deactivate et un
workbook_Deactivate).
Le + simple pour résoudre ton problème est sans doute d'utiliser un
module de classe dans lequel tu déclarerais dans des evemements
d'application , tes modifications de barre d'outils. Pour ce faire,
il te faudra bien sur discriminer sur quels fichiers et/ou quelles
feuilles ( par workbooks("X").name et sheets("X").name ou
activeworkbook et activesheet) tu veux que s'appliquent tes
evenements.
je pense que tu sais construire un module de classe comme celui-ci
mais si ce n'est pas le cas, reviens sur le forum ou va sur Excelabo.
Il me semble qu'il y a au moins 1 exemple.

Enfin, je n'ai peut-être pas compris ta demande mais si c'est le cas,
je pense que tu me le feras savoir.

A+


Bonjour à tous.

Toujours dans mes procédures événementielles, j'ai un soucis pour
adapter la macro de Pierre (en fin de message) à mon cas.
Mon classeur comporte plusieurs onglets, et je souhaite masquer
certains éléments (barres d'outils dans cet exemple) sur des onglets
précis (pas tous, ce qui m'empêche de mettre cette procédure dans
ThisWorkbook). Je rencontre les problèmes suivants :
Macro dans une feuille :
1° - ça fonctionne tant que je reste dans le même classeur, les
barres d'outil disparaissent de cette feuille, et réapparaissent
quand j'en sélectionne une autre.
2° - ça ne fonctionne plus quand 2 classeurs sont ouverts et que je
passe de l'un à l'autre.
Macro dans plusieurs feuilles :
3° - ça ne fonctionne plus.

Les questions que je me pose peuvent vous apparaitre basiques, et je
m'en excuse, mais comment s'enchainent les
activations-désactivations de feuilles ?
Passer d'une feuille à une autre feuille, ou à la feuille d'un autre
classeur, n'est-ce pas désactitvation de l'ancienne feuille, puis
activation d'une nouvelle?

Merci d'avance de tout éclaircissement que vous voudrez bien
m'apporter.






Avatar
Patrick BASTARD
Oupps !!!
Merci de lire Denis Michon, et non pas Daniel MAHER.
Je me suis trompé de pointure...
;-)

Patrick.


re- Bonjour, *anonymousA* .

En fin de compte, et si j'ai bien compris,
- je définis la liste des feuilles concernées comme une nouvelle
classe - collection-
- et je peux affecter, par exemple, des procédures événementielles à
cette collection ?

C'est ce que j'ai cru comprendre en lisant -en diagonale-la
définition de Laurent 4 pen sur Excelabo et de Daniel MAHER dans son
classeur moduleclasse.xls, téléchargé au même endroit (merci à eux
deux, et bien sûr à misange).

Il me reste un jour de RTT et le WE pour assimiler tout ça.

Encore merci pour ta piste.

PS: anonymousA et anomymousA sont ils une seule et même personne ?




bonjour,

visiblement non. Passer d'une feuille à une autre c'est bien
désactiver la 1ere pour activer l'autre quand l'évenement se produit
dans le même classeur.
Quand on passe d'une feuille d'un classeur à une autre feuille d'un
autre classeur ou d'une fenêtre à une autre dans un même classeur
p.e ces sont les evenements workbook_Deactivate ou Window_Deactivate
qui ont lieu ( d'ailleurs le 2eme avant le 1er très exactement si on
change de classeur et qu'on a mis un Window_Deactivate et un
workbook_Deactivate).
Le + simple pour résoudre ton problème est sans doute d'utiliser un
module de classe dans lequel tu déclarerais dans des evemements
d'application , tes modifications de barre d'outils. Pour ce faire,
il te faudra bien sur discriminer sur quels fichiers et/ou quelles
feuilles ( par workbooks("X").name et sheets("X").name ou
activeworkbook et activesheet) tu veux que s'appliquent tes
evenements.
je pense que tu sais construire un module de classe comme celui-ci
mais si ce n'est pas le cas, reviens sur le forum ou va sur
Excelabo. Il me semble qu'il y a au moins 1 exemple.

Enfin, je n'ai peut-être pas compris ta demande mais si c'est le
cas, je pense que tu me le feras savoir.

A+


Bonjour à tous.

Toujours dans mes procédures événementielles, j'ai un soucis pour
adapter la macro de Pierre (en fin de message) à mon cas.
Mon classeur comporte plusieurs onglets, et je souhaite masquer
certains éléments (barres d'outils dans cet exemple) sur des
onglets précis (pas tous, ce qui m'empêche de mettre cette
procédure dans ThisWorkbook). Je rencontre les problèmes suivants :
Macro dans une feuille :
1° - ça fonctionne tant que je reste dans le même classeur, les
barres d'outil disparaissent de cette feuille, et réapparaissent
quand j'en sélectionne une autre.
2° - ça ne fonctionne plus quand 2 classeurs sont ouverts et que je
passe de l'un à l'autre.
Macro dans plusieurs feuilles :
3° - ça ne fonctionne plus.

Les questions que je me pose peuvent vous apparaitre basiques, et
je m'en excuse, mais comment s'enchainent les
activations-désactivations de feuilles ?
Passer d'une feuille à une autre feuille, ou à la feuille d'un
autre classeur, n'est-ce pas désactitvation de l'ancienne feuille,
puis activation d'une nouvelle?

Merci d'avance de tout éclaircissement que vous voudrez bien
m'apporter.








Avatar
anonymousA
oui, c'est bien la même personne. j'ai du me planter une fois sur la
définition de mon nom d'emprunt.

Bon, pour ce qui est de ton problème: si je t'ai proposé un module de
classe , c'est qeu l'avantage quand on a déclaré un objet Application
c'est que celui-ci peut s'appliquer à tout ce qui est ouvert dans la
session Excel en cours. Par exemple:
Dans un module de classe ( que tu crées par Insertion/Module de
Classe)que tu appelleras p.e AppEventClass tu écris:

Public WithEvents Appl As Application

Private Sub Appl_SheetActivate(ByVal Sh As Object)

'cette procédure permet lors de l'activation de n'importe quelle feuille
de n'importe
'quel classeur en cours de faire quelque chose que tu auras décidé, p.e
'ici t'envoyer un message "Bonjour"
'tu peux discriminer les fichiers ou/et les feuilles sur lesquelles tu
'vas interagir
'p.e, je décide que l'evenement SheetActivate ne sera déclenché que
'sur le fichier qui s'appelle BASTARD et sur la feuille qui s'appelle
'Patrick. En conséquence je vais écrire


set wbk ¬tiveworkbook
Set Sh = ActiveWorkbook.ActiveSheet

if wbk.name="BASTARD" and sh.name="Patrick" then

msgbox "Bonjour"

end if

End Sub

A partir du moment où dans le module de classe tu as fait "pointer" Appl
comme un objet application, tu peux utiliser toutes les méthodes
evenementielles qui s'y référencent ( donc les mêmes que tu porrrrais
trouver dans le module Thisworkbook d'un fichier classique). L'interet
du module de classe c'est que ces procédures s'appliquent à l'ensemble
de la collection des workbooks ouverts dans la session.Il n'est donc pas
nécessaire de définir une nouvelle collection de quoique ce soit. Excel
reconnait qu'il existe une collection de workbooks et une collection de
sheets dans chaque workbook.

et dans un module standard du même fichier tu écris

Dim ApplicationClass As New AppEventClass

Private Sub Workbook_Open()


Set ApplicationClass.Appl = Application

End Sub


Je ne sais pas si j'ai été bien clair ? si non, à ta dispo pour des
explications complémentaires sur un sujet dont je reconnais qu'il est un
des + difficiles.

A+

re- Bonjour, *anonymousA* .

En fin de compte, et si j'ai bien compris,
- je définis la liste des feuilles concernées comme une nouvelle classe -
collection-
- et je peux affecter, par exemple, des procédures événementielles à cette
collection ?

C'est ce que j'ai cru comprendre en lisant -en diagonale-la définition de
Laurent 4 pen sur Excelabo et de Daniel MAHER dans son classeur
moduleclasse.xls, téléchargé au même endroit (merci à eux deux, et bien sûr
à misange).

Il me reste un jour de RTT et le WE pour assimiler tout ça.

Encore merci pour ta piste.

PS: anonymousA et anomymousA sont ils une seule et même personne ?



Avatar
Patrick BASTARD
Bonjour, *anonymousA*
J'ai lu ton post 4214fb7b$0$854$
avec le plus grand intéret :

Deux mots me viennent immédiatement à l'esprit : Limpide et Magistral.

J'ai hâte de tester, et si j'ai un problème, je reviens te voir, ainsi que
tu me l'as si aimablement proposé.

Mille mercis

--
Bien cordialement,
P. Bastard


oui, c'est bien la même personne. j'ai du me planter une fois sur la
définition de mon nom d'emprunt.

Bon, pour ce qui est de ton problème: si je t'ai proposé un module de
classe , c'est qeu l'avantage quand on a déclaré un objet Application
c'est que celui-ci peut s'appliquer à tout ce qui est ouvert dans la
session Excel en cours. Par exemple:
Dans un module de classe ( que tu crées par Insertion/Module de
Classe)que tu appelleras p.e AppEventClass tu écris:

Public WithEvents Appl As Application

Private Sub Appl_SheetActivate(ByVal Sh As Object)

'cette procédure permet lors de l'activation de n'importe quelle
feuille de n'importe
'quel classeur en cours de faire quelque chose que tu auras décidé,
p.e 'ici t'envoyer un message "Bonjour"
'tu peux discriminer les fichiers ou/et les feuilles sur lesquelles tu
'vas interagir
'p.e, je décide que l'evenement SheetActivate ne sera déclenché que
'sur le fichier qui s'appelle BASTARD et sur la feuille qui s'appelle
'Patrick. En conséquence je vais écrire


set wbk ¬tiveworkbook
Set Sh = ActiveWorkbook.ActiveSheet

if wbk.name="BASTARD" and sh.name="Patrick" then

msgbox "Bonjour"

end if

End Sub

A partir du moment où dans le module de classe tu as fait "pointer"
Appl comme un objet application, tu peux utiliser toutes les méthodes
evenementielles qui s'y référencent ( donc les mêmes que tu porrrrais
trouver dans le module Thisworkbook d'un fichier classique). L'interet
du module de classe c'est que ces procédures s'appliquent à l'ensemble
de la collection des workbooks ouverts dans la session.Il n'est donc
pas nécessaire de définir une nouvelle collection de quoique ce soit.
Excel reconnait qu'il existe une collection de workbooks et une
collection de sheets dans chaque workbook.

et dans un module standard du même fichier tu écris

Dim ApplicationClass As New AppEventClass

Private Sub Workbook_Open()


Set ApplicationClass.Appl = Application

End Sub


Je ne sais pas si j'ai été bien clair ? si non, à ta dispo pour des
explications complémentaires sur un sujet dont je reconnais qu'il est
un des + difficiles.

A+

re- Bonjour, *anonymousA* .

En fin de compte, et si j'ai bien compris,
- je définis la liste des feuilles concernées comme une nouvelle
classe - collection-
- et je peux affecter, par exemple, des procédures événementielles
à cette collection ?

C'est ce que j'ai cru comprendre en lisant -en diagonale-la
définition de Laurent 4 pen sur Excelabo et de Daniel MAHER dans son
classeur moduleclasse.xls, téléchargé au même endroit (merci à eux
deux, et bien sûr à misange).

Il me reste un jour de RTT et le WE pour assimiler tout ça.

Encore merci pour ta piste.

PS: anonymousA et anomymousA sont ils une seule et même personne ?




Avatar
Patrick BASTARD
Re-Bonjour, *anonymousA*

Si je puis me permettre d'abuser :

http://cjoint.com/?crwTspKvZQ

Je ne vois pas où j'ai pêché :-(

si tu avais une minute supplémentaire à m'accorder ?

--
Bien cordialement,
P. Bastard

oui, c'est bien la même personne. j'ai du me planter une fois sur la
définition de mon nom d'emprunt.

Bon, pour ce qui est de ton problème: si je t'ai proposé un module de
classe , c'est qeu l'avantage quand on a déclaré un objet Application
c'est que celui-ci peut s'appliquer à tout ce qui est ouvert dans la
session Excel en cours. Par exemple:
Dans un module de classe ( que tu crées par Insertion/Module de
Classe)que tu appelleras p.e AppEventClass tu écris:

Public WithEvents Appl As Application

Private Sub Appl_SheetActivate(ByVal Sh As Object)

'cette procédure permet lors de l'activation de n'importe quelle
feuille de n'importe
'quel classeur en cours de faire quelque chose que tu auras décidé,
p.e 'ici t'envoyer un message "Bonjour"
'tu peux discriminer les fichiers ou/et les feuilles sur lesquelles tu
'vas interagir
'p.e, je décide que l'evenement SheetActivate ne sera déclenché que
'sur le fichier qui s'appelle BASTARD et sur la feuille qui s'appelle
'Patrick. En conséquence je vais écrire


set wbk ¬tiveworkbook
Set Sh = ActiveWorkbook.ActiveSheet

if wbk.name="BASTARD" and sh.name="Patrick" then

msgbox "Bonjour"

end if

End Sub

A partir du moment où dans le module de classe tu as fait "pointer"
Appl comme un objet application, tu peux utiliser toutes les méthodes
evenementielles qui s'y référencent ( donc les mêmes que tu porrrrais
trouver dans le module Thisworkbook d'un fichier classique). L'interet
du module de classe c'est que ces procédures s'appliquent à l'ensemble
de la collection des workbooks ouverts dans la session.Il n'est donc
pas nécessaire de définir une nouvelle collection de quoique ce soit.
Excel reconnait qu'il existe une collection de workbooks et une
collection de sheets dans chaque workbook.

et dans un module standard du même fichier tu écris

Dim ApplicationClass As New AppEventClass

Private Sub Workbook_Open()


Set ApplicationClass.Appl = Application

End Sub


Je ne sais pas si j'ai été bien clair ? si non, à ta dispo pour des
explications complémentaires sur un sujet dont je reconnais qu'il est
un des + difficiles.

A+

re- Bonjour, *anonymousA* .

En fin de compte, et si j'ai bien compris,
- je définis la liste des feuilles concernées comme une nouvelle
classe - collection-
- et je peux affecter, par exemple, des procédures événementielles
à cette collection ?

C'est ce que j'ai cru comprendre en lisant -en diagonale-la
définition de Laurent 4 pen sur Excelabo et de Daniel MAHER dans son
classeur moduleclasse.xls, téléchargé au même endroit (merci à eux
deux, et bien sûr à misange).

Il me reste un jour de RTT et le WE pour assimiler tout ça.

Encore merci pour ta piste.

PS: anonymousA et anomymousA sont ils une seule et même personne ?




Avatar
anonymousA
re,

c'est moi qui m'excuse. c'est sur que si je ne donne pas le bon nom (
qui n'est pas BASTARD bien sur mais BASTARD.xls, ca va déjà beaucoup
mieux.J'en ai profité pour te rajouter le même genre de proc pour
l'evenement activate et pour simplifier le code en fonction des
paramètres par défaut (Sh dans Appl_SheetActivate et Wb dans
Appl_WorkbookActivate).
Par ailleurs, le fait de rajouter la proc sur l'evenement
workbookActivate permet aussi à l'ouverture du fichier BASTARD de tester
le coté actif de la feuille Patrick ce que ne peut faire l'evenement
SheetActivate si jamais le classeur s'ouvre sur la feuille Patrick qui
était active lors de la dernière fermeture.

A mettre dans le module de classe :

Public WithEvents Appl As Application
Private Sub Appl_SheetActivate(ByVal Sh As Object)

Set wbk = ActiveWorkbook
If wbk.Name = "BASTARD.xls" And Sh.Name = "Patrick" Then
MsgBox "Bonjour"
End If

End Sub


Private Sub Appl_WorkbookActivate(ByVal Wb As Workbook)

Set Sh = Wb.ActiveSheet
If Wb.Name = "BASTARD.xls" And Sh.Name = "Patrick" Then
MsgBox "Bonjour"
End If

End Sub

Peux te garantir que ca fonctionne. Mais en info ?

A+


Re-Bonjour, *anonymousA*

Si je puis me permettre d'abuser :

http://cjoint.com/?crwTspKvZQ

Je ne vois pas où j'ai pêché :-(

si tu avais une minute supplémentaire à m'accorder ?



Avatar
Patrick BASTARD
Bonjour, *anonymousA*
J'ai lu ton post 421532f3$0$823$
avec le plus grand intéret :

Ben décidément, c'est pas ça qu'est ça.
où cloche-je ?

http://cjoint.com/?csmNSvvdt3



re,

c'est moi qui m'excuse. c'est sur que si je ne donne pas le bon nom (
qui n'est pas BASTARD bien sur mais BASTARD.xls, ca va déjà beaucoup
mieux.J'en ai profité pour te rajouter le même genre de proc pour
l'evenement activate et pour simplifier le code en fonction des
paramètres par défaut (Sh dans Appl_SheetActivate et Wb dans
Appl_WorkbookActivate).
Par ailleurs, le fait de rajouter la proc sur l'evenement
workbookActivate permet aussi à l'ouverture du fichier BASTARD de
tester le coté actif de la feuille Patrick ce que ne peut faire
l'evenement SheetActivate si jamais le classeur s'ouvre sur la
feuille Patrick qui était active lors de la dernière fermeture.

A mettre dans le module de classe :

Public WithEvents Appl As Application
Private Sub Appl_SheetActivate(ByVal Sh As Object)

Set wbk = ActiveWorkbook
If wbk.Name = "BASTARD.xls" And Sh.Name = "Patrick" Then
MsgBox "Bonjour"
End If

End Sub


Private Sub Appl_WorkbookActivate(ByVal Wb As Workbook)

Set Sh = Wb.ActiveSheet
If Wb.Name = "BASTARD.xls" And Sh.Name = "Patrick" Then
MsgBox "Bonjour"
End If

End Sub

Peux te garantir que ca fonctionne. Mais en info ?

A+


Re-Bonjour, *anonymousA*

Si je puis me permettre d'abuser :

http://cjoint.com/?crwTspKvZQ

Je ne vois pas où j'ai pêché :-(

si tu avais une minute supplémentaire à m'accorder ?




Avatar
anonymousA
ben d'abord parce que le Private Sub Workbook_Open doit être mis dans
thisworkbook si tu veux qu'il se déclenche à l'ouverture.
Ce n'est pas une Auto_Open que personnellement je n'emploie qu rarement.

A+

Bonjour, *anonymousA*
J'ai lu ton post 421532f3$0$823$
avec le plus grand intéret :

Ben décidément, c'est pas ça qu'est ça.
où cloche-je ?

http://cjoint.com/?csmNSvvdt3




re,

c'est moi qui m'excuse. c'est sur que si je ne donne pas le bon nom (
qui n'est pas BASTARD bien sur mais BASTARD.xls, ca va déjà beaucoup
mieux.J'en ai profité pour te rajouter le même genre de proc pour
l'evenement activate et pour simplifier le code en fonction des
paramètres par défaut (Sh dans Appl_SheetActivate et Wb dans
Appl_WorkbookActivate).
Par ailleurs, le fait de rajouter la proc sur l'evenement
workbookActivate permet aussi à l'ouverture du fichier BASTARD de
tester le coté actif de la feuille Patrick ce que ne peut faire
l'evenement SheetActivate si jamais le classeur s'ouvre sur la
feuille Patrick qui était active lors de la dernière fermeture.

A mettre dans le module de classe :

Public WithEvents Appl As Application
Private Sub Appl_SheetActivate(ByVal Sh As Object)

Set wbk = ActiveWorkbook
If wbk.Name = "BASTARD.xls" And Sh.Name = "Patrick" Then
MsgBox "Bonjour"
End If

End Sub


Private Sub Appl_WorkbookActivate(ByVal Wb As Workbook)

Set Sh = Wb.ActiveSheet
If Wb.Name = "BASTARD.xls" And Sh.Name = "Patrick" Then
MsgBox "Bonjour"
End If

End Sub

Peux te garantir que ca fonctionne. Mais en info ?

A+



Re-Bonjour, *anonymousA*

Si je puis me permettre d'abuser :

http://cjoint.com/?crwTspKvZQ

Je ne vois pas où j'ai pêché :-(

si tu avais une minute supplémentaire à m'accorder ?









1 2