je repose ma question, si quelqu'un connaissait la réponse...:
J'ai plusieurs feuilles : .xls et .graph (14) dans mon classeur
je voudrai, quand j'appelle une feuille, qu'elle ait la cellule A1 en haut à
gauche... sinon elle se présente n'importe comment..
j'ai appliqué range("A1").select dans sheet-activate mais
ça se mélange avec mes macros qui l'activent parfois et ça crée des
erreurs...
j'ai découvert APPLICATION.ONWINDOW qui se tait pendant l'exécution des
macros mais je ne sais pas m'en servir
dans thisworkbook j'écris
Privatesub workbook_sheetActivate (byval Sh as object)
thisworkbook.windows(sh).onwindow = "ma-macro"
end sub
sub mamacro () (dans une module stanadard)
range("A1").select (show ne donne rien ... excel 97)
end sub
et windows(sh)... crée une erreur, je ne sais pas me servir de (byval Sh as
objet) surement...
Qui sera assez sympa de m'expliquer ce qu'il faut écrire
Ce que je t'ai indiqué hier fonctionnerait si tu écrivais au début dans les macros qui parfois ( si je comprends bien) doivent activer tes feuilles Application.enableeventsúlse puis à l'issue de ces mêmes macros Application.enableevents=true.
il est exact que la selection d'une feuille par une macro déclenche l'évenement Activate de celle-ci , ce que ne fait effectivement pas Onsheetactivate plutot que onwindow d'ailleurs(quoique !) . Ces propriétés d'evenement datent d'Excel5 et ont depuis été remplacées par les evenements que tu peux connaitre. Mais ils marchent toujours effectivement. si tu veux absolument utiliser Onsheetactivate , il faut savoir que cette méthode s'applique à toutes les feuilles et pas uniquement à l'une d'entre elles. Il faut donc discriminer la feuille par son nom p.e (quoique je te conseille plutot son codename que son nom )
la proc ci-dessous est à mettre dans le module thisworkbook et la procédure WBActivateHandler dans un module standard. Cette dernière procédure contiendrait range("A1").activate
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Feuil1" Then ThisWorkbook.OnSheetActivate = "WBActivateHandler" Else ThisWorkbook.OnSheetActivate = "" End If
End Sub
A+
AndréSch wrote:
bonjour à tous
je repose ma question, si quelqu'un connaissait la réponse...:
J'ai plusieurs feuilles : .xls et .graph (14) dans mon classeur je voudrai, quand j'appelle une feuille, qu'elle ait la cellule A1 en hau t à gauche... sinon elle se présente n'importe comment..
j'ai appliqué range("A1").select dans sheet-activate mais ça se mélange avec mes macros qui l'activent parfois et ça crée d es erreurs...
j'ai découvert APPLICATION.ONWINDOW qui se tait pendant l'exécution d es macros mais je ne sais pas m'en servir
dans thisworkbook j'écris
Privatesub workbook_sheetActivate (byval Sh as object) thisworkbook.windows(sh).onwindow = "ma-macro" end sub
sub mamacro () (dans une module stanadard) range("A1").select (show ne donne rien ... excel 97) end sub
et windows(sh)... crée une erreur, je ne sais pas me servir de (byval S h as objet) surement...
Qui sera assez sympa de m'expliquer ce qu'il faut écrire
merci d'avance
André
Ce que je t'ai indiqué hier fonctionnerait si tu écrivais au début
dans les macros qui parfois ( si je comprends bien) doivent activer tes
feuilles
Application.enableevents=false puis à l'issue de ces mêmes macros
Application.enableevents=true.
il est exact que la selection d'une feuille par une macro déclenche
l'évenement Activate de celle-ci , ce que ne fait effectivement pas
Onsheetactivate plutot que onwindow d'ailleurs(quoique !) . Ces
propriétés d'evenement datent d'Excel5 et ont depuis été
remplacées par les evenements que tu peux connaitre. Mais ils marchent
toujours effectivement.
si tu veux absolument utiliser Onsheetactivate , il faut savoir que
cette méthode s'applique à toutes les feuilles et pas uniquement à
l'une d'entre elles. Il faut donc discriminer la feuille par son nom
p.e (quoique je te conseille plutot son codename que son nom )
la proc ci-dessous est à mettre dans le module thisworkbook et la
procédure WBActivateHandler dans un module standard. Cette dernière
procédure contiendrait range("A1").activate
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Feuil1" Then
ThisWorkbook.OnSheetActivate = "WBActivateHandler"
Else
ThisWorkbook.OnSheetActivate = ""
End If
End Sub
A+
AndréSch wrote:
bonjour à tous
je repose ma question, si quelqu'un connaissait la réponse...:
J'ai plusieurs feuilles : .xls et .graph (14) dans mon classeur
je voudrai, quand j'appelle une feuille, qu'elle ait la cellule A1 en hau t à
gauche... sinon elle se présente n'importe comment..
j'ai appliqué range("A1").select dans sheet-activate mais
ça se mélange avec mes macros qui l'activent parfois et ça crée d es
erreurs...
j'ai découvert APPLICATION.ONWINDOW qui se tait pendant l'exécution d es
macros mais je ne sais pas m'en servir
dans thisworkbook j'écris
Privatesub workbook_sheetActivate (byval Sh as object)
thisworkbook.windows(sh).onwindow = "ma-macro"
end sub
sub mamacro () (dans une module stanadard)
range("A1").select (show ne donne rien ... excel 97)
end sub
et windows(sh)... crée une erreur, je ne sais pas me servir de (byval S h as
objet) surement...
Qui sera assez sympa de m'expliquer ce qu'il faut écrire
Ce que je t'ai indiqué hier fonctionnerait si tu écrivais au début dans les macros qui parfois ( si je comprends bien) doivent activer tes feuilles Application.enableeventsúlse puis à l'issue de ces mêmes macros Application.enableevents=true.
il est exact que la selection d'une feuille par une macro déclenche l'évenement Activate de celle-ci , ce que ne fait effectivement pas Onsheetactivate plutot que onwindow d'ailleurs(quoique !) . Ces propriétés d'evenement datent d'Excel5 et ont depuis été remplacées par les evenements que tu peux connaitre. Mais ils marchent toujours effectivement. si tu veux absolument utiliser Onsheetactivate , il faut savoir que cette méthode s'applique à toutes les feuilles et pas uniquement à l'une d'entre elles. Il faut donc discriminer la feuille par son nom p.e (quoique je te conseille plutot son codename que son nom )
la proc ci-dessous est à mettre dans le module thisworkbook et la procédure WBActivateHandler dans un module standard. Cette dernière procédure contiendrait range("A1").activate
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Feuil1" Then ThisWorkbook.OnSheetActivate = "WBActivateHandler" Else ThisWorkbook.OnSheetActivate = "" End If
End Sub
A+
AndréSch wrote:
bonjour à tous
je repose ma question, si quelqu'un connaissait la réponse...:
J'ai plusieurs feuilles : .xls et .graph (14) dans mon classeur je voudrai, quand j'appelle une feuille, qu'elle ait la cellule A1 en hau t à gauche... sinon elle se présente n'importe comment..
j'ai appliqué range("A1").select dans sheet-activate mais ça se mélange avec mes macros qui l'activent parfois et ça crée d es erreurs...
j'ai découvert APPLICATION.ONWINDOW qui se tait pendant l'exécution d es macros mais je ne sais pas m'en servir
dans thisworkbook j'écris
Privatesub workbook_sheetActivate (byval Sh as object) thisworkbook.windows(sh).onwindow = "ma-macro" end sub
sub mamacro () (dans une module stanadard) range("A1").select (show ne donne rien ... excel 97) end sub
et windows(sh)... crée une erreur, je ne sais pas me servir de (byval S h as objet) surement...
Qui sera assez sympa de m'expliquer ce qu'il faut écrire