XL 2016 Masquer barres, entêtes, quadrillage et onglets

Fat

XLDnaute Nouveau
Bonjour tout le monde,

Je cherche la macro qui me permet de masquer :
- la barre d'état
- la barre de formule
- les entêtes des lignes et des colonnes
- le quadrillage
- les onglets (j'en ai 60) à l'exception de l'onglet "O" qui contient le menu (ouverture des onglets masqués par lien hypertexte)

Avec ça, mon fichier va se transformer en "application" verrouillée à l'exception des plages autorisées.
Mes tentatives avec VBA sont restées partielles du fait de mon tout petit niveau en macros.

Avec votre aide, petit oiseau deviendra (peut être) grand !
Merci d'avance pour votre contribution
Cordialement
Fat
 
Solution
bonjour
voici le code
si tu préfère avec caption bloque les ligne avec les étoile et débloque celles qui sont bloqué sinon comme tel
VB:
'Public FullScr As Boolean
'Private Sub Workbook_WindowResize(ByVal Wn As Window)    'si on utilise pas d'api
'If FullScr Then If Application.WindowState <> xlMaximized Then fullscreenX
'End Sub
Public Sub fullscreenX()
    Sheets("O").Activate
    With Application
        .WindowState = xlMaximized
        .DisplayFormulaBar = False       ' Masquer barre de formule
        .DisplayStatusBar = False        ' Masque barre status
        .DisplayScrollBars = False
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", false)" '***********
        '.DisplayFullScreen = True        ' Full screen...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Fat,
Vous pouvez masquer tous les noms d'onglets et ne travailler que par liens hypertextes pour accéder à des feuilles.
En PJ un ex avec dans Thisworkbook :
VB:
Private Sub Workbook_Open()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = False    ' Masquer nom onglets
    Application.DisplayFormulaBar = False       ' Masquer barre de formule
    Application.DisplayFullScreen = True        ' Full screen
    Application.DisplayStatusBar = False        ' Masque barre status
    ActiveWindow.DisplayHeadings = False        ' Masque quadrillage
End Sub
... et son antidote pour pouvoir travailler plus tranquille, dans Module1 :
Code:
Private Sub ToutVisible()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = True
    Application.DisplayFormulaBar = True
    Application.DisplayFullScreen = False
    Application.DisplayStatusBar = True
    ActiveWindow.DisplayHeadings = True
End Sub
 

Pièces jointes

  • Masquage.xlsm
    20.7 KB · Affichages: 31

patricktoulon

XLDnaute Barbatruc
re
bonsoir
le problème avec l'app.display fullscreen=True, c'est que l'on peu le déjouer de 36 manières différentes
pour citer les plus simple
  • avec simplement la touche esc pour 2007 et 2010
  • simplement un double click sur la barre de titreen haut
  • et plus récemment sur les versions 2013 et plus avec une combinaison de touche CTRL+F1
  • le bouton dans le menu click droit sur cell"fermer le plein ecran"
  • et j'en passe et des meilleures
donc déjà
VB:
Public FullScr As Boolean
Private Sub Workbook_WindowResize(ByVal Wn As Window)
If FullScr Then If Application.WindowState <> xlMaximized Then fullscreenX
End Sub

Public Sub fullscreenX()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = False    ' Masquer nom onglets
    Application.DisplayFormulaBar = False       ' Masquer barre de formule
    Application.DisplayFullScreen = True        ' Full screen
    Application.DisplayStatusBar = False        ' Masque barre status
    ActiveWindow.DisplayHeadings = False        ' Masque quadrillage
    Application.OnKey "{ESC}", ""               'bloque la touche esc
    With Application.CommandBars("Cell"): .Controls(26).Enabled = False: End With 'bloque le bouton du menu contextuel "fermer le lein ecran"
ThisWorkbook.FullScr = True ' la variable FullScr est positionnée a true
End Sub

Public Sub windoWX()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = True
    Application.DisplayFormulaBar = True
    Application.DisplayFullScreen = False
    Application.DisplayStatusBar = True
    ActiveWindow.DisplayHeadings = True
    Application.OnKey "{ESC}"
    With Application.CommandBars("Cell"): .Controls(26).Enabled = True: End With
ThisWorkbook.FullScr = False
End Sub
une variable booléenne est valorisée true quand on met fullscreenx ou false quand on se remet en mode fentre
j'ai donc ajouté l'events window_resize le rapel de fullscreenX si la variable est a true

pour l'exemple j'ai placé deux boutons dans la feuille
VB:
Private Sub CommandButton1_Click()
ThisWorkbook.fullscreenX
End Sub

Private Sub CommandButton2_Click()
ThisWorkbook.windoWX
End Sub

j'ai bien sur une autre méthode qui ne peut être déjouée si ça vous intéresse
 

Fat

XLDnaute Nouveau
re
bonsoir
le problème avec l'app.display fullscreen=True, c'est que l'on peu le déjouer de 36 manières différentes
pour citer les plus simple
  • avec simplement la touche esc pour 2007 et 2010
  • simplement un double click sur la barre de titreen haut
  • et plus récemment sur les versions 2013 et plus avec une combinaison de touche CTRL+F1
  • le bouton dans le menu click droit sur cell"fermer le plein ecran"
  • et j'en passe et des meilleures
donc déjà
VB:
Public FullScr As Boolean
Private Sub Workbook_WindowResize(ByVal Wn As Window)
If FullScr Then If Application.WindowState <> xlMaximized Then fullscreenX
End Sub

Public Sub fullscreenX()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = False    ' Masquer nom onglets
    Application.DisplayFormulaBar = False       ' Masquer barre de formule
    Application.DisplayFullScreen = True        ' Full screen
    Application.DisplayStatusBar = False        ' Masque barre status
    ActiveWindow.DisplayHeadings = False        ' Masque quadrillage
    Application.OnKey "{ESC}", ""               'bloque la touche esc
    With Application.CommandBars("Cell"): .Controls(26).Enabled = False: End With 'bloque le bouton du menu contextuel "fermer le lein ecran"
ThisWorkbook.FullScr = True ' la variable FullScr est positionnée a true
End Sub

Public Sub windoWX()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = True
    Application.DisplayFormulaBar = True
    Application.DisplayFullScreen = False
    Application.DisplayStatusBar = True
    ActiveWindow.DisplayHeadings = True
    Application.OnKey "{ESC}"
    With Application.CommandBars("Cell"): .Controls(26).Enabled = True: End With
ThisWorkbook.FullScr = False
End Sub
une variable booléenne est valorisée true quand on met fullscreenx ou false quand on se remet en mode fentre
j'ai donc ajouté l'events window_resize le rapel de fullscreenX si la variable est a true

pour l'exemple j'ai placé deux boutons dans la feuille
VB:
Private Sub CommandButton1_Click()
ThisWorkbook.fullscreenX
End Sub

Private Sub CommandButton2_Click()
ThisWorkbook.windoWX
End Sub

j'ai bien sur une autre méthode qui ne peut être déjouée si ça vous intéresse
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[Pour infos]
Fat¸ faisant confiance “à tort” à notre bon vieil Excel à dit:
Avec ça, mon fichier va se transformer en "application" verrouillée à l'exception des plages autorisées.
Tout utilisateur d'Excel "prudent" ouvre toujours les classeurs (sauf les siens) sans activer les macros.
Partant de là, le verrou sera toujours un verrou de "pacotille"
Il est bon de le savoir avant de diffuser son appli en dehors des clusters (mot à la mode ces temps-ci) de son disque dur.
Désolé pour la désillusion.
;)
[Pour infos]
 

