XL 2019 Problème avec Application.DisplayFullScreen = true

pat66

XLDnaute Impliqué
Bonjour le forum,

je rencontre une difficulté avec Application.DisplayFullScreen = true,

lorsque j'ouvre un autre classeur en même temps, Application.DisplayFullScreen = false, fonctionne tout va bien grâce à Deactivate

Mais lorsque j'ai fermé le classeur qui contient les macros ci dessous, les autres classeurs s'ouvrent quand même en plein écran, du fait que before close n'enregistre pas les changements, peut on faire en sorte que le classeurs qui s'ouvrent après, ne s'ouvrent pas en plein écran ?

J'ai bien essayé en mettant Application.DisplayFullScreen = false après ThisWorkbook.Saved = true,
mais alors il me demande d'enregistrer les modifications , ce que je ne souhaite pas

merci beaucoup

dans
Code:
Sub Workbook_Activate()
Application.DisplayFullScreen = true
end sub

Code:
Sub Workbook_Deactivate()
Application.DisplayFullScreen = false
end sub

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.DisplayFullScreen = false
  ThisWorkbook.Saved = true
End Sub
 
Dernière édition:
Solution
Bonsoir le forum, voici la solution à mon problème grâce à votre aide

Souhaitez vous fermer ce classeur

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim ret As Integer
    ret = MsgBox("Souhaitez vous fermer ce classeur ?", vbYesNo + vbInformation)
    If ret = vbNo Then
        Cancel = True
    Else
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Application.CommandBars("Ply").Enabled = -True
    Application.CommandBars("Cell").Enabled = True
    Application.CellDragAndDrop = True
    Application.DisplayFullScreen = False
    Application.ScreenUpdating = False
    Application.EnableEvents = True
    Application.DisplayAlerts = True...

pat66

XLDnaute Impliqué
Bonjour,

Si j'ai bien compris avec ThisWorkbook.Saved = True ou ThisWorkbook.Close SaveChanges:=False, impossible de lui demander quoi que ce soit à la fermeture, et c'est logique !!

Donc pas d'espoir pour solutionner mon problème pour les classeurs que je dois ouvrir après celui là !
mais pourquoi alors que je n'ai rien précisé dans workbook open, cela influe sur les classeurs que j'ouvrent après ?

N'y a t'il pas la possibilité de remplacer "Application" par "this workbook" ou "this worksheet" ?

Peut être activer Application.DisplayFullScreen sur la feuille directement ?
Si oui le problème reste entier pour afficher la page d'accueil en plein écran !

merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Pat, Patrick,
En PJ une solution capillotractée.
1- On interdit toute fermeture de fichier.
2- Un bouton spécifique QUIT autorise une sortie.
Avec dans Thisworkbook :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If FlagFerme = 1 Then   ' Fermeture autorisée, donc on ferme
        Cancel = False
        ActiveWorkbook.Close SaveChanges:=False
        Exit Sub
    End If
    Cancel = True
    If IsError(Application.Caller) Then
            MsgBox "Utilisez le bouton QUIT pour sortir."   ' Si pas d'appui sur bouton
            Exit Sub
    ElseIf Application.Caller <> "BoutonQuit" Then          ' Si appui sur un autre bouton que QUIT
            MsgBox "Utilisez le bouton QUIT pour sortir."
            Exit Sub
    End If
End Sub
et deux macros pour mettre plein écran, et pour sortir en retirant le plein écran :
Code:
Public FlagFerme ' FlagFerme vaut 1 si on a le droit de fermer le fichier
Sub FullScreen()
    PleinEcran = Application.DisplayFullScreen
    Application.DisplayFullScreen = True
End Sub
Sub Sortir()
    ThisWorkbook.Activate
    FlagFerme = 1
    Application.DisplayFullScreen = False
    ActiveWorkbook.Close False
End Sub
Evidemment à bien analyser car c'est toujours compliqué d'interdire une fermeture. ( plantage, macro déficiente:) ... )
Mais au moins pour le fun ça marche.
 

Pièces jointes

  • Workbook_BeforeClose.xlsm
    15.4 KB · Affichages: 2

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je précise tout de suite que je n'ai pas de solution à apporter, mais seulement une question pour essayer de comprendre le comportement attendu.

Si oui le problème reste entier pour afficher la page d'accueil en plein écran !
Pourquoi désires-tu que se soit un classeur que tu viens de fermer qui conditionne l'affichage "non plein écran" du prochain classeur que tu ouvriras, et non directement le classeur lui-même ?

Ça veut dire qu'un classeur A va se fermer et que le prochain classeur (B) va forcément s'ouvrir en mode "non plein écran", mais si tu n'as pas fermé A alors B va s'ouvrir en plein écran ???
Étrange quand même. Non ? 🤔
 

patricktoulon

XLDnaute Barbatruc
re
il faut bien saisir une chose
tout ce qui est "Application.property ou .membre agit sur l'instance de l'application donc toutes les fenêtres de tout les classeurs ouverts dans cet instance subissent la modification
il est bien évident que pour piloter (un fulscreen changeant selon le classeur) cela doit se faire dans le activate et déactivate du classeur macro mais dès que celui ci est fermé, on a plus la main sur le switch fullscreen
a moins que le code soit dans un complément mais ca peut vite devenir une torture de l'esprit ce truc
WRONG WAY!!!
 

pat66

XLDnaute Impliqué
Bonsoir le forum, voici la solution à mon problème grâce à votre aide

Souhaitez vous fermer ce classeur

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim ret As Integer
    ret = MsgBox("Souhaitez vous fermer ce classeur ?", vbYesNo + vbInformation)
    If ret = vbNo Then
        Cancel = True
    Else
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Application.CommandBars("Ply").Enabled = -True
    Application.CommandBars("Cell").Enabled = True
    Application.CellDragAndDrop = True
    Application.DisplayFullScreen = False
    Application.ScreenUpdating = False
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    ThisWorkbook.Saved = True
    End If
End Sub
 

Discussions similaires

Réponses
2
Affichages
344

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou