Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Désactiver les entêtes et barre de formules (permanent)

5 réponses
Avatar
Vic
Bonjour.

je dois d=E9sactiver les headers et rows :=20
ActiveWindow.DisplayHeadings. Aucun probl=E8me, mais=20
comment emp=EAcher l'usager d'aller le r=E9activer dans les=20
options? La m=EAme chose pour la barre de formules.

Merci!

5 réponses

Avatar
PMO
Bonjour,

Un code qui devrait résoudre votre problème.
j 'espère que je vais réussir à l'expliquer car c'est plutôt complexe.

MODULE DE CLASSE
1) Créez un module de classe et renommez le IMPERATIVEMENT ButtonEvents
2) Insérez y le code suivant
'*******************
Option Explicit
Private WithEvents ButtonClickEvent As Office.CommandBarButton
'____________________________________
Private Sub ButtonClickEvent_Click _
() ' (ByVal Button As Office.CommandBarButton, _
Cancel As Boolean)
Call NoHeadings
End Sub
'____________________________________
Public Sub Initialize(Button As Office.CommandBarButton)
Set ButtonClickEvent = Button
End Sub
'*******************
Tout cela pour émuler un bouton office qui possède l'évènement Click
qu 'on pourra utiliser, par la suite, pour intercepter l'action utilisateur
consistant à cliquer sur Outils/Options.


Module NORMAL
1) Insérez le code suivant dans un module général
'*******************
Option Explicit
'#### Changer la valeur de la constante MAFEUILLE ####
'#### selon le nom de la feuille où s'applique la ####
'#### désactivation des en-têtes. Changer "Feuil3" ####
'#### par "Toto" par exemple ####

Const MAFEUILLE As String = "Feuil3"
'##################################################
Public OptionsEvent As New ButtonEvents
'____________________________________
Sub BoutonOptions()
Dim i&
Dim B As CommandBar
Dim C As Office.CommandBarButton
Set B = Application.CommandBars("Tools")
For i& = 1 To B.Controls.Count
If B.Controls(i&).ID = 522 Then 'IDR2 => bouton Options
Set C = B.Controls(i&)
Exit For
End If
Next
OptionsEvent.Initialize C
End Sub
'____________________________________
Sub NoHeadings(Optional void As Byte)
If ActiveSheet.Name <> MAFEUILLE Then Exit Sub
Application.Dialogs(320).Show
If ActiveWindow.DisplayHeadings Then _
ActiveWindow.DisplayHeadings = False
End Sub
'*******************
La Sub BoutonOptions() est à lancer en premier lieu. Vous pourrez
par la suite l'appeler à partir de Workbook_Open (ou Activate) ou
L 'inclure pour qu'elle se lance automatiquement.
Le nom "Feuil3" de la Const MAFEUILLE As String = "Feuil3" est à adapter
selon le nom de la feuille concernée.
L 'argument Optional void As Byte est un argument bidon qui ne sert
qu 'à masquer la macro dans la boîte de macros. Vous pouvez l'enlever
si vous voulez.
Bref, le mieux est que vous essayer.

En dernier lieu, vous remarquerez que ce code ne traîte que les en-têtes
et pas la barre de formule.
Voici pourquoi:
Les en-têtes font partie de la classe Window alors que la barre de formule
fait partie de l'application "Application.DisplayFormulaBar = False"
(sauf erreur ou méconnaissance de ma part).
De ce fait on peut modifier le code et y ajouter la gestion de la visibilité
de la barre de formule mais elle s'appliquera à toutes les feuilles.
La solution est donc de modifier le code en incluant cette gestion puis
D 'inclure le code suivant dans l'évènement Worksheet_Deactivate de la
feuille concernée tel que:
Private Sub Worksheet_Deactivate()
Application.DisplayFormulaBar = True
End Sub

j 'ai testé chez moi et tout fonctionne. Espérons qu'il en soit de même chez
vous.

Cordialement.

PMO
Patrick Morange



Bonjour.

je dois désactiver les headers et rows :
ActiveWindow.DisplayHeadings. Aucun problème, mais
comment empêcher l'usager d'aller le réactiver dans les
options? La même chose pour la barre de formules.

Merci!



Avatar
PMO
Bonjour,

Une faute de transcription dans mon message précédent.
Private Sub ButtonClickEvent_Click _
() ' (ByVal Button As Office.CommandBarButton, _
Cancel As Boolean)
Call NoHeadings

il faut lire
Private Sub ButtonClickEvent_Click _
(ByVal Button As Office.CommandBarButton, _
Cancel As Boolean)
Call NoHeadings

Cordialement.

