✅ Masquer par macro les onglets d'excel (fichier, insertion, mise en page...)


#1

Bonjour,
Je cherche à masquer par macro les onglets d’excel (fichier, insertion, mise en page, affichage, formules, données…), et bien sûr une macro pour rétablir ces masques.
Je sais masquer l’ onglet Developper par macro mais je ne connais pas les termes pour les autres…
si quelqu’un connais l’ astuce. MERCI


#2

Bonsoir Ludo,

Le code principale est dans le ThisWorkbook, il fonctionne dès la fermeture du classeur, il masque le Ruban, les Titres, les Onglets.

Enfin, pour le confort, j’ai ajouter une macro avec le bouton "Afficher Tout.

Cela convient-il ?

Ludo V1.xlsm (17,1 Ko)

Cordialement.


#3

Bonjour Mdo100,
Nickel, c’est pile poil ce que je cherchais. Je me forme tout seul avec internet, ce n’est pas toujours facile.
Heureusement qu’il y a des petits gars sympas pour donner un coup de main !
MERCI beaucoup.
bonne journée


#4

Bonjour Ludo,

Bien dans ce cas, n’oublie pas de cliquer ici pour afficher le sujet comme résolu.

Cordialement


#5

Bonjour
@mdo100 Quelles instructions utilises-tu dans ta macro?
Si le code est court il est toujours bien de le copier également directement dans le message.
De cette manière un utilisateur effectuant une recherche sur un sujet similaire peut trouver le message grâce à des mots-clés inscrites dans la macro. Sinon la solution est cachée dans le fichier, c’est dommage :wink:


#6

Bonjour DocteurExcel, Ludo,

DocteurExcel, j’ai vu ton message à 3h00 du matin et j’allais faire :sleeping:.
Alors ce matin, je mets le code que j’ai fourni à Ludo avec les commentaires.
Dans l’éditeur “Visual Basic” (alt + F11) ThisWorkbook (qui représente le classeur)

Private Sub Workbook_WindowActivate(ByVal Wn As Window)

'À l'ouverture du classeur, masque le ruban
Application.DisplayFullScreen = True
'À l'ouverture du classeur, masque les titres
ActiveWindow.DisplayHeadings = False
'A l'ouverture du classeur, masque les onglets
ActiveWindow.DisplayWorkbookTabs = False

End Sub

Puis dans un module appelé aussi macro associé avec le bouton “Afficher Tout”

Sub Afficher_Tout()

'Restaurer le ruban
Application.WindowState = xlNormal
'Restaurer les titres
ActiveWindow.DisplayHeadings = True
'Restaurer les onglets
ActiveWindow.DisplayWorkbookTabs = True

End Sub

Voilà si ça peut aider :wink:

Cordialement.


#7

Est-il possible de rajouter une macro, pour que lorsque l’on ferme excel le bandeau réapparaisse automatiquement, afin de pouvoir utiliser excel “normalement” pour la création d’un nouveau fichier.
Ou faire que le masquage du ruban ne s’effectue que dans un classeur.

J’espère avoir été clair, je voulais dire si toutefois j’ouvre a nouveau excel pour créer un nouveau fichier que le ruban apparaisse, car c’est un ordi avec plusieurs utilisateurs et ça ne va pas plaire à tout le monde si le ruban disparait à chaque fois.
J’aurai aimé le faire disparaitre qu’avec certains fichiers.

Merci d’avance


#8

Bonjour CMa,

Voici ce que je propose, la même chose qui est très bien explicité dans mon message 6. Attention DocteurExcel veille à ce que je sois pédagogique :eyes:
Mais en plus un code supplémentaire dans ThisWorkbook, avec la commande “Private Sub Workbook_BeforeClose(Cancel As Boolean)” ce qui réactivera toutes les restrictions à la fermeture & enregistrement du fichier, donc sans incidence sur l’ouverture d’autre fichier.
Voici le code:

 Private Sub Workbook_BeforeClose(Cancel As Boolean)

    'Restaurer le ruban
    Application.WindowState = xlNormal
    'Restaurer les titres
    ActiveWindow.DisplayHeadings = True
    'Restaurer les onglets
    ActiveWindow.DisplayWorkbookTabs = True
    
End Sub

Et voici le fichier exemple sur lequel, j’ai maintenu la macro avec son bouton “Afficher Tout”.
La macro et le bouton pouvant-être supprimés.
CMa V1.xlsm (16,5 Ko)

Cela convient-il ?

Cordialement.


#9

Merci à tous pour votre aide.
Bonne journée.


#10

C’est super mdo100, c’est ce qu’il me faut mais sans le bouton "afficher tout"
par contre étant un débutant et pas très doué, voir pas du tout en VBA, je n’arrive pas compiler la tienne avec celle-ci qui supprime le copier/collé du clic droit de la souris :

Sub ToggleCutCopyAndPaste(Allow As Boolean)
'Activate/deactivate cut, copy, paste and pastespecial menu items
Call EnableMenuItem(21, Allow) ’ cut
Call EnableMenuItem(19, Allow) ’ copy
Call EnableMenuItem(22, Allow) ’ paste
Call EnableMenuItem(755, Allow) ’ pastespecial

'Activate/deactivate drag and drop ability
Application.CellDragAndDrop = Allow

