OVH Cloud OVH Cloud

Macro à l'ouverture d'un fichier excel

4 réponses
Avatar
jojo
Bonjour,
j'aimerais que lorsque j'ouvre un fichier excel,
celui-ci ne me demande pas si je veux 'activer ou non les
macros'. J'aimerais que ce soit automatiquement 'oui=20
activer les macros'.
Le fichier dont je parles, sera diffus=E9 =E0 d'autres
utilisateurs que moi et je ne veux pas qu'ils aient le
choix d'activation ou non.
Ce fichier contient des macros en vba et je crois
savoir qu'il serait possible d'automatiser cette
ouverture en vba, mais comment faire ?
Ou si quelqu'un =E0 une autre id=E9e ?
Merci par avance =E0 tous ceux qui me r=E9pondront
jojo

4 réponses

Avatar
Dédé
Salut jojo !

Pour cela, il faut soit que tu mette la sécurité sur "faible" (Menu Outils,
Macro, Sécurité...) soit que tu fasse un certificat avec Selfcert pour ton
projet qu'il faudra installer sur tous les postes sur lesquels tu enverra
ton fichier.

À ma connaissance, si les utilisateur ont mis leur niveau de sécurité sur
"moyen" (ce qui me semble être le paramètre par défaut) il n'est pas
possible de le changer vis une macro ! Autrement, la sécurité ne serait plus
utile ;-))

Pour ce qui concerne le serlfcert, fais une recherche avec les outils de
recherche de Windows pour "serlfcert.exe" et suis les indications qui
s'affichent à l'écran. Ensuite, tu devra enregistrer ton certificat dans
tous les postes à qui tu enverra ton fichier. Une solution serait de le
faire soit toi-même, soit de mettre un fichier *.txt pour décrire comment
enregistrer le certificat en local.

Salutations
Dédé

--
Pour répondre, enlever le NOSPAM
"jojo" a écrit dans le message de
news:088201c36581$1a75cc20$
Bonjour,
j'aimerais que lorsque j'ouvre un fichier excel,
celui-ci ne me demande pas si je veux 'activer ou non les
macros'. J'aimerais que ce soit automatiquement 'oui
activer les macros'.
Le fichier dont je parles, sera diffusé à d'autres
utilisateurs que moi et je ne veux pas qu'ils aient le
choix d'activation ou non.
Ce fichier contient des macros en vba et je crois
savoir qu'il serait possible d'automatiser cette
ouverture en vba, mais comment faire ?
Ou si quelqu'un à une autre idée ?
Merci par avance à tous ceux qui me répondront
jojo
Avatar
jojo
Merci dédé pour ton précieux conseil, mais j'aurais bien
aimé que ce soit automatique en vba.

Si quelqu'un à une autre idée ...


-----Message d'origine-----
Salut jojo !

Pour cela, il faut soit que tu mette la sécurité
sur "faible" (Menu Outils,

Macro, Sécurité...) soit que tu fasse un certificat avec
Selfcert pour ton

projet qu'il faudra installer sur tous les postes sur
lesquels tu enverra

ton fichier.

À ma connaissance, si les utilisateur ont mis leur niveau
de sécurité sur

"moyen" (ce qui me semble être le paramètre par défaut)
il n'est pas

possible de le changer vis une macro ! Autrement, la
sécurité ne serait plus

utile ;-))

Pour ce qui concerne le serlfcert, fais une recherche
avec les outils de

recherche de Windows pour "serlfcert.exe" et suis les
indications qui

s'affichent à l'écran. Ensuite, tu devra enregistrer ton
certificat dans

tous les postes à qui tu enverra ton fichier. Une
solution serait de le

faire soit toi-même, soit de mettre un fichier *.txt pour
décrire comment

enregistrer le certificat en local.

Salutations
Dédé

--
Pour répondre, enlever le NOSPAM
"jojo" a écrit dans le message de
news:088201c36581$1a75cc20$
Bonjour,
j'aimerais que lorsque j'ouvre un fichier excel,
celui-ci ne me demande pas si je veux 'activer ou non les
macros'. J'aimerais que ce soit automatiquement 'oui
activer les macros'.
Le fichier dont je parles, sera diffusé à d'autres
utilisateurs que moi et je ne veux pas qu'ils aient le
choix d'activation ou non.
Ce fichier contient des macros en vba et je crois
savoir qu'il serait possible d'automatiser cette
ouverture en vba, mais comment faire ?
Ou si quelqu'un à une autre idée ?
Merci par avance à tous ceux qui me répondront
jojo


.



Avatar
Nicolas B.
Salut à tous,

Le même genre de manip est peut-être
possible avec Excel 97 et/ou Xp, si leur niveau de sécurité est également
stocké dans le registre.


C'est en effet possible, mais il faut indiquer la bonne version d'excel dans
la clé du registre :
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"
Pour Office XP, par exemple, il faut remplacer 9.0 par 10.0

