OVH Cloud OVH Cloud

macro "privative" HELP !!!

8 réponses
Avatar
j-pascal
Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un affichage en plein
écran.
Problème : alors que ce classeur est encore ouvert, un autre fichier se met
également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte aucun autre
classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub pleinEcran"
en pensant "privatiser" la procédure, ce qui me donne :

Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai antérieur
Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment appelle-t-on
une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre classeur alors
qu'aucune "Sub" n'est commune ?

8 réponses

Avatar
lSteph
Bonsoir "j-pascal",

macro "privative" HELP !!


AMHA Private ou Public n'ont rien à y voir...

Le plein écran est dévolu à l'écran (depuis l'application)
et pas exclusivement à un classeur!
Tu dis bien
Application.DisplayFullScreen = True
et non pas
activeworkbook.DisplayFullScreen = True

a+

lSteph

"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un affichage en
plein écran.
Problème : alors que ce classeur est encore ouvert, un autre fichier se
met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte aucun
autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me donne :

Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai antérieur
Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment appelle-t-on
une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre classeur alors
qu'aucune "Sub" n'est commune ?


Avatar
RV
Bonsoir Jean-Pascal,
Tu ne peux pas renommer l'évènement d'un UserForm, ton code doit être celui
ci (UserForm renommé ou non)

Private Sub UserForm_Click()
Call PleinEcran
Unload UserForm (ou encore Unload Me)
End Sub


Le fait de privatiser la procédure permet de ne pas l'afficher dans la
fenêtre outils/macro/macros.
Si tu affiches Excel en plein écran, je doute fort que tu puisses ouvrir un
second classeur avec un autre environnement.
C'est plutôt du tout ou rien: soit tu es en plein écran soit tu ne l'es pas.
Après tu peux jouer sur l'ouverture de la fenêtre: réduit, normal, ou maxi

ActiveWindow.WindowState = xlNormal '(ou en xlMaximized; ou encore en
xlMinimized)

Je ne sais pas si je réponds correctement à tes questions, mais voilà ce que
je pense savoir.
Cordialement
RV

"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un affichage en
plein écran.
Problème : alors que ce classeur est encore ouvert, un autre fichier se
met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte aucun
autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me donne :

Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai antérieur
Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment appelle-t-on
une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre classeur alors
qu'aucune "Sub" n'est commune ?


Avatar
j-pascal
Bonsoir lSteph,

Tu veux dire que si je tape : activeworkbook.DisplayFullScreen = True ça
résoud le pb ?
Pourtant, si je change d'application, le second classeur (que je ne veux
absolument pas en plein écran !) sera alors le "classeur actif", non ?
J'avoue ne pas comprendre ! Que puis-je faire pour que ma procédure
plein-écran ne s'exécute que dans un classeur donné ?

Merci d'avance pour ton aide;

JP

wrote:
Bonsoir "j-pascal",

macro "privative" HELP !!


AMHA Private ou Public n'ont rien à y voir...

Le plein écran est dévolu à l'écran (depuis l'application)
et pas exclusivement à un classeur!
Tu dis bien
Application.DisplayFullScreen = True
et non pas
activeworkbook.DisplayFullScreen = True

a+

lSteph

"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un affichage
en plein écran.
Problème : alors que ce classeur est encore ouvert, un autre fichier
se met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte aucun
autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me donne :

Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai
antérieur Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment
appelle-t-on une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre classeur
alors qu'aucune "Sub" n'est commune ?




Avatar
lSteph
Tu veux dire que si je tape : activeworkbook.DisplayFullScreen = True


Non , je veux dire exactement le contraire,
(que ceci ne va précisément pas: "activeworkbook.DisplayFullScreen ")

c'est à dire que l'affichage en plein écran
n'est pas une propriété de Workbook mais de Application.

Tu peux toutefois utiliser les évenements de ton Thisworkbook pour modifier
l'affichage.
Selon ce que tu veux faire plus précisément et qui ne m'apparaît pas
forcément limpide
quand au but de la manoeuvre par rapport aux autres classeurs , quoiqu'il en
soit s'agirait dselon toute hypothèse de
Activate, ou Open et/ou Deactivate ou before_close

Private Sub Workbook_Activate()
Application.DisplayFullScreen = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Deactivate()
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub


'lSteph



"j-pascal" a écrit dans le message de news:

Bonsoir lSteph,

Tu veux dire que si je tape : activeworkbook.DisplayFullScreen = True ça
résoud le pb ?
Pourtant, si je change d'application, le second classeur (que je ne veux
absolument pas en plein écran !) sera alors le "classeur actif", non ?
J'avoue ne pas comprendre ! Que puis-je faire pour que ma procédure
plein-écran ne s'exécute que dans un classeur donné ?

