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.
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.
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
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.
RépondreSupprimerPrivate 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!