patricktoulon

XLDnaute Barbatruc
re
il y a la technique du vbs aussi qui est pas mal sauf si application vba déactivé intégralement
il faudrait que je teste
j'avais la technique du raccourci mais je ne la trouve plus

après c'est juste une perte de temps pour celui qui voudrais trifouiller dans vbe
donc toujours bon a prendre dans un contexte de sécurité limité à ce que ça vaut bien sur
 

Staple1600

XLDnaute Barbatruc
Bonjour patrick

Mon cartouche précisait [Pour infos]
Et sans parler de trifouillage, pourquoi diffuser à un tiers un classeur pour utilisation en limitant les fonctionnalités de l'interface d'Excel?

[opinion personnelle qui n'engage que moi si j'étais moi]
Je suis sur mon PC et j'aspire à utiliser mon Excel pleinement et librement.
Si je reçois un classeur qui touche à mon environnement habituel
(puisque j'ouvre toujours sans activer les macros), je mets en commentaire tout code "coercitif".
Personne touche à ma barre de formule, palsambleu !
;)
[/opinion personnelle qui n'engage que moi si j'étais moi]
 

Fat

XLDnaute Nouveau
re
bonsoir
le problème avec l'app.display fullscreen=True, c'est que l'on peu le déjouer de 36 manières différentes
pour citer les plus simple
  • avec simplement la touche esc pour 2007 et 2010
  • simplement un double click sur la barre de titreen haut
  • et plus récemment sur les versions 2013 et plus avec une combinaison de touche CTRL+F1
  • le bouton dans le menu click droit sur cell"fermer le plein ecran"
  • et j'en passe et des meilleures
