TEST

TEST

Test

Ut enim benefici liberalesque sumus, non ut exigamus gratiam (neque enim beneficium faeneramur sed natura propensi ad liberalitatem sumus), sic amicitiam non spe mercedis adducti sed quod omnis eius fructus in ipso amore inest, expetendam putamus.

samedi 1 mars 2014

Forcer un utilisateur a activer les macros.

J'ai déjà eu la désagréable surprise de voir que ma feuille de calcul de fonctionne pas et après quelques instants m'apercevoir que les macrons n'ont pas été activées.
Ce diagnotic est d'autant plus difficile à faire quand vous êtes confronté à un utilisateur en ligne.

Pour utiliser une macro dans Excel, les utilisateurs doivent "Activer" les macros.
Autrement dit, ils doivent donner la permission à Excel d'executer les macros dans
leur environnement.
Ils peuvent le faire en cliquant sur l'avertissement de sécurité qui apparaît au-dessus de la barre de formule.

Activer les macros

Vous pouvez écrire les macros les plus géniales, il reste que sans l'acttivation de ces macros votre travail ne sert à rien.
Pouvons nous forcer un utilisateur à activer les macros ? Le réponse est oui.

L'idée est relativement simple. Nous allons créer une feuille qui affichera un avertissement.
Cette feuille sera rendue invisible par macro, donc si les macros ne sont pas activées la feuille sera affichée.

Feuille d'avertissement



Nous allons utiliser l'événement Workbook_Open, cet évènement permet de déclencher une procédure lors de l'ouverture du classeur et l'évenement Workbook_BeforeClose,
cet évènement est lui déclenché avant la fermeture du classeur.

Le code lié à l'évenement Workbook_BeforeClose va cacher toutes les feuilles du classeur sauf la feuille d'avertissement et le code lié à l'événement Workbook_Open
va rendre visible toute les feuilles et rendre invisible la feuille d'avertissement.

Nous allons écrire une macro qui va gérer toutes les actions lors de la fermeture du classeur.

Vba
Sélectionnez

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim ws As Worksheet
    Sheets("Start").Visible = xlSheetVisible
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Start" Then
            ws.Visible = xlVeryHidden
        End If
    Next ws
    ActiveWorkbook.Save
End Sub

Maintenant voici la macro qui va gérer les actions lors de l'ouverture du classeur.

Vba
Sélectionnez

Private Sub Workbook_Open()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Visible = xlSheetVisible
    Next ws
    Sheets("Start").Visible = xlVeryHidden
End Sub

Une fois les deux macros mises en œuvre, vous aurez un classeur qui ne fonctionnera que si l'utilisateur active les macros!

Bonne lecture

1 commentaire :

  1. JE SUIS M. TRAORE ISSA. APPRENTI SORCIER EN VBA EXCEL ET POUR CES DIFFERENTS CODES , POUR QUE CA MARCHE CONVENABLEMENT, VOUS DEVEZ INVERSER LES CONTENUS ENTRE LES BORNES "PRIVATE SUB" ET "END SUB" ET LE TOUR EST JOUE.
    Private Sub Workbook_BeforeClose(Cancel As Boolean
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
    ws.Visible = xlSheetVisible
    Next ws
    Sheets("Start").Visible = xlVeryHidden
    End Sub
    ..................................................
    Private Sub Workbook_Open()
    Sheets("Start").Visible = xlSheetVisible
    For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Start" Then
    ws.Visible = xlVeryHidden
    End If
    Next ws
    ActiveWorkbook.Save
    End Sub

    CORDIALEMENT A VOUS!

    RépondreSupprimer