Masquer grilles et en-têtes sur toutes les feuilles

titymax

XLDnaute Occasionnel
Bonjour à tous,

J'ai réalisé un menu dans le style du fichier joint, avec un Togglebutton qui me permet de masquer/afficher les éléments suivants :
- les onglets
- la grille
- les en-têtes de lignes et de colonnes
- l'ascenseur vertical

Lorsque je clique sur ce Togglebutton je souhaite donc masquer ou réafficher tous les éléments listés ci-dessus sur l'ensemble des feuilles.

Or, ce n'est pas le cas, il n'y a que sur la feuille "menu" que tout fonctionne bien, sur les autres il n'y a que l'ascenseur vertical qui disparait.

Quelle est la modification qu'il faut apporter au code pour que cela fonctionne bien ?

Merci

A bientôt
 

Pièces jointes

  • Masquer onglets-grilles.xls
    47.5 KB · Affichages: 154

Papou-net

XLDnaute Barbatruc
Re : Masquer grilles et en-têtes sur toutes les feuilles

Bonjour titymax,

Modifies ton code comme ceci :

Code:
Private Sub ToggleButton1_Click()
Application.ScreenUpdating = False
If ActiveWindow.DisplayWorkbookTabs = False Then
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayVerticalScrollBar = True
For Each sh In ActiveWorkbook.Sheets
  sh.Activate
  ActiveWindow.DisplayHeadings = True
  ActiveWindow.DisplayGridlines = True
Next
Feuil1.Activate
ToggleButton1.Caption = "MASQUER LES ONGLETS"
Else
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayVerticalScrollBar = False
For Each sh In ActiveWorkbook.Sheets
  sh.Activate
  ActiveWindow.DisplayHeadings = False
  ActiveWindow.DisplayGridlines = False
Next
Feuil1.Activate
ToggleButton1.Caption = "AFFICHER LES ONGLETS"
End If
Application.ScreenUpdating = True
End Sub

Espérant t'avoir aidé.

Cordialement.
 

Staple1600

XLDnaute Barbatruc
Re : Masquer grilles et en-têtes sur toutes les feuilles

Bonsoir


On peut aussi alléger ainsi
On lance une fois : on masque
On lance une deuxième fois: on démasque

VB:
Sub masque_demasque()
Dim sh As Worksheet
Application.ScreenUpdating = False
ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
ActiveWindow.DisplayVerticalScrollBar = Not ActiveWindow.DisplayVerticalScrollBar
For Each sh In ActiveWorkbook.Sheets
  sh.Activate
  ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadings
  ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines
Next
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Masquer grilles et en-têtes sur toutes les feuilles

Bonsoir


On peut aussi alléger ainsi
On lance une fois : on masque
On lance une deuxième fois: on démasque

Code:
Sub masque_demasque()
Dim sh As Worksheet
Application.ScreenUpdating = False
ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
ActiveWindow.DisplayVerticalScrollBar = Not ActiveWindow.DisplayVerticalScrollBar
For Each sh In ActiveWorkbook.Sheets
  sh.Activate
  ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadings
  ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines
Next
Application.ScreenUpdating = True
End Sub

Bonsoir Staple,

Mais c'est bien sûr. Que n'y ai-je pas pensé moi-même ?

Cordialement.
 

titymax

XLDnaute Occasionnel
Re : Masquer grilles et en-têtes sur toutes les feuilles

Bonjour à tous et meilleurs voeux !!!

Je relance ce sujet, car j'aimerais savoir comment modifier le code pour masquer/afficher également la barre de formule.

Merci à tous

Bonne journée.
 

Staple1600

XLDnaute Barbatruc
Re : Masquer grilles et en-têtes sur toutes les feuilles

Bonjour à tous

En ajoutant ceci
VB:
Sub masque_demasqueII()
Dim sh As Worksheet
Application.ScreenUpdating = False
ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
ActiveWindow.DisplayVerticalScrollBar = Not ActiveWindow.DisplayVerticalScrollBar
ActiveWindow.DisplayHorizontalScrollBar = Not ActiveWindow.DisplayHorizontalScrollBar
Application.DisplayFormulaBar = Not Application.DisplayFormulaBar
For Each sh In ActiveWorkbook.Sheets
  sh.Activate
  ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadings
  ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines
Next
Application.ScreenUpdating = True
End Sub
 

noel

XLDnaute Nouveau
'=====================================================================================
'@@@@@@@@@@@ Dans un module Macro @@@@@@@@@@@

'@@@@@@@@@@@ Masquer grilles et en-têtes sur toutes les feuilles @@@@@@@@@@@
'=====================================================================================

Sub masque_demasque()
Dim sh As Worksheet
Application.ScreenUpdating = False
'Affiche ou cache toutes les feuilles
'ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs DisplayWorkbookTabs

'Affiche ou cache la barre defilement haut bas
'ActiveWindow.DisplayVerticalScrollBar = Not ActiveWindow.DisplayVerticalScrollBar

'Affiche ou cache la barre defilement laterale
'ActiveWindow.DisplayHorizontalScrollBar = Not ActiveWindow.DisplayHorizontalScrollBar

'Affiche ou cache la barre de formule et la regle
Application.DisplayFormulaBar = Not Application.DisplayFormulaBar

For Each sh In ActiveWorkbook.Sheets
sh.Activate
ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadings
ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines
Next
Application.ScreenUpdating = True

End Sub


'=====================================================================================
'
'=====================================================================================
 

Staple1600

XLDnaute Barbatruc
Bonjour à tous

noel [Bienvenue sur le forum]
Tu peux expliquer ton message??
(A part une irrépressible envie de faire un copier/coller de mon code vba posté en 2011, je vois pas trop le but de ton message ;))

PS: Avant d'ajouter des commentaires dans un code VBA plein de poussière car vieux de 5 cinq ans, commence par nous offrir un tit bonjour, camarade ;),
comme le professe la charte du forum, que tout nouveau membre devrait lire pour éclairer sa lanterne sur les us et coutumes du forum.
 

noel

XLDnaute Nouveau
Bonjour,

Merci pour ton code qui m'aide bien dans fichier que je suis en train de faire pour mon boulot, ensuite c'est juste pour tous ceux à qui cela peux servir des explications entre les lignes de codes.

Loin de moi vouloir m’approprier un code qui ne m’appartiens pas DSL si cela ta vexer.

Je suis nouveau et si nous n'avons pas le droit de le faire j'en prend note.:)
 

Staple1600

XLDnaute Barbatruc
Re

D'habitude, on commence les posts par les salutations d'usage
Or quand je tombe sur ton message, je vois juste un copier/coller de code VBA sans explications
Code qui dormait au chaud dans une discussion initiée en 2011
D’où mon étonnement. ;)

Pour le reste, tu es bien sur libre de faire ce que tu veux de codes VBA que tu trouve sur ce forum.

Selon le caractère de chacun, on peut on pas mettre en commentaire le nom, le pseudo de celui/celle qui a posté une macro.
Ce n'est pas une obligation, juste courtois.

On peut aussi quand on créé une discussion, mettre un lien vers une ancienne discussion en relation avec la question qu'on pose.
On peut aussi quand on poste une macro trouvée sur le net, mettre un lien vers le site web d'origine.
(Il est toujours intéressant de découvrir de nouvelles ressources Web dédiées à Excel quand on navigue sur le forum)

Une dernière petite suggestion pour finir.
Quand tu postes du code VBA, utilises les balises BBCODE pour distinguer le VBA du message
[CODE=vb]
Sub Macro()
MsgBox Date
End Sub[/CODE]
Ce qui donne cet affichage
VB:
Sub Macro()
MsgBox Date
End Sub
 

noel

XLDnaute Nouveau
Re

Ok j'ai compris merci pour les infos.

Quand à ton code qui dormait bien au chaud, il fonctionne encore même avec les nouvelles versions d'Excel.


Il vrai aussi que tous y compris moi, ne lisons pas la charte et faisons au plus simple;)

@ Bientôt
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 627
Membres
103 608
dernier inscrit
rawane