donc déjà
VB:
Public FullScr As Boolean
Private Sub Workbook_WindowResize(ByVal Wn As Window)
If FullScr Then If Application.WindowState <> xlMaximized Then fullscreenX
End Sub

Public Sub fullscreenX()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = False    ' Masquer nom onglets
    Application.DisplayFormulaBar = False       ' Masquer barre de formule
    Application.DisplayFullScreen = True        ' Full screen
    Application.DisplayStatusBar = False        ' Masque barre status
    ActiveWindow.DisplayHeadings = False        ' Masque quadrillage
    Application.OnKey "{ESC}", ""               'bloque la touche esc
    With Application.CommandBars("Cell"): .Controls(26).Enabled = False: End With 'bloque le bouton du menu contextuel "fermer le lein ecran"
ThisWorkbook.FullScr = True ' la variable FullScr est positionnée a true
End Sub

Public Sub windoWX()
    Sheets("O").Activate
    ActiveWindow.DisplayWorkbookTabs = True
    Application.DisplayFormulaBar = True
    Application.DisplayFullScreen = False
    Application.DisplayStatusBar = True
    ActiveWindow.DisplayHeadings = True
    Application.OnKey "{ESC}"
    With Application.CommandBars("Cell"): .Controls(26).Enabled = True: End With
ThisWorkbook.FullScr = False
End Sub
une variable booléenne est valorisée true quand on met fullscreenx ou false quand on se remet en mode fentre
j'ai donc ajouté l'events window_resize le rapel de fullscreenX si la variable est a true

pour l'exemple j'ai placé deux boutons dans la feuille
VB:
Private Sub CommandButton1_Click()
ThisWorkbook.fullscreenX
End Sub

Private Sub CommandButton2_Click()
ThisWorkbook.windoWX
End Sub

j'ai bien sur une autre méthode qui ne peut être déjouée si ça vous intéresse
Merci à vous pour votre contribution.
La méthode indéjouable m’intéresse bien sûr.
Bonne soirée !
 

patricktoulon

XLDnaute Barbatruc
bonjour
voici le code
si tu préfère avec caption bloque les ligne avec les étoile et débloque celles qui sont bloqué sinon comme tel
VB:
'Public FullScr As Boolean
'Private Sub Workbook_WindowResize(ByVal Wn As Window)    'si on utilise pas d'api
'If FullScr Then If Application.WindowState <> xlMaximized Then fullscreenX
'End Sub
Public Sub fullscreenX()
    Sheets("O").Activate
    With Application
        .WindowState = xlMaximized
        .DisplayFormulaBar = False       ' Masquer barre de formule
        .DisplayStatusBar = False        ' Masque barre status
        .DisplayScrollBars = False
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", false)" '***********
        '.DisplayFullScreen = True        ' Full screen
        '.CommandBars ("Cell"): .Controls(26).Enabled = False: End With   'bloque le bouton du menu contextuel "fermer le lein ecran"
        '.OnKey "{ESC}", ""               'bloque la touche esc
        'ThisWorkbook.FullScr = True    ' la variable FullScr est positionnée a true
    End With
    With ActiveWindow
        .DisplayHeadings = False        ' Masque quadrillage
        .DisplayWorkbookTabs = False    ' Masquer nom onglets
    End With
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & Application.hwnd & ", " & -16 & ", " & &H94080080 & ")") '***********
   End Sub
Public Sub windoWX()
    Sheets("O").Activate
    With ActiveWindow
        .DisplayHeadings = True
        .DisplayWorkbookTabs = True
    End With
    With Application
        .WindowState = xlNormal
        .DisplayFormulaBar = True
        .DisplayStatusBar = True
        .DisplayScrollBars = True
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", true)" '***********
        '.DisplayFullScreen = False
        '.OnKey "{ESC}"
        '.CommandBars("Cell").Controls(26).Enabled = True
        'ThisWorkbook.FullScr = False
    End With
     ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJ""," & Application.hwnd & ", " & -16 & ", " & &H94CF7080 & ")") '***********
End Sub
 

Sacha1980