'Activate/deactivate cut, copy, paste and pastespecial shortcut keys
With Application
Select Case Allow
Case Is = False
.OnKey “^c”, “CutCopyPasteDisabled”
.OnKey “^v”, “CutCopyPasteDisabled”
.OnKey “^x”, “CutCopyPasteDisabled”
.OnKey “+{DEL}”, “CutCopyPasteDisabled”
.OnKey “^{INSERT}”, "CutCopyPasteDisabled"
Case Is = True
.OnKey “^c”
.OnKey “^v”
.OnKey “^x”
.OnKey “+{DEL}”
.OnKey "^{INSERT}"
End Select
End With
End Sub

Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
'Activate/Deactivate specific menu item
Dim cBar As CommandBar
Dim cBarCtrl As CommandBarControl
For Each cBar In Application.CommandBars
If cBar.Name <> “Clipboard” Then
Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
End If
Next
End Sub

Sub CutCopyPasteDisabled()
'Inform user that the functions have been disabled
MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
End Sub

'*** In the ThisWorkbook Module ***

Private Sub Workbook_Activate()
Call ToggleCutCopyAndPaste(False)
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Workbook_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Workbook_Open()
Call ToggleCutCopyAndPaste(False)
End Sub

Pourrais tu me l’expliquer ou me dire ce qu’il faut que j’écrive dans la macro.

Encore merci à tous pour vos disponibilités
C’est super SYMPA


#11

Bonjour CMa, toutes et tous,

Bon juste un p’tit truc auquel je tiens, c’est les formules de politesses.
Quand on s’adresse à quelqu’un, on commence sa phrase par BONJOUR, si, si, ça se dit encore de nos jours, même dans le monde du numérique ! :confused:

[quote=“CMa, post:10, topic:178”]
C’est super mdo100…Encore merci à tous pour vos disponibilités
C’est super SYMPA[/quote]
Heureusement, tu te rattrapes avec le reste. :wink:

Je n’ais pas testé ton code, mais à partir de ThisWorkbook, j’écrirai le code comme ceci:

  `  '*** In the ThisWorkbook Module ***`

Private Sub Workbook_WindowActivate(ByVal Wn As Window)

'À l'ouverture du classeur, masque le ruban
Application.DisplayFullScreen = True
'À l'ouverture du classeur, masque les titres
ActiveWindow.DisplayHeadings = False
'A l'ouverture du classeur, masque les onglets
ActiveWindow.DisplayWorkbookTabs = False

End Sub

Private Sub Workbook_Activate() 
Call ToggleCutCopyAndPaste(False) 
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Call ToggleCutCopyAndPaste(True) 

'Restaurer le ruban
Application.WindowState = xlNormal
'Restaurer les titres
ActiveWindow.DisplayHeadings = True
'Restaurer les onglets
ActiveWindow.DisplayWorkbookTabs = True

End Sub

Private Sub Workbook_Deactivate() 
Call ToggleCutCopyAndPaste(True) 
End Sub

Private Sub Workbook_Open() 
Call ToggleCutCopyAndPaste(False) 
End Sub

Ce qui intègre la partie de ton code dans ThisWorkbook avec le mien.

Attention :bangbang:, je n’ais pas tester le résultat, car je ne veux pas intégrer la partie de ton code dans mon système.
Toutefois, il me serait agréable que tu me dise si ce que je t’ais proposé fonctionne comme tu le souhaites.

@+
Cordialement.


#12

Bonjour

Très sincerment je suis désolé car je suis également quelqu’un de très poli. Pour info, même si cela ne veut rien dire je suis de la vieille école (52 ans) et c’est vrai que j’aurai DU dire bonjour.

Pour le code, merci d’avance, je vais tester cela cette nuit, à la caserne pendant ma garde.

Encore Mille Excuses, c’est un oublie. En live il y aurait eu automatiquement un Bonjour et une poignée de main ferme.

@+
Cordialement
Christophe


#13

Re,

N’en parlons plus. :wink:

Je te donne un conseille toutefois pour tester en toute sécurité le code que je t’ai fourni.
Fait d’abord une copie de ton fichier, puis sur cette copie teste le code, si le résultat est bon, alors intègre le dans ton vrai fichier.
On ne sais jamais, et on a vite fait de perdre un fichier définitivement, je sais de quoi je parle.
Dans l’attente de me dire le résultat.
PS: Dans un autre post et dans celui-ci, tu parle de caserne, je me trompe où tu parle de pompier ?
Si c’est le cas alors « Courage et dévouement » :wink:

@+


#14

:stuck_out_tongue_winking_eye:

Re,
OK on en parle plus. :innocent:
Merci pour le conseil, c’est ce que je fais déjà, on ne sait jamais, comme tu dis.
Et pour ce qui est de la profession, oui oui Sapeur Pompier.
Merci pour la citation, c’est sympa

Je te tiens au courant
@+


#15

Bonjour mdo100

Un IMMENSE MERCI pour l’écriture de cette macro, qui fonctionne à merveille.
Quel plaisir de retrouver des personnes qui rendent des services, sans nous faire sentir que l’on est nul en VBA ou autre.
FRANCHEMENT et HONNETEMENT encore 1000 Merci.
Bravo pour ce forum et à TOUS les membres qui nous aide.

Encore Merci mdo100, c’est génial, j’espère que cela me facilitera bien la tache.

PS. : vu la qualité de vos solutions, je n’ai pas fini de vous en poser, :blush::joy:

Christophe


#16

Bonjour Christophe,

Et bien crois moi, au vu de ton enthousiasme :smiley:, je suis tout autant content pour moi, car je n’avais pas testé le code, et ne va pas croire que je suis un pro, nous somme tous des plus ou moins débutants. :pencil2:

Et n’hésite pas a poser d’autre question sur le forum, si ce n’ai moi, d’autre te répondront.
Merci pour le retour.

Allez, sur ce, « Courage et dévouement ».

Cordialement.