Merci d'avance pour ton aide;

JP

wrote:
Bonsoir "j-pascal",

macro "privative" HELP !!


AMHA Private ou Public n'ont rien à y voir...

Le plein écran est dévolu à l'écran (depuis l'application)
et pas exclusivement à un classeur!
Tu dis bien
Application.DisplayFullScreen = True
et non pas
activeworkbook.DisplayFullScreen = True

a+

lSteph

"j-pascal" a écrit dans le message de news:

Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un affichage
en plein écran.
Problème : alors que ce classeur est encore ouvert, un autre fichier
se met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte aucun
autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me donne :

Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai
antérieur Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment
appelle-t-on une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre classeur
alors qu'aucune "Sub" n'est commune ?







Avatar
j-pascal
Bonsoir lSteph,

En fait, j'ai essayé (au boulot) le "activeworkbook.DisplalyFullScreen" pour
constater, comme tu le dis ici, que ça ne marche pas !

J'ai bien compris que l'affichage plein écran est une propriété de
"Application" (grâce à tes explications) et qu'elle affecte Excel, quelque
soit l'application lancée.

Deux cas de figure :
1 - L'application n° 1 (celle qui contient la macro "plein écran") est
lancée en premier. A la fermeture de l'application, le plein écran est
annulé donc tout va bien.
2 - Un classeur Excel lamba (n° 2) est ouvert avant le classeur n° 2. Si
j'ouvre le classeur n° 1, le classeur n° 2 se met en plein écran ! Pb :
aucune procédure n'est prévue à l'intérieur de ce dernier classeur pour
annuler le plein écran !

Solution (?) : A l'ouverture du classeur n° 1, il faudrait une macro qui me
donne la liste des classeurs ouverts et me propose de les fermer !
L'hypothèse que l'on ouvre un classeur n° 2 après avoir ouvert le classeur
n° 1 est plus exceptionnel dans la mesure où par définition, en mode plein
écran il n'est pas "évident" d'ouvrir un second classeur ...

A+ ?

JP


wrote:
Tu veux dire que si je tape : activeworkbook.DisplayFullScreen > True
Non , je veux dire exactement le contraire,

(que ceci ne va précisément pas: "activeworkbook.DisplayFullScreen ")

c'est à dire que l'affichage en plein écran
n'est pas une propriété de Workbook mais de Application.

Tu peux toutefois utiliser les évenements de ton Thisworkbook pour
modifier l'affichage.
Selon ce que tu veux faire plus précisément et qui ne m'apparaît pas
forcément limpide
quand au but de la manoeuvre par rapport aux autres classeurs ,
quoiqu'il en soit s'agirait dselon toute hypothèse de
Activate, ou Open et/ou Deactivate ou before_close

Private Sub Workbook_Activate()
Application.DisplayFullScreen = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Deactivate()
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub


'lSteph



"j-pascal" a écrit dans le message de news:

Bonsoir lSteph,

Tu veux dire que si je tape : activeworkbook.DisplayFullScreen >> True ça résoud le pb ?
Pourtant, si je change d'application, le second classeur (que je ne
veux absolument pas en plein écran !) sera alors le "classeur
actif", non ? J'avoue ne pas comprendre ! Que puis-je faire pour que
ma procédure plein-écran ne s'exécute que dans un classeur donné ?

Merci d'avance pour ton aide;

JP

wrote:
Bonsoir "j-pascal",

macro "privative" HELP !!


AMHA Private ou Public n'ont rien à y voir...

Le plein écran est dévolu à l'écran (depuis l'application)
et pas exclusivement à un classeur!
Tu dis bien
Application.DisplayFullScreen = True
et non pas
activeworkbook.DisplayFullScreen = True

a+

lSteph

"j-pascal" a écrit dans le message de
news:
Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un affichage
en plein écran.
Problème : alors que ce classeur est encore ouvert, un autre
fichier se met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte
aucun autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me donne :

Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai
antérieur Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment
appelle-t-on une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre classeur
alors qu'aucune "Sub" n'est commune ?








Avatar
lSteph
Re,
Lis mon précédent post jusqu'au bout, je t'y propose une solution
qui fait que seul le classeur contenant ces quatres procédures reste en
plein écran.

Cordialement.

lSteph


"j-pascal" a écrit dans le message de news:
eL$
Bonsoir lSteph,

En fait, j'ai essayé (au boulot) le "activeworkbook.DisplalyFullScreen"
pour constater, comme tu le dis ici, que ça ne marche pas !