PMO
Patrick Morange
Avatar
PMO
CE CODE ANNULE ET REMPLACE LES PRECEDENTS
En relisant mon code, je m'aperçois que je ne vous ai pas adressé
le bon. Serait-ce la sénilité et les radicaux libres qui commencent
à faire leurs effets ???
Ci-dessous le bon code (j'espère).
__________________________________

Bonjour,

Un code qui devrait résoudre votre problème.
j 'espère que je vais réussir à l'expliquer car c'est plutôt complexe.

MODULE DE CLASSE
1) Créez un module de classe et renommez le IMPERATIVEMENT ButtonEvents
2) Insérez y le code suivant
'*******************
Option Explicit
Private WithEvents ButtonClickEvent As Office.CommandBarButton
'____________________________________
Private Sub ButtonClickEvent_Click _
(ByVal Button As Office.CommandBarButton, _
Cancel As Boolean)
Call NoHeadings
Cancel = True 'ligne que j'avais omise
End Sub
'____________________________________
Public Sub Initialize(Button As Office.CommandBarButton)
Set ButtonClickEvent = Button
End Sub
'*******************
Tout cela pour émuler un bouton office qui possède l'évènement Click
qu 'on pourra utiliser, par la suite, pour intercepter l'action utilisateur
consistant à cliquer sur Outils/Options.


Module NORMAL
1) Insérez le code suivant dans un module général
'*******************
Option Explicit
'#### Changer la valeur de la constante MAFEUILLE ####
'#### selon le nom de la feuille où s'applique la ####
'#### désactivation des en-têtes. Changer "Feuil3" ####
'#### par "Toto" par exemple ####

Const MAFEUILLE As String = "Feuil3"
'##################################################
Public OptionsEvent As New ButtonEvents
'____________________________________
Sub BoutonOptions()
Dim i&
Dim B As CommandBar
Dim C As Office.CommandBarButton
Set B = Application.CommandBars("Tools")
For i& = 1 To B.Controls.Count
If B.Controls(i&).ID = 522 Then 'IDR2 => bouton Options
Set C = B.Controls(i&)
Exit For
End If
Next
OptionsEvent.Initialize C
End Sub
'____________________________________
Sub NoHeadings(Optional void As Byte)
If ActiveSheet.Name <> MAFEUILLE Then Exit Sub
Application.Dialogs(320).Show
If ActiveWindow.DisplayHeadings Then _
ActiveWindow.DisplayHeadings = False
End Sub
'*******************
La Sub BoutonOptions() est à lancer en premier lieu. Vous pourrez
par la suite l'appeler à partir de Workbook_Open (ou Activate) ou
L 'inclure pour qu'elle se lance automatiquement.
Le nom "Feuil3" de la Const MAFEUILLE As String = "Feuil3" est à adapter
selon le nom de la feuille concernée.
L 'argument Optional void As Byte est un argument bidon qui ne sert
qu 'à masquer la macro dans la boîte de macros. Vous pouvez l'enlever
si vous voulez.
Bref, le mieux est que vous essayer.

En dernier lieu, vous remarquerez que ce code ne traîte que les en-têtes
et pas la barre de formule.
Voici pourquoi:
Les en-têtes font partie de la classe Window alors que la barre de formule
fait partie de l'application "Application.DisplayFormulaBar = False"
(sauf erreur ou méconnaissance de ma part).
De ce fait on peut modifier le code et y ajouter la gestion de la visibilité
de la barre de formule mais elle s'appliquera à toutes les feuilles.
La solution est donc de modifier le code en incluant cette gestion puis
D 'inclure le code suivant dans l'évènement Worksheet_Deactivate de la
feuille concernée tel que:
Private Sub Worksheet_Deactivate()
Application.DisplayFormulaBar = True
End Sub

j 'ai testé chez moi et tout fonctionne. Espérons qu'il en soit de même chez
vous.

Cordialement.

PMO
Patrick Morange




Bonjour.

je dois désactiver les headers et rows :
ActiveWindow.DisplayHeadings. Aucun problème, mais
comment empêcher l'usager d'aller le réactiver dans les
options? La même chose pour la barre de formules.


Avatar
Benead
Bonsoir Vic,

Le plus simple est d'interdire l'accès aux options :

Application.CommandBars(1).Controls("Outils").Controls("Options...").Enabled
A+
Benead
XL97

Vic a écrit:
Bonjour.

je dois désactiver les headers et rows :
ActiveWindow.DisplayHeadings. Aucun problème, mais
comment empêcher l'usager d'aller le réactiver dans les
options? La même chose pour la barre de formules.

Merci!


Avatar
Benead
Bonsoir Vic,

Le plus simple est d'interdire l'accès aux options :

Application.CommandBars(1).Controls("Outils").Controls("Options...").Enabled = False

A+
Benead
XL97

Vic a écrit:
Bonjour.

je dois désactiver les headers et rows :
ActiveWindow.DisplayHeadings. Aucun problème, mais
comment empêcher l'usager d'aller le réactiver dans les
options? La même chose pour la barre de formules.

Merci!