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

Agir sur l'évenement activer ou désactiver les macros

4 réponses
Avatar
Thierry
Bonjour,

tout d'abord merci pour les personnes qui m'ont aidé
à résoudre mon problème de renommage d'un fichier.
J'ai un nouveau problème à vous soumettre :
à l'ouverture d'un classeur j'ai un message
"voulez vous activer les macros "
j'aimerais récuperer la réponse de ce message
afin d'executer une procedure en fonction de la réponse.
Si la personne répond "activer les macros" j'execute tel code, sinon si la
personne répond "désactiver les macros" j'affiche un message qui dit qu'elle
doit activer les macros et je ferme le classeur.

Je vous remercie d'avance pour votre aide.
sincèrement
thierry

4 réponses

Avatar
papou
Bonjour Thierry
Ce que tu demandes n'est pas possible.
La seule chose possible est de désactiver l'alerte macro pour l'ouverture
d'un classeur spécifié en utilisant un script.
Voici un exemple de code (à adapter donc) trouvé (il me semble) chez
Frédéric Sigonneau http://perso.wanadoo.fr/frederic.sigonneau/office.htm :
Cordialement
Pascal

'================== 'Excel Must be closed
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Excel must be closed to run this script..."
WScript.Quit
End If

Err.Clear

'objet script
Set wsh = WScript.CreateObject("WScript.Shell")
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"

If Not IsExcel2000 Then
MsgBox "This script only works for Excel 2000..."
WScript.Quit
End If

Dim NiveauSecurite, wsh

NiveauSecurite = wsh.RegRead(Cle2000)

'Weakest level path
wsh.RegWrite Cle2000, 1,"REG_DWORD"

'Opening excel workbook without security alert
Retour=wsh.Run("D:6OfficeVBAClasseurTestSecurite.xls", 3, False)


'Reset security level to previous status
wsh.RegWrite Cle2000, NiveauSecurite,"REG_DWORD"

'pour vérifier si la clé pour Excel 2000 existe bien
Function IsExcel2000()
On Error Resume Next

Res=wsh.RegRead(Cle2000)
IsExcel2000=(Err=0)
End Function


"Thierry" a écrit dans le message de
news:3fbc840f$0$27018$
Bonjour,

tout d'abord merci pour les personnes qui m'ont aidé
à résoudre mon problème de renommage d'un fichier.
J'ai un nouveau problème à vous soumettre :
à l'ouverture d'un classeur j'ai un message
"voulez vous activer les macros "
j'aimerais récuperer la réponse de ce message
afin d'executer une procedure en fonction de la réponse.
Si la personne répond "activer les macros" j'execute tel code, sinon si la
personne répond "désactiver les macros" j'affiche un message qui dit
qu'elle

doit activer les macros et je ferme le classeur.

Je vous remercie d'avance pour votre aide.
sincèrement
thierry




Avatar
Michel Gaboly
Bonjour,

Rajoute une feuille à ton classeur en première position avec
le message à afficher si le classeur est ouvert sans activer les macros.

Exécute ensuite cette procédure (le classeur concerné étant le classeur
actif)

Sub Masque()
Dim i As Integer
For i = 2 To Sheets.Count
Sheets(i).Visible = xlVeryHidden
Next i
End Sub

Elle masque toutes les feuilles du classeur, sauf la première, qui affiche
ton message. Les feuilles masquées ainsi (xlVeryHidden) ne peuvent être
réaffichées que par VBA.

Dans le Workbook_Open,

Dim i As Integer
Sheets(1).Visible = xlVeryHidden
For i = 2 To Sheets.Count
Sheets(i).Visible = True
Next i


Tu masques la feuille comportant le message et tu réaffiches les autres, et
tu fais le contraire dans le

Workbook_BeforeClose



Bonjour,

tout d'abord merci pour les personnes qui m'ont aidé
à résoudre mon problème de renommage d'un fichier.
J'ai un nouveau problème à vous soumettre :
à l'ouverture d'un classeur j'ai un message
"voulez vous activer les macros "
j'aimerais récuperer la réponse de ce message
afin d'executer une procedure en fonction de la réponse.
Si la personne répond "activer les macros" j'execute tel code, sinon si la
personne répond "désactiver les macros" j'affiche un message qui dit qu'elle
doit activer les macros et je ferme le classeur.

Je vous remercie d'avance pour votre aide.
sincèrement
thierry


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Thierry
Bonjour,