J'ai bien compris que l'affichage plein écran est une propriété de
"Application" (grâce à tes explications) et qu'elle affecte Excel, quelque
soit l'application lancée.

Deux cas de figure :
1 - L'application n° 1 (celle qui contient la macro "plein écran") est
lancée en premier. A la fermeture de l'application, le plein écran est
annulé donc tout va bien.
2 - Un classeur Excel lamba (n° 2) est ouvert avant le classeur n° 2. Si
j'ouvre le classeur n° 1, le classeur n° 2 se met en plein écran ! Pb :
aucune procédure n'est prévue à l'intérieur de ce dernier classeur pour
annuler le plein écran !

Solution (?) : A l'ouverture du classeur n° 1, il faudrait une macro qui
me donne la liste des classeurs ouverts et me propose de les fermer !
L'hypothèse que l'on ouvre un classeur n° 2 après avoir ouvert le classeur
n° 1 est plus exceptionnel dans la mesure où par définition, en mode plein
écran il n'est pas "évident" d'ouvrir un second classeur ...

A+ ?

JP


wrote:
Tu veux dire que si je tape : activeworkbook.DisplayFullScreen >> True
Non , je veux dire exactement le contraire,

(que ceci ne va précisément pas: "activeworkbook.DisplayFullScreen ")

c'est à dire que l'affichage en plein écran
n'est pas une propriété de Workbook mais de Application.

Tu peux toutefois utiliser les évenements de ton Thisworkbook pour
modifier l'affichage.
Selon ce que tu veux faire plus précisément et qui ne m'apparaît pas
forcément limpide
quand au but de la manoeuvre par rapport aux autres classeurs ,
quoiqu'il en soit s'agirait dselon toute hypothèse de
Activate, ou Open et/ou Deactivate ou before_close

Private Sub Workbook_Activate()
Application.DisplayFullScreen = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Deactivate()
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub


'lSteph



"j-pascal" a écrit dans le message de news:

Bonsoir lSteph,

Tu veux dire que si je tape : activeworkbook.DisplayFullScreen >>> True ça résoud le pb ?
Pourtant, si je change d'application, le second classeur (que je ne
veux absolument pas en plein écran !) sera alors le "classeur
actif", non ? J'avoue ne pas comprendre ! Que puis-je faire pour que
ma procédure plein-écran ne s'exécute que dans un classeur donné ?

Merci d'avance pour ton aide;

JP

wrote:
Bonsoir "j-pascal",

macro "privative" HELP !!


AMHA Private ou Public n'ont rien à y voir...

Le plein écran est dévolu à l'écran (depuis l'application)
et pas exclusivement à un classeur!
Tu dis bien
Application.DisplayFullScreen = True
et non pas
activeworkbook.DisplayFullScreen = True

a+

lSteph

"j-pascal" a écrit dans le message de
news:
Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un affichage
en plein écran.
Problème : alors que ce classeur est encore ouvert, un autre
fichier se met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte
aucun autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me donne :

Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai
antérieur Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment
appelle-t-on une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre classeur
alors qu'aucune "Sub" n'est commune ?











Avatar
j-pascal
RE,

J'ai relu ton précédent message jusqu'au bout, mais je ne suis pas sûr d'en
saisir toute la subtilité (je suis néophyte +++).
Je ne sais pas si je me suis bien expliqué : je ne souhaite pas ajouter de
nouvelle procédure aux classeurs autres que celui qui possède ma macro de
plein écran ! Cette appli est destinée à mes collaborateurs et je ne suis
pas "maître" des classeurs qu'ils peuvent ouvrir !
Est-ce que l'idée (que je n'ai pas encore eu le temps de creuser) d'afficher
les autres classeurs ouverts par une macro contenue dans mon appli "plein
écran" est saugrenue ? Je précise (!!) que le "plein écran" lancé par cette
macro n'est pas le seul but de la macro, il sert juste à améliorer la
visibilité de ladite application - j'insiste, ce n'est pas une macro pour
générer des "plein écran" à droite et à gauche !

Cordialement,

JP

lSteph wrote:
Re,
Lis mon précédent post jusqu'au bout, je t'y propose une solution
qui fait que seul le classeur contenant ces quatres procédures reste
en plein écran.

Cordialement.

lSteph


"j-pascal" a écrit dans le message de news:
eL$
Bonsoir lSteph,

En fait, j'ai essayé (au boulot) le
"activeworkbook.DisplalyFullScreen" pour constater, comme tu le dis
ici, que ça ne marche pas ! J'ai bien compris que l'affichage plein écran
est une propriété de
"Application" (grâce à tes explications) et qu'elle affecte Excel,
quelque soit l'application lancée.

