Affichage simplifié

Résolu
Bonjour,

j'ai "développé", pour me faciliter le travail une sorte de "moteur de recherche", la page de recherche est situé en Feuil1 et les base de données sur une multitude de feuilles. Je vais bien sur en faire profiter mes collègues, donc j'aimerai en simplifier l'affichage.

Plusieurs critères :

- Ne pas avoir de "barre des tâches" excel
- Ne pas avoir l'affichage des différentes feuilles (pas d’accès pour mes collègues aux
Feuilles bases de données).
- Ne plus pouvoir sauvegarder en sortant.

-Mais conserver pour moi un accès pour modifier si besoin.

Je ne sais pas si c'est très clair, mais j'ai du mal à formuler et surtout je ne sais pas si c'est faisable et comment.

Merci pour votre aide.

Landry

PS : mon idées en image (sans le bouton sauvegarde).

https://img-19.ccm2.net/8dU5ym4YTMpbAeMBQLWnpVPk0qs=/54f00ba59a4a433d80b614f19cd3594d/ccm-ugc/Image2.jpg

8 réponses

Résumé de la discussion

Landry cherche à rendre Excel plus lisible pour ses collègues en cachant les feuilles sources et la barre des tâches, en désactivant l'enregistrement à la fermeture, tout en conservant pour lui un accès de modification. Plusieurs réponses techniques proposent des scripts ou codes pour masquer l'interface et créer des éléments de contrôle (bouton de fermeture, mode plein écran) afin de restreindre l'accès aux feuilles. Des ressources et fichiers de test sont partagés pour permettre d'essayer les configurations suggérées, avec des références à des messages d'erreur et à des détails de versions Excel. L'échange met aussi en évidence des positions divergentes et des réactions parfois vives, avec des participants annonçant des abandons et une réorientation de la discussion.