merci mais j'ai pas trouvé sur le site
et je ne peux pas le parcourir car j'ai une connexion très bat débit
merci si possible de me donner le lien exact
srmt
thieery
"papou" <nspm> a écrit dans le message de
news:
Bonjour Thierry
Ce que tu demandes n'est pas possible.
La seule chose possible est de désactiver l'alerte macro pour l'ouverture
d'un classeur spécifié en utilisant un script.
Voici un exemple de code (à adapter donc) trouvé (il me semble) chez
Frédéric Sigonneau http://perso.wanadoo.fr/frederic.sigonneau/office.htm :
Cordialement
Pascal

'================== > 'Excel Must be closed
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Excel must be closed to run this script..."
WScript.Quit
End If

Err.Clear

'objet script
Set wsh = WScript.CreateObject("WScript.Shell")
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"

If Not IsExcel2000 Then
MsgBox "This script only works for Excel 2000..."
WScript.Quit
End If

Dim NiveauSecurite, wsh

NiveauSecurite = wsh.RegRead(Cle2000)

'Weakest level path
wsh.RegWrite Cle2000, 1,"REG_DWORD"

'Opening excel workbook without security alert
Retour=wsh.Run("D:6OfficeVBAClasseurTestSecurite.xls", 3, False)


'Reset security level to previous status
wsh.RegWrite Cle2000, NiveauSecurite,"REG_DWORD"

'pour vérifier si la clé pour Excel 2000 existe bien
Function IsExcel2000()
On Error Resume Next

Res=wsh.RegRead(Cle2000)
IsExcel2000=(Err=0)
End Function


"Thierry" a écrit dans le message de
news:3fbc840f$0$27018$
Bonjour,

tout d'abord merci pour les personnes qui m'ont aidé
à résoudre mon problème de renommage d'un fichier.
J'ai un nouveau problème à vous soumettre :
à l'ouverture d'un classeur j'ai un message
"voulez vous activer les macros "
j'aimerais récuperer la réponse de ce message
afin d'executer une procedure en fonction de la réponse.
Si la personne répond "activer les macros" j'execute tel code, sinon si
la


personne répond "désactiver les macros" j'affiche un message qui dit
qu'elle

doit activer les macros et je ferme le classeur.

Je vous remercie d'avance pour votre aide.
sincèrement
thierry








Avatar
papou
Re
Regardes bien ma réponse, je t'ai fourni un code exemple
Cordialement
Pascal

"Thierry" a écrit dans le message de
news:3fbc951c$0$27051$
Bonjour,

merci mais j'ai pas trouvé sur le site
et je ne peux pas le parcourir car j'ai une connexion très bat débit
merci si possible de me donner le lien exact
srmt
thieery
"papou" <nspm> a écrit dans le message de
news:
Bonjour Thierry
Ce que tu demandes n'est pas possible.
La seule chose possible est de désactiver l'alerte macro pour
l'ouverture


d'un classeur spécifié en utilisant un script.
Voici un exemple de code (à adapter donc) trouvé (il me semble) chez
Frédéric Sigonneau http://perso.wanadoo.fr/frederic.sigonneau/office.htm
:


Cordialement
Pascal

'================== > > 'Excel Must be closed
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Excel must be closed to run this script..."
WScript.Quit
End If

Err.Clear

'objet script
Set wsh = WScript.CreateObject("WScript.Shell")
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"

If Not IsExcel2000 Then
MsgBox "This script only works for Excel 2000..."
WScript.Quit
End If

Dim NiveauSecurite, wsh

NiveauSecurite = wsh.RegRead(Cle2000)

'Weakest level path
wsh.RegWrite Cle2000, 1,"REG_DWORD"

'Opening excel workbook without security alert
Retour=wsh.Run("D:6OfficeVBAClasseurTestSecurite.xls", 3, False)


'Reset security level to previous status
wsh.RegWrite Cle2000, NiveauSecurite,"REG_DWORD"

'pour vérifier si la clé pour Excel 2000 existe bien
Function IsExcel2000()
On Error Resume Next

Res=wsh.RegRead(Cle2000)
IsExcel2000=(Err=0)
End Function


"Thierry" a écrit dans le message de
news:3fbc840f$0$27018$
Bonjour,

tout d'abord merci pour les personnes qui m'ont aidé
à résoudre mon problème de renommage d'un fichier.
J'ai un nouveau problème à vous soumettre :
à l'ouverture d'un classeur j'ai un message
"voulez vous activer les macros "
j'aimerais récuperer la réponse de ce message
afin d'executer une procedure en fonction de la réponse.
Si la personne répond "activer les macros" j'execute tel code, sinon
si



la
personne répond "désactiver les macros" j'affiche un message qui dit
qu'elle

doit activer les macros et je ferme le classeur.

Je vous remercie d'avance pour votre aide.
sincèrement
thierry