mardi 29 mai 2012

Prenez le contrôle de la zone d'affichage

Contrôlez l'apparence d'une feuille par le biais d'un code VBA s'exécutant dès l'activation de la feuille ou dès l'ouverture du classeur :
  • Cacher les barres d'outils (propriétés de l'objet Application)
  • Cacher la grille (propriété de l'objet ActiveWindow)
  • Supprimez l'affichage des en-têtes de lignes et de colonnes (propriété de l'objet ActiveWindow)
  • Lancez l'affichage en plein écran

Apparence initiale du classeur Excel (cliquez pour agrandir)
Apparence neutre du classeur Excel après application de la procédure Workbook_Open()  (cliquez pour agrandir)

Et surtout, empêchez l'utilisateur d'aller dans le menu d'options d'affichage pour réactiver ces éléments :  
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    ' Empêcher l'affichage des en-têtes de lignes / colonnes
   If ActiveWindow.DisplayHeadings = True Then
        ActiveWindow.DisplayHeadings = False
        Dim Reponse As Integer
        Reponse = MsgBox("Veuillez ne pas modifier l'apparence de cette page", vbCritical, "Attention")
    End If
   
    'Empêcher la sélection d'une cellule pour la modifier
    ActiveSheet.Range("A65535").Select
    ActiveWindow.ScrollRow = 1
    ActiveWindow.ScrollColumn = 1
End Sub

Empêchez également l'utilisateur d'effectuer des actions de mise en forme en désactivant le clic droit sur la feuille :
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
End Sub
Bien entendu, tout cela peut être appliqué à l'ensemble des feuilles du classeur en appliquant la procédure suivante à l'évènement Open du Workbook :
Private Sub Workbook_Open()

    With ActiveWindow
        .DisplayGridlines = False
        .DisplayHeadings = False
        .DisplayWorkbookTabs = False
    End With
       
    With Application
        .ShowStartupDialog = False
        .DisplayFormulaBar = False
    End With
   
    Application.CommandBars("worksheet menu bar").Enabled = False
   
    If Application.CommandBars("Standard").Visible = True Then
    Application.CommandBars("Standard").Visible = False
    End If
   
    If Application.CommandBars("Formatting").Visible = True Then
    Application.CommandBars("Formatting").Visible = False
    End If
   
    If Application.CommandBars("Borders").Visible = True Then
    Application.CommandBars("Borders").Visible = False
    End If
   
    If Application.CommandBars("Chart").Visible = True Then
    Application.CommandBars("Chart").Visible = False
    End If
   
    If Application.CommandBars("Control Toolbox").Visible = True Then
    Application.CommandBars("Control Toolbox").Visible = False
    End If
   
    If Application.CommandBars("Drawing").Visible = True Then
    Application.CommandBars("Drawing").Visible = False
    End If
   
    If Application.CommandBars("External Data").Visible = True Then
    Application.CommandBars("External Data").Visible = False
    End If
   
    If Application.CommandBars("Forms").Visible = True Then
    Application.CommandBars("Forms").Visible = False
    End If
   
    If Application.CommandBars("Formula Auditing").Visible = True Then
    Application.CommandBars("Formula Auditing").Visible = False
    End If
   
    If Application.CommandBars("List").Visible = True Then
    Application.CommandBars("List").Visible = False
    End If
   
    If Application.CommandBars("Picture").Visible = True Then
    Application.CommandBars("Picture").Visible = False
    End If
   
    If Application.CommandBars("PivotTable").Visible = True Then
    Application.CommandBars("PivotTable").Visible = False
    End If
   
    If Application.CommandBars("Protection").Visible = True Then
    Application.CommandBars("Protection").Visible = False
    End If
   
    If Application.CommandBars("Reviewing").Visible = True Then
    Application.CommandBars("Reviewing").Visible = False
    End If
   
    If Application.CommandBars("Task Pane").Visible = True Then
    Application.CommandBars("Task Pane").Visible = False
    End If
   
    If Application.CommandBars("Text To Speech").Visible = True Then
    Application.CommandBars("Text To Speech").Visible = False
    End If
   
    If Application.CommandBars("Visual Basic").Visible = True Then
    Application.CommandBars("Visual Basic").Visible = False
    End If
   
    If Application.CommandBars("Watch Window").Visible = True Then
    Application.CommandBars("Watch Window").Visible = False
    End If
   
    If Application.CommandBars("Web").Visible = True Then
    Application.CommandBars("Web").Visible = False
    End If
   
    If Application.CommandBars("WordArt").Visible = True Then
    Application.CommandBars("WordArt").Visible = False
    End If
   
    If Application.CommandBars("Exit Design Mode").Visible = True Then
    Application.CommandBars("Exit Design Mode").Visible = False
    End If
   
    If Application.CommandBars("Full Screen").Visible = True Then
    Application.CommandBars("Full Screen").Visible = False
    End If
   
    If Application.CommandBars("Organization Chart").Visible = True Then
    Application.CommandBars("Organization Chart").Visible = False
    End If
   
    If Application.CommandBars("Shadow Settings").Visible = True Then
    Application.CommandBars("Shadow Settings").Visible = False
    End If
   
    If Application.CommandBars("Drawing Canvas").Visible = True Then
    Application.CommandBars("Drawing Canvas").Visible = False
    End If
   
    If Application.CommandBars("Diagram").Visible = True Then
    Application.CommandBars("Diagram").Visible = False
    End If
   
    If Application.CommandBars("Compare Side by Side").Visible = True Then
    Application.CommandBars("Compare Side by Side").Visible = False
    End If
   
    If Application.CommandBars("Circular Reference").Visible = True Then
    Application.CommandBars("Circular Reference").Visible = False
    End If
   
    If Application.CommandBars("Chart Menu Bar").Visible = True Then
    Application.CommandBars("Chart Menu Bar").Visible = False
    End If
   
    If Application.CommandBars("3-D Settings").Visible = True Then
    Application.CommandBars("3-D Settings").Visible = False
    End If
   
End Sub

Seul petit bémol : un développeur aguerri saura activer le mode "Création" dans l'onglet "Visual Basic" (MS 2003) / "Développeur" (MS 2007/2010) pour accéder au contenu des cellules. Il ne pourra cependant pas modifier durablement l'apparence de la feuille car celle-ci reviendra automatiquement à l'apparence que vous lui avez fixée dès qu'elle sera ré-activée.

Aucun commentaire:

Enregistrer un commentaire