--
Nicolas B.

wilderwein a récemment écrit dans un message de news :
"Dédé" a écrit dans le message de
news:%
Automatique en VBA, IMPOSSIBLE !!

Désolé mais autrement il n'y aurait plus de sécurité ...

Salutations
Dédé



Oui mais il reste le vbs.... Je cite :

Dans un fichier texte (Notepad) recopie le code ci-dessous puis
enregistre le
fichier sous, par exemple, "ModifTemporaireSecurite.vbs". Le nom
importe peu,
seule l'extension a de l'importance.
Après avoir vérifié qu'Excel est bien fermé, le niveau de sécurité
actuel (1, 2
ou 3) est récupéré puis fixé à 1 (pas d'alerte macro). Le fichier qui
t'intéresse est ensuite lancé et enfin le niveau de sécurité de
départ est restauré.

Un raccourci sur le bureau vers le script, tu changes d'icone et de
nom, et le
tour est joué.Le même genre de manip est peut-être
possible avec Excel 97 et/ou Xp, si leur niveau de sécurité est
également stocké dans le registre.

'================== > 'Excel doit être fermé
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Excel doit être fermé pour exécuter ce script..."
WScript.Quit
End If

Err.Clear

'objet script et chemin de la clé du registre pour Excel 2000
Set wsh = WScript.CreateObject("WScript.Shell")
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"

If Not IsExcel2000 Then
MsgBox "Ce script ne peut désactiver l'alerte macro que pour Excel
2000..."
WScript.Quit
End If

Dim NiveauSecurite, wsh

'niveau de sécurité en début d'exécution
NiveauSecurite = wsh.RegRead(Cle2000)

'changement pour le niveau le plus faible
wsh.RegWrite Cle2000, 1,"REG_DWORD"

'ouverture du classeur sans alerte macro
Retour=wsh.Run("D:6OfficeVBAClasseurTestSecurite.xls", 3, False)


'rétablissement du niveau de sécurité de départ
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

Frédéric Sigonneau



Avatar
Dédé
Effectivement, c'est pas mal !

Mais, je suis pas pour ce genre d'opérations ! Après ça, la sécurité, elle
sert à quoi ?? maintenant, que toute la planètre sait comment faire pour
passer outre la sécurité des macros, faudra pas venir pleurer en cas de
macros non souhaitées et autres ...;-))

Salutations
Dédé

--
Pour répondre, enlever le NOSPAM
"Nicolas B." a écrit dans le message de
news:
Salut à tous,

Le même genre de manip est peut-être
possible avec Excel 97 et/ou Xp, si leur niveau de sécurité est
également


stocké dans le registre.


C'est en effet possible, mais il faut indiquer la bonne version d'excel
dans

la clé du registre :
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"
Pour Office XP, par exemple, il faut remplacer 9.0 par 10.0

--
Nicolas B.

wilderwein a récemment écrit dans un message de news :
"Dédé" a écrit dans le message de
news:%
Automatique en VBA, IMPOSSIBLE !!

Désolé mais autrement il n'y aurait plus de sécurité ...

Salutations
Dédé



Oui mais il reste le vbs.... Je cite :

Dans un fichier texte (Notepad) recopie le code ci-dessous puis
enregistre le
fichier sous, par exemple, "ModifTemporaireSecurite.vbs". Le nom
importe peu,
seule l'extension a de l'importance.
Après avoir vérifié qu'Excel est bien fermé, le niveau de sécurité
actuel (1, 2
ou 3) est récupéré puis fixé à 1 (pas d'alerte macro). Le fichier qui
t'intéresse est ensuite lancé et enfin le niveau de sécurité de
départ est restauré.

Un raccourci sur le bureau vers le script, tu changes d'icone et de
nom, et le
tour est joué.Le même genre de manip est peut-être
possible avec Excel 97 et/ou Xp, si leur niveau de sécurité est
également stocké dans le registre.

'================== > > 'Excel doit être fermé
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Excel doit être fermé pour exécuter ce script..."
WScript.Quit
End If

Err.Clear

'objet script et chemin de la clé du registre pour Excel 2000
Set wsh = WScript.CreateObject("WScript.Shell")
Cle2000 = "HKCUSoftwareMicrosoftOffice9.0ExcelSecurityLevel"

If Not IsExcel2000 Then
MsgBox "Ce script ne peut désactiver l'alerte macro que pour Excel
2000..."
WScript.Quit
End If

Dim NiveauSecurite, wsh

'niveau de sécurité en début d'exécution
NiveauSecurite = wsh.RegRead(Cle2000)

'changement pour le niveau le plus faible
wsh.RegWrite Cle2000, 1,"REG_DWORD"

'ouverture du classeur sans alerte macro
Retour=wsh.Run("D:6OfficeVBAClasseurTestSecurite.xls", 3, False)


'rétablissement du niveau de sécurité de départ
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

Frédéric Sigonneau