Bobot (l’IA à votre service)
  1. Contributeur
    Bonjour,

    Voici un exemple, faire Alt F11 pour voir les codes dans le module et ThisWorkbook:

    http://www.cjoint.com/c/GIcqHBIRC7Q

    Pour Ne plus pouvoir sauvegarder en sortant.

    https://www.excel-pratique.com/fr/astuces_vba/empecher_enregistrement_fichier.php

    @+ Le Pivert
    0
    1. C'est parfait ! J'y ai même ajouté un petit mot de passe pour déclencher la macro qui rétabli l'affichage classique, extra!

      Pour pousser le vice, sur mon écran à la maison (23") il m'affiche la plage A1:U46
      Est ce qu'il y a possibilité de lui demander d'ajuster la fenêtre à la plage A1:O31, ou d'ajuster la plage au plein écran (mais dans ce deuxieme cas j'ai peur qu'il modifie la mise en page) ? Tout en sachant qu'à mon travaille, les écrans sont plus petits.
      0
  2. Ah!!! Ce matin, je me suis dis "n'y a t'il vraiment pas moyen de sortir du plein écran sans le mot de passe... si : tout simplement par la touche échappe deux fois. Est ce qu'on peut bloquer ça?
    0
    1. Contributeur
      Si il n'y avait que la touche echap!
      il y a aussi le clic droit pour supprimer le plein écran!

      Voici donc le code pour bloquer tout cela:

      Option Explicit
      'Plein écran
      Private Sub CommandButton1_Click()
      Application.OnKey "{ESCAPE}", "" 'touche echap
        Application.DisplayFullScreen = True 'plein écran
          ActiveWindow.DisplayWorkbookTabs = False 'onglets masqués
          CacheBOutils ' clic droit
      End Sub
      'rétabli
      Private Sub CommandButton2_Click()
      Application.OnKey "{ESCAPE}"
      Application.DisplayFullScreen = False
         ActiveWindow.DisplayWorkbookTabs = True
         AfficheOutils
      End Sub
      Sub CacheBOutils()
      Dim CmdB As CommandBar
        For Each CmdB In Application.CommandBars
          CmdB.Enabled = False
        Next CmdB
      End Sub
      Sub AfficheOutils()
      Dim CmdB As CommandBar
        For Each CmdB In Application.CommandBars
          CmdB.Enabled = True
        Next CmdB
      End Sub
      
      


      Pour ajuster la plage au plein écran

      je ne vois que le zoom:

       ActiveWindow.Zoom = 200'a adapter
          ActiveWindow.Zoom = 100' rétabli


      Voilà
      0
      1. Contributeur
        Bonjour,

        perso on me passe un fichier comme ça c'est direct poubelle ;-)
        L'utilisateur est assez grand pour savoir ce qu'il veut voir à l'écran.
        Là c'est infantiliser, pas du tout agréable je trouve.
        Ca n'engage que moi... :-)
        eric
        0
      2. Merci cs_Le Pivert,

        Pour le blocage, je ne comprends pas trop le code, est il à mettre dans thisWorbook? y a t'il des commandbuttons à créer?

        Pour le zoom, je ne vois pas comment l'utiliser non plus, mais je vais fouiner.

        @eriiic : Mon but est d'avoir une interface très simplifié (minimum de pollution visuelle).
        Pour l'utilisation de cet outil, il n'y a pas besoin des fonctionnalités excel, et j'ai
        voulu élaboré ce petit projet pour nous faciliter la vie quotidienne au travail, pas
        pour faire de la maintenance suite à des manipulations malheureuses.
        Mais merci pour ton avis...
        0
      3. @Landry85 
        Bonjour Landry85,

        Je te propose cette adaptation du code VBA de cs_Le Pivert :

        
        Option Explicit
        
        ' plein écran
        Private Sub CommandButton1_Click()
          Application.OnKey "{ESCAPE}", "" ' touche Echap inactive
          Application.DisplayFullScreen = True ' affichage plein écran
          ActiveWindow.DisplayWorkbookTabs = False ' onglets masqués
          CacheBOutils ' masque les barres d'outils
          ActiveWindow.Zoom = 200 ' zoom 200 %
        End Sub
        
        ' rétabli
        Private Sub CommandButton2_Click()
          Application.OnKey "{ESCAPE}" ' touche Echap active
          Application.DisplayFullScreen = False ' non plein écran
          ActiveWindow.DisplayWorkbookTabs = True ' onglets affichés
          AfficheBOutils ' affiche les barres d'outils
          ActiveWindow.Zoom = 100 ' zoom 100 %
        End Sub
        
        Sub CacheBOutils()
          Dim CmdB As CommandBar
          For Each CmdB In Application.CommandBars
            CmdB.Enabled = False
          Next CmdB
        End Sub
        
        Sub AfficheBOutils()
          Dim CmdB As CommandBar
          For Each CmdB In Application.CommandBars
            CmdB.Enabled = True
          Next CmdB
        End Sub
        
        

        Tes 2 boutons seront par exemple sur Feuil1 => place ce code VBA
        dans le code de Feuil1 (pas dans un module, ni ThisWorkbook).

        Sur Feuil1, crée 2 boutons de commande puis affecte-leur la macro
        correspondante comme suit :

        affecte au 1er     bouton la macro : CommandButton1_Click()
        affecte au 2ème bouton la macro : CommandButton2_Click().

        Cordialement
         
        0
      4. Contributeur
        @Landry85Je croyais que tu aurais compris avec le classeur que je t'ai mis à télécharger où placer les macros!!!
        0
      5. @cs_Le PivertJe n'avais pas de nouveau fichier dans ta réponse :-(
        Mais ce qui m'a fait douter, ce sont les commandbuttons.

        Donc j'ai bien utilisé cette nouvelle méthode, mais pour le coup il faut que je clique sur le bouton pour mettre le plein ecran.
        Je suis en tentative de déclenchement du bouton automatiquement à l'ouverture du classeur... et pour le moment c'est pas fructueux
        0
    2. Contributeur
      Il ne s'agit pas de faire des copier coller sans comprendre.
      Je te le fais en français:

      Si mot de passe correct Alors
      on met la totalité du code rétablir
      Sinon
      on ne met rien ou un message le cas échéant
      Fin si

      Voilà c'est pourtant simple!!!!!!!!!!
      0
      1. Bonjour Cs_ Le Pivert,

        Tu n'as surement pas lu la suite de ce post, donc je me permet de contacter via cette réponse car je cherche à supprimer ou griser les touches "réduire" et "niveau inf" (et la croix si y'a pas le choix). J'ai trouvé un code que tu as fourni sur un autre post mais il ne fonctionne pas chez moi, j'obtiens un message d'erreur que tu pourras, si tu le veux bien, voir en capture d'ecran.

        https://forums.commentcamarche.net/forum/affich-34839864-affichage-simplifie#23

        Si tu as la solution, Merci beaucoup
        0
      2. Contributeur
        @Landry85Oui j'ai la solution, mais quand une tiers personne met la pagaille, cela ne m'incite pas à répondre!

        a mettre dans un module:

        Option Explicit
        Private Const MF_BYPOSITION As Long = &H400
        Private Const mlNUM_SYS_MENU_ITEMS As Long = 9
        Private Declare Function GetSystemMenu Lib "User32" _
          (ByVal hwnd As Long, ByVal bRevert As Long) As Long
        Private Declare Function DeleteMenu Lib "User32" _
          (ByVal hMenu As Long, ByVal nPosition As Long, _
          ByVal wFlags As Long) As Long
        Private Declare Function FindWindowA Lib "User32" _
          (ByVal lpClassName As String, ByVal lpWindowName _
          As String) As Long
        'Vasant Nanavati, Andrew Baker (mpep), fs
        Public Sub DisableSystemMenu()
        Dim lHandle As Long, lCount As Long
            
          On Error Resume Next
          lHandle = FindWindowA(vbNullString, Application.Caption)
          If lHandle <> 0 Then
        
              'désactive la croix de fermeture d'Excel
              'et la commande Fermeture du menu système
             ' DeleteMenu GetSystemMenu(lHandle, False), 6, &H400
              'supprime le trait de séparation du menu système avant Fermeture
            '  DeleteMenu GetSystemMenu(lHandle, False), 5, &H400
              'supprime la commande Agrandissement du menu système
              'et la commande Agrandir de la fenêtre
              DeleteMenu GetSystemMenu(lHandle, False), 4, &H400
              'supprime la commande Réduction du menu système
              'et désactive la commande Réduire de la fenêtre
              DeleteMenu GetSystemMenu(lHandle, False), 3, &H400
              'désactive la commande Déplacement du menu système
            '  DeleteMenu GetSystemMenu(lHandle, False), 2, &H400
              'supprime la commande Déplacement du menu système
              'et désactive la commande Dimension
              DeleteMenu GetSystemMenu(lHandle, False), 1, &H400
              'supprime la commande Restauration du menu système
              'et désactive la commande Restaurer de la fenêtre
              DeleteMenu GetSystemMenu(lHandle, False), 0, &H400
                
          End If
        End Sub
        'rétablit le menu sytème et les commandes de fenêtre (Réduire, Agrandir, Fermer)
        Public Sub EnableSystemMenu()
            Dim lHandle As Long
            On Error Resume Next
            lHandle = FindWindowA(vbNullString, Application.Caption)
            GetSystemMenu lHandle, True
        End Sub


        pour appeler:

        'bloqué
        DisableSystemMenu
        'débloqué
        EnableSystemMenu


        voilà
        bonne continuation
        0
      3. @cs_Le Pivert 
        @cs_Le Pivert

        quand une tiers personne met la pagaille
        Tu ferais mieux de surveiller ton orthographe au lieu d'accuser les autres
        de mettre la pagaille simplement parce qu'ils proposent des solutions !
        C'est « tierce personne », pas « tiers personne ».

        Tu n'as pas à m'en vouloir d'avoir repris ton code puisque j'ai bien signalé
        que c'était le tien ! et j'espère que tu t'es rendu compte que j'ai pris bien
        soin de séparer les subs, ce que tu n'avais pas fait, et eriiic a même écrit :
        perso on me passe un fichier comme ça c'est direct poubelle ;-)

        https://forums.commentcamarche.net/forum/affich-34839864-affichage-simplifie#5

        De plus le demandeur Landry a confirmé que mon code lui a été utile :
        Finalement tout fonctionne avec ce dernier code (j'ai adapté les trues et les falses).

        https://forums.commentcamarche.net/forum/affich-34839864-affichage-simplifie#21
         
        0
      4. Contributeur
        @willyTu as oublié une ligne dans la citation de eriiic, il parlait de la demande de Landry85 et non de mon code!

        perso on me passe un fichier comme ça c'est direct poubelle ;-)
        L'utilisateur est assez grand pour savoir ce qu'il veut voir à l'écran.


        Je vais arrêter de polémiquer dans une discussion stérile.

        J'abandonne ce post
        0
      5. @cs_Le PivertJ'y arrive pas... :-(

        Ci-joint un fichier test :

        https://mon-partage.fr/f/i2s2V93B/
        0
    3. Bonsoir à tous les deux :-)

      Merci beaucoup pour l'engouement porté à ce projet, faut pas se mettre dans des états comme ça :-) KeepCalm = True :-D

      Finalement tout fonctionne avec ce dernier code (j'ai adapté les trues et les falses). J'ai vérifié, effectivement il n'est pas nécessaire de désigner le "Sinon" comme l'a précisé Cs_Le Pivert.
      @Willy : c'est vrai en analysant un peu, c'était très bête ce que j'avais écrit : If mot de passe ok...blabla et la même chose après le end if (complètement con :-D )

      Bon sans se gronder :-), est ce qu'il y a une ligne ou deux à rajouter pour supprimer le bouton "réduire" et "niveau inf." en haut à droite de la fenêtre? (ce doit être la dernière façon de sortir du pleine écran sans mot de passe)
      J'ai bien trouvé un code (assez long) que je vais tester de suite mais peut être qu'une ligne suffit...

      Merci encore et bonne soirée/journée
      0
      1.  
        Finalement tout fonctionne avec ce dernier code (j'ai adapté les trues et les falses).

        Merci de me rendre justice ! contrairement à ce que pensait cs_Le Pivert
        je savais bien que mon code VBA te serait utile !  :)

        Pour ce que tu as demandé ensuite, c'est tellement spécial que je laisse
        le soin à cs_Le Pivert de te répondre.  ;)

        Bonne soirée/journée à toi aussi.
         
        0