OVH Cloud OVH Cloud

application.onwindow

1 réponse
Avatar
AndréSch
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 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

merci d'avance

André

1 réponse

Avatar
anonymousA
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é