Deux cas de figure :
1 - L'application n° 1 (celle qui contient la macro "plein écran")
est lancée en premier. A la fermeture de l'application, le plein
écran est annulé donc tout va bien.
2 - Un classeur Excel lamba (n° 2) est ouvert avant le classeur n°
2. Si j'ouvre le classeur n° 1, le classeur n° 2 se met en plein
écran ! Pb : aucune procédure n'est prévue à l'intérieur de ce
dernier classeur pour annuler le plein écran !

Solution (?) : A l'ouverture du classeur n° 1, il faudrait une macro
qui me donne la liste des classeurs ouverts et me propose de les
fermer ! L'hypothèse que l'on ouvre un classeur n° 2 après avoir
ouvert le classeur n° 1 est plus exceptionnel dans la mesure où par
définition, en mode plein écran il n'est pas "évident" d'ouvrir un
second classeur ... A+ ?

JP


wrote:
Tu veux dire que si je tape : activeworkbook.DisplayFullScreen >>> True
Non , je veux dire exactement le contraire,

(que ceci ne va précisément pas: "activeworkbook.DisplayFullScreen
") c'est à dire que l'affichage en plein écran
n'est pas une propriété de Workbook mais de Application.

Tu peux toutefois utiliser les évenements de ton Thisworkbook pour
modifier l'affichage.
Selon ce que tu veux faire plus précisément et qui ne m'apparaît pas
forcément limpide
quand au but de la manoeuvre par rapport aux autres classeurs ,
quoiqu'il en soit s'agirait dselon toute hypothèse de
Activate, ou Open et/ou Deactivate ou before_close

Private Sub Workbook_Activate()
Application.DisplayFullScreen = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Deactivate()
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub


'lSteph



"j-pascal" a écrit dans le message de
news:
Bonsoir lSteph,

Tu veux dire que si je tape : activeworkbook.DisplayFullScreen >>>> True ça résoud le pb ?
Pourtant, si je change d'application, le second classeur (que je ne
veux absolument pas en plein écran !) sera alors le "classeur
actif", non ? J'avoue ne pas comprendre ! Que puis-je faire pour
que ma procédure plein-écran ne s'exécute que dans un classeur
donné ? Merci d'avance pour ton aide;

JP

wrote:
Bonsoir "j-pascal",

macro "privative" HELP !!


AMHA Private ou Public n'ont rien à y voir...

Le plein écran est dévolu à l'écran (depuis l'application)
et pas exclusivement à un classeur!
Tu dis bien
Application.DisplayFullScreen = True
et non pas
activeworkbook.DisplayFullScreen = True

a+

lSteph

"j-pascal" a écrit dans le message de
news:
Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un
affichage en plein écran.
Problème : alors que ce classeur est encore ouvert, un autre
fichier se met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte
aucun autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me
donne : Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai
antérieur Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment
appelle-t-on une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre
classeur alors qu'aucune "Sub" n'est commune ?












Avatar
lSteph
Bonjour,

voici un classeur exemple du code donné plus haut.
http://cjoint.com/?gCimOsMRmd

lSteph

"j-pascal" a écrit dans le message de news:
u%
RE,

J'ai relu ton précédent message jusqu'au bout, mais je ne suis pas sûr
d'en saisir toute la subtilité (je suis néophyte +++).
Je ne sais pas si je me suis bien expliqué : je ne souhaite pas ajouter de
nouvelle procédure aux classeurs autres que celui qui possède ma macro de
plein écran ! Cette appli est destinée à mes collaborateurs et je ne suis
pas "maître" des classeurs qu'ils peuvent ouvrir !
Est-ce que l'idée (que je n'ai pas encore eu le temps de creuser)
d'afficher les autres classeurs ouverts par une macro contenue dans mon
appli "plein écran" est saugrenue ? Je précise (!!) que le "plein écran"
lancé par cette macro n'est pas le seul but de la macro, il sert juste à
améliorer la visibilité de ladite application - j'insiste, ce n'est pas
une macro pour générer des "plein écran" à droite et à gauche !

Cordialement,

JP

lSteph wrote:
Re,
Lis mon précédent post jusqu'au bout, je t'y propose une solution
qui fait que seul le classeur contenant ces quatres procédures reste
en plein écran.

Cordialement.

lSteph


"j-pascal" a écrit dans le message de news:
eL$
Bonsoir lSteph,

