Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sécurité des macros

4 réponses
Avatar
Patrick
Bonjour,

Dans la boite de dialogue de sécurité des macros, il y a un onglet "Niveau
de sécurité" et un autre "Sources fiables" ("Trusted Publishers" en anglais).

En VBA, même s'il n'est peut-être pas possible de le changer, est-il
possible de détecter le niveau de sécurité des macros et si les 2 cases sont
sont cochées dans l'onglet "Sources fiables" ? Mon but est d'afficher un
message d,alerte à l'utilisateur pour lui rappeler de cocher ces 2 cases.

Merci pour votre aide.

--
Patrick

4 réponses

Avatar
michdenis
Bonjour,

Essaie ceci :
'-----------------------------------
Sub Test()
'Pour Excel 2007 seulement
Dim Wsh As Object, X As Integer, Y As Integer
Set Wsh = CreateObject("WScript.Shell")

'Macro Setting
X = Wsh.Regread(Cle2007)
Cle2007 = "HKCUSoftwareMicrosoftOffice12.0ExcelSecurityVBAWarnings"
'Niveau de sécurité , x est entre 1 et 4
'1 Niveau le plus faible, 4 le plus restrictif

Y = Wsh.Regread("HKCUSoftwareMicrosoftOffice12.0ExcelSecurityAccessVBOM")
'Trust access to vba projet object model
'0 => case non cochée
'1 -> case cochée
'1 ou 0
End Sub
'-----------------------------------




"Patrick" a écrit dans le message de groupe de discussion :

Bonjour,

Dans la boite de dialogue de sécurité des macros, il y a un onglet "Niveau
de sécurité" et un autre "Sources fiables" ("Trusted Publishers" en anglais).

En VBA, même s'il n'est peut-être pas possible de le changer, est-il
possible de détecter le niveau de sécurité des macros et si les 2 cases sont
sont cochées dans l'onglet "Sources fiables" ? Mon but est d'afficher un
message d,alerte à l'utilisateur pour lui rappeler de cocher ces 2 cases.

Merci pour votre aide.

--
Patrick
Avatar
michdenis
Cette version de la procédure est bonne pour Excel 2002 à 2007
Je ne peux pas tester les versions précédentes, elles ne sont pas
installées.
À la fin de la procédure, selon la valeur des variables, tu décideras
du message que tu veux afficher pour tes usagers.

'-----------------------------------------------------
Sub Test()
'Pour Excel 2002, 2003 et 2007
Dim Wsh As Object, X As Integer, Y As Integer
Dim Ver As String, SecLevel As String
Dim ConfVBA As String, ConfModel As String
Set Wsh = CreateObject("WScript.Shell")

Ver = Application.Version

Select Case Ver

Case Is = "10.0", "11.0" 'Excel 2002 et Excel 2003
'Niveau de sécurité entre 1 et 4
'1 le niveau le plus bas, 4 le plus restrictif
SecLevel = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityLevel")
'faire confiance au projetVba
'si ConfVBA = 1 la case est cochée,0 -> case non cochée
ConfVBA = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityaccessVBOM")
'Faire confiance au modèle
'si ConfVBA = 0 la case est cochée,1 -> case non cochée
ConfModel = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityDontTrustInstalledFiles")

Case Is = "12.0" 'Excel 2007
'Niveau de sécurité entre 1 et 4
'1 le niveau le plus bas, 4 le plus restrictif
SecLevel = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityVBAWarnings")

'Trust access to vba projet object model
'Si ConfVBA = 0 => case non cochée
''Si ConfVBA = 1 -> case cochée
ConfVBA = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityAccessVBOM")
End Select

End Sub
'-----------------------------------------------------





"Patrick" a écrit dans le message de groupe de discussion :

Bonjour,

Dans la boite de dialogue de sécurité des macros, il y a un onglet "Niveau
de sécurité" et un autre "Sources fiables" ("Trusted Publishers" en anglais).

En VBA, même s'il n'est peut-être pas possible de le changer, est-il
possible de détecter le niveau de sécurité des macros et si les 2 cases sont
sont cochées dans l'onglet "Sources fiables" ? Mon but est d'afficher un
message d,alerte à l'utilisateur pour lui rappeler de cocher ces 2 cases.

Merci pour votre aide.

--
Patrick
Avatar
Patrick
Hormis la partie ConfModel, tout fonctionne bien.

Merci.

--
Patrick


"michdenis" wrote:

Cette version de la procédure est bonne pour Excel 2002 à 2007
Je ne peux pas tester les versions précédentes, elles ne sont pas
installées.
À la fin de la procédure, selon la valeur des variables, tu décideras
du message que tu veux afficher pour tes usagers.

'-----------------------------------------------------
Sub Test()
'Pour Excel 2002, 2003 et 2007
Dim Wsh As Object, X As Integer, Y As Integer
Dim Ver As String, SecLevel As String
Dim ConfVBA As String, ConfModel As String
Set Wsh = CreateObject("WScript.Shell")

Ver = Application.Version

Select Case Ver

Case Is = "10.0", "11.0" 'Excel 2002 et Excel 2003
'Niveau de sécurité entre 1 et 4
'1 le niveau le plus bas, 4 le plus restrictif
SecLevel = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityLevel")
'faire confiance au projetVba
'si ConfVBA = 1 la case est cochée,0 -> case non cochée
ConfVBA = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityaccessVBOM")
'Faire confiance au modèle
'si ConfVBA = 0 la case est cochée,1 -> case non cochée
ConfModel = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityDontTrustInstalledFiles")

Case Is = "12.0" 'Excel 2007
'Niveau de sécurité entre 1 et 4
'1 le niveau le plus bas, 4 le plus restrictif
SecLevel = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityVBAWarnings")

'Trust access to vba projet object model
'Si ConfVBA = 0 => case non cochée
''Si ConfVBA = 1 -> case cochée
ConfVBA = Wsh.RegRead("HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityAccessVBOM")
End Select

End Sub
'-----------------------------------------------------





"Patrick" a écrit dans le message de groupe de discussion :

Bonjour,

Dans la boite de dialogue de sécurité des macros, il y a un onglet "Niveau
de sécurité" et un autre "Sources fiables" ("Trusted Publishers" en anglais).

En VBA, même s'il n'est peut-être pas possible de le changer, est-il
possible de détecter le niveau de sécurité des macros et si les 2 cases sont
sont cochées dans l'onglet "Sources fiables" ? Mon but est d'afficher un
message d,alerte à l'utilisateur pour lui rappeler de cocher ces 2 cases.

Merci pour votre aide.

--
Patrick

Avatar
michdenis
| Hormis la partie ConfModel, tout fonctionne bien.

Quel problème rencontres-tu avec ConfModel ?
Ton commentaire n'est pas très explicite sur le sujet !

Je l'ai testé à nouveau sur la version Excel 2003 et la
valeur de la variable retourne bien de qui est énoncé.