XLDnaute Nouveau
bonjour
voici le code
si tu préfère avec caption bloque les ligne avec les étoile et débloque celles qui sont bloqué sinon comme tel
VB:
'Public FullScr As Boolean
'Private Sub Workbook_WindowResize(ByVal Wn As Window)    'si on utilise pas d'api
'If FullScr Then If Application.WindowState <> xlMaximized Then fullscreenX
'End Sub
Public Sub fullscreenX()
    Sheets("O").Activate
    With Application
        .WindowState = xlMaximized
        .DisplayFormulaBar = False       ' Masquer barre de formule
        .DisplayStatusBar = False        ' Masque barre status
        .DisplayScrollBars = False
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", false)" '***********
        '.DisplayFullScreen = True        ' Full screen
        '.CommandBars ("Cell"): .Controls(26).Enabled = False: End With   'bloque le bouton du menu contextuel "fermer le lein ecran"
        '.OnKey "{ESC}", ""               'bloque la touche esc
        'ThisWorkbook.FullScr = True    ' la variable FullScr est positionnée a true
    End With
    With ActiveWindow
        .DisplayHeadings = False        ' Masque quadrillage
        .DisplayWorkbookTabs = False    ' Masquer nom onglets
    End With
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & Application.hwnd & ", " & -16 & ", " & &H94080080 & ")") '***********
   End Sub
Public Sub windoWX()
    Sheets("O").Activate
    With ActiveWindow
        .DisplayHeadings = True
        .DisplayWorkbookTabs = True
    End With
    With Application
        .WindowState = xlNormal
        .DisplayFormulaBar = True
        .DisplayStatusBar = True
        .DisplayScrollBars = True
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", true)" '***********
        '.DisplayFullScreen = False
        '.OnKey "{ESC}"
        '.CommandBars("Cell").Controls(26).Enabled = True
        'ThisWorkbook.FullScr = False
    End With
     ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJ""," & Application.hwnd & ", " & -16 & ", " & &H94CF7080 & ")") '***********
End Sub
Hello,

J'ai essayé le code, mais je rencontre un souci !

En effet, je suis obligé de mettre la feuille Accueil en dernière position si je souhaite que celle-ci soit sélectionnée en première à l'ouverture du classeur, même si enregistrer à partir d'une autre feuille sur le même classeur.

Je remarque, que sur toutes les feuilles, le quadrillage reste actif.
Je remarque qu'il y a uniquement la feuille Accueil ou l'en-tête est désactivé. À noter que si par exemple je mettais une autre feuille en dernière position dans le code, c'est celle-ci qui aura plus l'en-tête ! Comme si seule la dernière page positionnée en dernier dans le code était active pour ce point-là en tout cas.

Est-ce qu'il y aurait une solution ?

Merci.

Voici le code que j'ai placé dans workbook_open

Note que j'ai collé le ribbon en true pour voir si les options décrites dans le code se désactivaient
.
VB:
Private Sub Workbook_Open()

Worksheets("Accueil").Protect Contents:=True, Password:="1213", UserInterfaceOnly:=True
Worksheets("Collections").Protect Contents:=True, Password:="1213", UserInterfaceOnly:=True
Worksheets("Récompenses").Protect Contents:=True, Password:="1213", UserInterfaceOnly:=True
Worksheets("Cadeaux Friendiums").Protect Contents:=True, Password:="1213", UserInterfaceOnly:=True
'Option du ruban
Sheets("Collections").Activate
Sheets("Récompenses").Activate
Sheets("Cadeaux Friendiums").Activate
Sheets("Accueil").Activate
    With Application
        .WindowState = xlMaximized
        .DisplayFormulaBar = False       ' Masquer barre de formule
        .DisplayStatusBar = False        ' Masque barre status
        .DisplayScrollBars = False
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", true)" '***********
        '.DisplayFullScreen = True        ' Full screen
        '.CommandBars ("Cell"): .Controls(26).Enabled = False: End With   'bloque le bouton du menu contextuel "fermer le lein ecran"
        '.OnKey "{ESC}", ""               'bloque la touche esc
        'ThisWorkbook.FullScr = True    ' la variable FullScr est positionnée a true
    End With
    With ActiveWindow
        .DisplayHeadings = False        ' Masque quadrillage
        .DisplayWorkbookTabs = False    ' Masquer nom onglets
    End With
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & Application.Hwnd & ", " & -16 & ", " & &H94080080 & ")") '***********
End Sub
 

Statistiques des forums

Discussions
314 644
Messages
2 111 529
Membres
111 189
dernier inscrit
Laurent.