En fait, j'ai essayé (au boulot) le
"activeworkbook.DisplalyFullScreen" pour constater, comme tu le dis
ici, que ça ne marche pas ! J'ai bien compris que l'affichage plein
écran est une propriété de
"Application" (grâce à tes explications) et qu'elle affecte Excel,
quelque soit l'application lancée.

Deux cas de figure :
1 - L'application n° 1 (celle qui contient la macro "plein écran")
est lancée en premier. A la fermeture de l'application, le plein
écran est annulé donc tout va bien.
2 - Un classeur Excel lamba (n° 2) est ouvert avant le classeur n°
2. Si j'ouvre le classeur n° 1, le classeur n° 2 se met en plein
écran ! Pb : aucune procédure n'est prévue à l'intérieur de ce
dernier classeur pour annuler le plein écran !

Solution (?) : A l'ouverture du classeur n° 1, il faudrait une macro
qui me donne la liste des classeurs ouverts et me propose de les
fermer ! L'hypothèse que l'on ouvre un classeur n° 2 après avoir
ouvert le classeur n° 1 est plus exceptionnel dans la mesure où par
définition, en mode plein écran il n'est pas "évident" d'ouvrir un
second classeur ... A+ ?

JP


wrote:
Tu veux dire que si je tape : activeworkbook.DisplayFullScreen >>>> True
Non , je veux dire exactement le contraire,

(que ceci ne va précisément pas: "activeworkbook.DisplayFullScreen
") c'est à dire que l'affichage en plein écran
n'est pas une propriété de Workbook mais de Application.

Tu peux toutefois utiliser les évenements de ton Thisworkbook pour
modifier l'affichage.
Selon ce que tu veux faire plus précisément et qui ne m'apparaît pas
forcément limpide
quand au but de la manoeuvre par rapport aux autres classeurs ,
quoiqu'il en soit s'agirait dselon toute hypothèse de
Activate, ou Open et/ou Deactivate ou before_close

Private Sub Workbook_Activate()
Application.DisplayFullScreen = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Deactivate()
Application.DisplayFullScreen = False
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub


'lSteph



"j-pascal" a écrit dans le message de
news:
Bonsoir lSteph,

Tu veux dire que si je tape : activeworkbook.DisplayFullScreen >>>>> True ça résoud le pb ?
Pourtant, si je change d'application, le second classeur (que je ne
veux absolument pas en plein écran !) sera alors le "classeur
actif", non ? J'avoue ne pas comprendre ! Que puis-je faire pour
que ma procédure plein-écran ne s'exécute que dans un classeur
donné ? Merci d'avance pour ton aide;

JP

wrote:
Bonsoir "j-pascal",

macro "privative" HELP !!


AMHA Private ou Public n'ont rien à y voir...

Le plein écran est dévolu à l'écran (depuis l'application)
et pas exclusivement à un classeur!
Tu dis bien
Application.DisplayFullScreen = True
et non pas
activeworkbook.DisplayFullScreen = True

a+

lSteph

"j-pascal" a écrit dans le message de
news:
Bonjour,

J'ai un classeur dans lequel il y a une procédure pour un
affichage en plein écran.
Problème : alors que ce classeur est encore ouvert, un autre
fichier se met également en plein écran !!!
Je souhaite "privatiser" cette procédure afin qu'elle n'affecte
aucun autre classeur.

Dans le code du userform, j'ai :

Private Sub Plein_Ecran_Click()
Call PleinEcran
Unload UserForm1
End Sub


Dans le module, j'ai remplacé "Sub pleinEcran" par "private sub
pleinEcran" en pensant "privatiser" la procédure, ce qui me
donne : Option Explicit

Private Sub PleinEcran()
Application.ScreenUpdating = False
Dim I As Variant

Application.DisplayAlerts = False
For I = 1 To Worksheets.Count
Sheets(I).Select
Application.DisplayFullScreen = True 'procédure idem à essai
antérieur Application.CommandBars(1).Enabled = False
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Zoom = 100
End With
Next I
'Application.DisplayAlerts = True
Sheets("page d'accueil").Select
Application.ScreenUpdating = True
End Sub


Lorsque je lance le "plein écran" depuis le UF, j'ai le message :

"Erreur de compilation:
Sub ou Function non définie"

Question : faut-il "privatiser" comme ceci ? Si oui, comment
appelle-t-on une procédure "private sub" avec "call" ?
Dois-je mettre le code dans "this workbook" ?

Un grand grand grand merci d'avance pour vos réponses ...

JP

PS : pourquoi une telle macro peut-elle affecter un autre
classeur alors qu'aucune "Sub" n'est commune ?