OVH Cloud OVH Cloud

Activer une option touchant a la securite a l'ouverture

13 réponses
Avatar
Florent149
Bijour a tous,

Je souhaiterais faire quelque chose de probablement impossible dans mon
projet. Je suis sous Excel 2003 et dans cette version il y a une option qui
s'appelle "Faire confiance au projet visual basic" (elle est accessible dans
Outils/macros/securité). J'ai besoin de l'activer pour que mon classeur soit
fonctionnel, mais comme il est destine a etre distribue j'aimerais que
l'utilisateur qui est sous excel 2003 n'aie pas a le faire a chaque fois
qu'il ouvre mon classeur.
Donc ma question est la suivante: Est il possible de rajouter une chtite
procedure dans "ThisWorkbook_Open()" qui activerait cette option ?
Merci a vous!
--
Flo

3 réponses

1 2
Avatar
Florent149
Ok alors Michel je viens d'essayer ton code et le seul probleme c'est que
l'onglet de droite n'est pas selectionner et du coup la case "Trust
access..." n'est pas cochee. Je ne comprends pas pourquoi le
"Application.CommandBars.FindControl(ID:627).Execute" vient apres tout le
reste, apres les combinaisons de touche par exemple...
Mais sinon c'est vrai que ca a l'air plus stable comme cela. C'est fou tout
ce qu'on apprend sur ces forums c'est genial! Merci encore Michel.

--
Flo


"Michel Pierron" wrote:

Bonjour Florent;
A partir de la version 10, instancier l'objet VBProject provoque une erreur
si la case "Faire confiance..." n'est pas cochée; donc, en l'absence
d'erreur, on sort de la procédure.
Il faut être très prudent dans l'utilisation des SendKeys, car c'est
toujours le fenêtre de premier plan qui les reçoit. Le fait de les envoyer
derrière le message box introduit ce manque de fiabilité; je te conseille
d'utiliser une tempo entre le message box et l'envoi des SendKeys afin
d'être sur que la fenêtre du classeur soit revenue au premier plan.
ActiveWorkbook.Activate ou ThisWorkbook.Activate ne sert à rien car c'est
délà la fenêtre active et le processeur
peut très bien exécuter cette instruction avant que la fenêtre du message
box soit totalement détruite.
De plus, utiliser la cominaison de touches "%tms" au lieu de
Application.CommandBars.FindControl(ID:627).Execute n'arrange pas les
choses.

Essaie quelque chose comme:
Private Sub Workbook_Open()
' the following launches a message box asking the user to "trust
' access to visual basic project", required to the spreadsheet to work.
' This option just exists from Excel v10.
' So the message box will appear only if the version number is more than 9.
Dim v As Integer: v = Val(Application.Version)
If v < 10 Then Exit Sub
' Set the VBProject object causes an error if the box "trust access
' to visual basic project" is not notched.
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
' The following case exits sub: the version is less than 10 (Excel 97...)
If Err.Number = 0 Then Set VBP = Nothing ': Exit Sub
MsgBox "You need to activate the Trust access to visual" & vbLf _
& "basic project to launch the spreadsheet !", 64
' Following the message box, one needs a temporization
' before the sending of the sendkeys.
Dim t As Single
t = Timer + 1
While Timer < t: DoEvents: Wend
' Special case for the version 10 where there is only one window
' in the message box called.
If v = 10 Then
'Application.SendKeys "%v" ' Excel English version
Application.SendKeys "%r" ' Excel French version
' Version > 10: there are 2 windows so the code selects the one
' with the option to activate
Else
'Application.SendKeys "%tmst"
'Application.SendKeys "%v" ' Excel English version
Application.SendKeys "{RIGHT}+%r" ' Excel French version
End If
Application.CommandBars.FindControl(ID:627).Execute
End Sub

MP

"Florent149" a écrit dans le message de
news:
Petite question Michel si tu es toujours dans le coin:

Si l'option "faire confiance au projet visual basic" est deja cochee a
l'ouverture, la procedure ne se lance pas ce qui est excellent mais je ne
comprends pas vraiment pourquoi! Est ce la ligne "If Err.Number = 0 Then
Set
VBP = Nothing: Exit Sub" ? Si oui j'avoue que je ne saisis pas bien.
Autre chose: il y a de temps en temps un petit bug d'Excel a l'ouverture
qui
fait qu'apres avoir affiche la Message Box, l'application est en arriere
plan
et donc les Sendkeys sont dans le vent!
Voici le code tel que je l'ai mis, dis moi ce que tu en pense Michel j'ai
aussi modifié la facon d'afficher la boite de dialogue:


Private Sub Workbook_Open()


'the following launches a message box asking the user to "trust access to
visual basic
'project", required to the spreadsheet to work. This option just exists
from
Excel v10.
'So the message box will appear only if the version number is more than
10.

Dim v As Integer: v = Val(Application.Version)
If v < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
'The following case exits sub: the version is less than 10 (Excel
97...)
If Err.Number = 0 Then Set VBP = Nothing: Exit Sub

'Special case for the version 10 where there is only one window in the
message box called
If v = 10 Then
ActiveWorkbook.Activate
MsgBox "You need to activate the Trust access to visual basic project
to
launch the spreadsheet"
ActiveWorkbook.Activate
Application.SendKeys "%tms"
Application.SendKeys "%v"

'Version > 10: there are 2 windows so the code selects the one with the
option to activate
Else
ActiveWorkbook.Activate
MsgBox "You need to activate the Trust access to visual basic project
to
launch the spreadsheet"
ActiveWorkbook.Activate
Application.SendKeys "%tmst"
Application.SendKeys "%v"

End If

End Sub



PS: desole c'est en anglais!
--
Flo


"Florent149" wrote:

Merci beaucoup Michel c'est parfait!
--
Flo


"Michel Pierron" wrote:

Re Florent;
Application.CommandBars.FindControl(ID:627).Execute affiche la boîte
de
dialogue Sécurité.
Préalablement à l'exécution de cette boîte de dialogue, on utilise
Application.SendKeys pour se positionner à l'endroit voulu lorsque la
boîte
de dialogue s'affiche d'où:

Si un seul onglet (version 10):
Application.SendKeys "%r" coche la case "Faire confiance...."

Si 2 onglets (version > 10), il faut sélectionner le 2° onglet
préalablement
donc pour que ça marche:
Application.SendKeys "{RIGHT}+%r" au lieu de Application.SendKeys
"%r+{RIGHT}" comme indiqué précédemment (je n'avais pas testé).

Il ne reste plus à l'utilisateur qu'à confirmer avec OK.

MP

"Florent149" a écrit dans le message de
news:
Excuse moi Michel mais tu utilises des instructions qui me sont
inconnues
donc puis je te redemander des explications sur ton code? Est ce
normal si
sur mon excel 2003 a l'ouverture j'ai la fenetre Securite qui
s'affiche
mais
pas sur le bon onglet?
Merci
--
Flo


"Michel Pierron" wrote:

Re Florent;
Oui, sauf qu'il te faut tenir compte de la version 10 qui n'a qu'un
seul
onglet; essaie comme ceci:

Private Sub Workbook_Open()
Dim v%: v = Val(Application.Version)
If v < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
If Err.Number = 0 Then Set VBP = Nothing: Exit Sub
If v = 10 Then
Application.SendKeys "%r"
Else
Application.SendKeys "%r+{RIGHT}"
End If
Application.CommandBars.FindControl(ID:627).Execute
End Sub

MP

"Florent149" a écrit dans le message
de
news:
Merci beaucoup Michel c'est une tres bonne solution. La cerise sur
la
macro
serait de selectionner directement l'onglet correspondant a
l'option a
cocher
lors de l'affichage de cette fenetre "securite" des macros. Est ce
possible?
Ce serait parfait! En tout cas merci encore.
--
Flo


"Michel Pierron" wrote:

Re Florent149;

A la réflexion, il faudrait mettre ce code en tout début de la
procédure
Private Sub Workbook_Open.
Si la case "Faire confiance au projet visual basic" est cochée,
il ne
se
passe rien; sinon, un message demande à l'utilisateur s'il veut
faire
confiance au projet visual basic; s'il répond Oui, la fenêtre de
dialogue
correspondante s'affiche; sinon, il y a sortie de la procédure et
aucune
macro ne sera disponible en exécution. A toi de voir si dans ce
cas,
tu
veux
boucler jusqu'à ce que la case soit cochée ou si tu veux en
rester là.

MP

"Florent149" a écrit dans le
message
de
news:
Merci beaucoup Michel pour ta proposition, mais puis je te
demander
ce
qu'il
fait exactement car j'avoue ne pas tres bien comprendre! Je
comprend
que
si
la version d'excel est inferieure a 10, il ne fait rien, et
sinon,
c'est
la
que je ne comprend pas...Merci!
--
Flo


"Michel Pierron" wrote:

Bonjour Florent149;
Une procédure automatique nécessite la modification éventuelle
de
la
base
de
registre avant l'ouverture de ton classeur; mais tu peux
alerter
l'utilisateur avec quelque chose comme:

Private Sub Workbook_Open()
' Ici, code autre code éventuel


If Val(Application.Version) < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
If Err.Number Then
If MsgBox("Faire confiance au projet " _
& "Visual Basic ?", 32 + 4) = 7 Then Exit Sub
Application.SendKeys "%r"
Application.CommandBars.FindControl(ID:627).Execute
Else
Set VBP = Nothing
End If
End Sub

MP


"Florent149" a écrit dans le
message
de
news:
Bijour a tous,

Je souhaiterais faire quelque chose de probablement
impossible






















Avatar
Michel Pierron
Re Florent;
Dans ce cas, plutôt que Application.SendKeys "{RIGHT}+%r", essaie la
combinaison de touches:
Application.SendKeys "%tv"

Cela devrait te donner satisfaction. La boîte de dialogue Sécurité est une
boîte modale; en conséquence, une fois celle-ci affichée, tu n'as plus que
les possibilités OK ou Cancel. Comme indiqué précédemment, l'instruction
SendKeys est placée avant celle d'affichage de la bôite de dialogue, mais
lors de l'exécution du code, celles-ci sont prises en compte lors de la
création de la fenêtre Sécurité avant même que cette dernière soit visible.

MP

"Florent149" a écrit dans le message de
news:
Ok alors Michel je viens d'essayer ton code et le seul probleme c'est que
l'onglet de droite n'est pas selectionner et du coup la case "Trust
access..." n'est pas cochee. Je ne comprends pas pourquoi le
"Application.CommandBars.FindControl(ID:627).Execute" vient apres tout
le
reste, apres les combinaisons de touche par exemple...
Mais sinon c'est vrai que ca a l'air plus stable comme cela. C'est fou
tout
ce qu'on apprend sur ces forums c'est genial! Merci encore Michel.

--
Flo


"Michel Pierron" wrote:

Bonjour Florent;
A partir de la version 10, instancier l'objet VBProject provoque une
erreur
si la case "Faire confiance..." n'est pas cochée; donc, en l'absence
d'erreur, on sort de la procédure.
Il faut être très prudent dans l'utilisation des SendKeys, car c'est
toujours le fenêtre de premier plan qui les reçoit. Le fait de les
envoyer
derrière le message box introduit ce manque de fiabilité; je te conseille
d'utiliser une tempo entre le message box et l'envoi des SendKeys afin
d'être sur que la fenêtre du classeur soit revenue au premier plan.
ActiveWorkbook.Activate ou ThisWorkbook.Activate ne sert à rien car c'est
délà la fenêtre active et le processeur
peut très bien exécuter cette instruction avant que la fenêtre du message
box soit totalement détruite.
De plus, utiliser la cominaison de touches "%tms" au lieu de
Application.CommandBars.FindControl(ID:627).Execute n'arrange pas les
choses.

Essaie quelque chose comme:
Private Sub Workbook_Open()
' the following launches a message box asking the user to "trust
' access to visual basic project", required to the spreadsheet to work.
' This option just exists from Excel v10.
' So the message box will appear only if the version number is more than
9.
Dim v As Integer: v = Val(Application.Version)
If v < 10 Then Exit Sub
' Set the VBProject object causes an error if the box "trust access
' to visual basic project" is not notched.
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
' The following case exits sub: the version is less than 10 (Excel 97...)
If Err.Number = 0 Then Set VBP = Nothing ': Exit Sub
MsgBox "You need to activate the Trust access to visual" & vbLf _
& "basic project to launch the spreadsheet !", 64
' Following the message box, one needs a temporization
' before the sending of the sendkeys.
Dim t As Single
t = Timer + 1
While Timer < t: DoEvents: Wend
' Special case for the version 10 where there is only one window
' in the message box called.
If v = 10 Then
'Application.SendKeys "%v" ' Excel English version
Application.SendKeys "%r" ' Excel French version
' Version > 10: there are 2 windows so the code selects the one
' with the option to activate
Else
'Application.SendKeys "%tmst"
'Application.SendKeys "%v" ' Excel English version
Application.SendKeys "{RIGHT}+%r" ' Excel French version
End If
Application.CommandBars.FindControl(ID:627).Execute
End Sub

MP

"Florent149" a écrit dans le message de
news:
Petite question Michel si tu es toujours dans le coin:

Si l'option "faire confiance au projet visual basic" est deja cochee a
l'ouverture, la procedure ne se lance pas ce qui est excellent mais je
ne
comprends pas vraiment pourquoi! Est ce la ligne "If Err.Number = 0
Then
Set
VBP = Nothing: Exit Sub" ? Si oui j'avoue que je ne saisis pas bien.
Autre chose: il y a de temps en temps un petit bug d'Excel a
l'ouverture
qui
fait qu'apres avoir affiche la Message Box, l'application est en
arriere
plan
et donc les Sendkeys sont dans le vent!
Voici le code tel que je l'ai mis, dis moi ce que tu en pense Michel
j'ai
aussi modifié la facon d'afficher la boite de dialogue:


Private Sub Workbook_Open()


'the following launches a message box asking the user to "trust access
to
visual basic
'project", required to the spreadsheet to work. This option just exists
from
Excel v10.
'So the message box will appear only if the version number is more than
10.

Dim v As Integer: v = Val(Application.Version)
If v < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
'The following case exits sub: the version is less than 10 (Excel
97...)
If Err.Number = 0 Then Set VBP = Nothing: Exit Sub

'Special case for the version 10 where there is only one window in
the
message box called
If v = 10 Then
ActiveWorkbook.Activate
MsgBox "You need to activate the Trust access to visual basic
project
to
launch the spreadsheet"
ActiveWorkbook.Activate
Application.SendKeys "%tms"
Application.SendKeys "%v"

'Version > 10: there are 2 windows so the code selects the one with
the
option to activate
Else
ActiveWorkbook.Activate
MsgBox "You need to activate the Trust access to visual basic
project
to
launch the spreadsheet"
ActiveWorkbook.Activate
Application.SendKeys "%tmst"
Application.SendKeys "%v"

End If

End Sub



PS: desole c'est en anglais!
--
Flo


"Florent149" wrote:

Merci beaucoup Michel c'est parfait!
--
Flo


"Michel Pierron" wrote:

Re Florent;
Application.CommandBars.FindControl(ID:627).Execute affiche la
boîte
de
dialogue Sécurité.
Préalablement à l'exécution de cette boîte de dialogue, on utilise
Application.SendKeys pour se positionner à l'endroit voulu lorsque
la
boîte
de dialogue s'affiche d'où:

Si un seul onglet (version 10):
Application.SendKeys "%r" coche la case "Faire confiance...."

Si 2 onglets (version > 10), il faut sélectionner le 2° onglet
préalablement
donc pour que ça marche:
Application.SendKeys "{RIGHT}+%r" au lieu de Application.SendKeys
"%r+{RIGHT}" comme indiqué précédemment (je n'avais pas testé).

Il ne reste plus à l'utilisateur qu'à confirmer avec OK.

MP

"Florent149" a écrit dans le message
de
news:
Excuse moi Michel mais tu utilises des instructions qui me sont
inconnues
donc puis je te redemander des explications sur ton code? Est ce
normal si
sur mon excel 2003 a l'ouverture j'ai la fenetre Securite qui
s'affiche
mais
pas sur le bon onglet?
Merci
--
Flo


"Michel Pierron" wrote:

Re Florent;
Oui, sauf qu'il te faut tenir compte de la version 10 qui n'a
qu'un
seul
onglet; essaie comme ceci:

Private Sub Workbook_Open()
Dim v%: v = Val(Application.Version)
If v < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
If Err.Number = 0 Then Set VBP = Nothing: Exit Sub
If v = 10 Then
Application.SendKeys "%r"
Else
Application.SendKeys "%r+{RIGHT}"
End If
Application.CommandBars.FindControl(ID:627).Execute
End Sub

MP

"Florent149" a écrit dans le
message
de
news:
Merci beaucoup Michel c'est une tres bonne solution. La cerise
sur
la
macro
serait de selectionner directement l'onglet correspondant a
l'option a
cocher
lors de l'affichage de cette fenetre "securite" des macros. Est
ce
possible?
Ce serait parfait! En tout cas merci encore.
--
Flo


"Michel Pierron" wrote:

Re Florent149;

A la réflexion, il faudrait mettre ce code en tout début de la
procédure
Private Sub Workbook_Open.
Si la case "Faire confiance au projet visual basic" est
cochée,
il ne
se
passe rien; sinon, un message demande à l'utilisateur s'il
veut
faire
confiance au projet visual basic; s'il répond Oui, la fenêtre
de
dialogue
correspondante s'affiche; sinon, il y a sortie de la procédure
et
aucune
macro ne sera disponible en exécution. A toi de voir si dans
ce
cas,
tu
veux
boucler jusqu'à ce que la case soit cochée ou si tu veux en
rester là.

MP

"Florent149" a écrit dans le
message
de
news:
Merci beaucoup Michel pour ta proposition, mais puis je te
demander
ce
qu'il
fait exactement car j'avoue ne pas tres bien comprendre! Je
comprend
que
si
la version d'excel est inferieure a 10, il ne fait rien, et
sinon,
c'est
la
que je ne comprend pas...Merci!
--
Flo


"Michel Pierron" wrote:

Bonjour Florent149;
Une procédure automatique nécessite la modification
éventuelle
de
la
base
de
registre avant l'ouverture de ton classeur; mais tu peux
alerter
l'utilisateur avec quelque chose comme:

Private Sub Workbook_Open()
' Ici, code autre code éventuel


If Val(Application.Version) < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
If Err.Number Then
If MsgBox("Faire confiance au projet " _
& "Visual Basic ?", 32 + 4) = 7 Then Exit Sub
Application.SendKeys "%r"
Application.CommandBars.FindControl(ID:627).Execute
Else
Set VBP = Nothing
End If
End Sub

MP


"Florent149" a écrit dans
le
message
de
news:
Bijour a tous,

Je souhaiterais faire quelque chose de probablement
impossible
























Avatar
Florent149
Alors j'ai essaye et ca ne coche pas la case! J'ai donc tente un:

"
Application.SendKeys "%t"
Application.SendKeys "%v"
"


Je pense que c'etait encore un probleme de temporisation. Bref ca marche
comme ca et c'est parfait. Je te remercie infiniment Michel pour ta precieuse
aide, j'ai appris pleins de choses interessantes!
Bonne journee

--
Flo


"Michel Pierron" wrote:

Re Florent;
Dans ce cas, plutôt que Application.SendKeys "{RIGHT}+%r", essaie la
combinaison de touches:
Application.SendKeys "%tv"

Cela devrait te donner satisfaction. La boîte de dialogue Sécurité est une
boîte modale; en conséquence, une fois celle-ci affichée, tu n'as plus que
les possibilités OK ou Cancel. Comme indiqué précédemment, l'instruction
SendKeys est placée avant celle d'affichage de la bôite de dialogue, mais
lors de l'exécution du code, celles-ci sont prises en compte lors de la
création de la fenêtre Sécurité avant même que cette dernière soit visible.

MP

"Florent149" a écrit dans le message de
news:
Ok alors Michel je viens d'essayer ton code et le seul probleme c'est que
l'onglet de droite n'est pas selectionner et du coup la case "Trust
access..." n'est pas cochee. Je ne comprends pas pourquoi le
"Application.CommandBars.FindControl(ID:627).Execute" vient apres tout
le
reste, apres les combinaisons de touche par exemple...
Mais sinon c'est vrai que ca a l'air plus stable comme cela. C'est fou
tout
ce qu'on apprend sur ces forums c'est genial! Merci encore Michel.

--
Flo


"Michel Pierron" wrote:

Bonjour Florent;
A partir de la version 10, instancier l'objet VBProject provoque une
erreur
si la case "Faire confiance..." n'est pas cochée; donc, en l'absence
d'erreur, on sort de la procédure.
Il faut être très prudent dans l'utilisation des SendKeys, car c'est
toujours le fenêtre de premier plan qui les reçoit. Le fait de les
envoyer
derrière le message box introduit ce manque de fiabilité; je te conseille
d'utiliser une tempo entre le message box et l'envoi des SendKeys afin
d'être sur que la fenêtre du classeur soit revenue au premier plan.
ActiveWorkbook.Activate ou ThisWorkbook.Activate ne sert à rien car c'est
délà la fenêtre active et le processeur
peut très bien exécuter cette instruction avant que la fenêtre du message
box soit totalement détruite.
De plus, utiliser la cominaison de touches "%tms" au lieu de
Application.CommandBars.FindControl(ID:627).Execute n'arrange pas les
choses.

Essaie quelque chose comme:
Private Sub Workbook_Open()
' the following launches a message box asking the user to "trust
' access to visual basic project", required to the spreadsheet to work.
' This option just exists from Excel v10.
' So the message box will appear only if the version number is more than
9.
Dim v As Integer: v = Val(Application.Version)
If v < 10 Then Exit Sub
' Set the VBProject object causes an error if the box "trust access
' to visual basic project" is not notched.
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
' The following case exits sub: the version is less than 10 (Excel 97...)
If Err.Number = 0 Then Set VBP = Nothing ': Exit Sub
MsgBox "You need to activate the Trust access to visual" & vbLf _
& "basic project to launch the spreadsheet !", 64
' Following the message box, one needs a temporization
' before the sending of the sendkeys.
Dim t As Single
t = Timer + 1
While Timer < t: DoEvents: Wend
' Special case for the version 10 where there is only one window
' in the message box called.
If v = 10 Then
'Application.SendKeys "%v" ' Excel English version
Application.SendKeys "%r" ' Excel French version
' Version > 10: there are 2 windows so the code selects the one
' with the option to activate
Else
'Application.SendKeys "%tmst"
'Application.SendKeys "%v" ' Excel English version
Application.SendKeys "{RIGHT}+%r" ' Excel French version
End If
Application.CommandBars.FindControl(ID:627).Execute
End Sub

MP

"Florent149" a écrit dans le message de
news:
Petite question Michel si tu es toujours dans le coin:

Si l'option "faire confiance au projet visual basic" est deja cochee a
l'ouverture, la procedure ne se lance pas ce qui est excellent mais je
ne
comprends pas vraiment pourquoi! Est ce la ligne "If Err.Number = 0
Then
Set
VBP = Nothing: Exit Sub" ? Si oui j'avoue que je ne saisis pas bien.
Autre chose: il y a de temps en temps un petit bug d'Excel a
l'ouverture
qui
fait qu'apres avoir affiche la Message Box, l'application est en
arriere
plan
et donc les Sendkeys sont dans le vent!
Voici le code tel que je l'ai mis, dis moi ce que tu en pense Michel
j'ai
aussi modifié la facon d'afficher la boite de dialogue:


Private Sub Workbook_Open()


'the following launches a message box asking the user to "trust access
to
visual basic
'project", required to the spreadsheet to work. This option just exists
from
Excel v10.
'So the message box will appear only if the version number is more than
10.

Dim v As Integer: v = Val(Application.Version)
If v < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
'The following case exits sub: the version is less than 10 (Excel
97...)
If Err.Number = 0 Then Set VBP = Nothing: Exit Sub

'Special case for the version 10 where there is only one window in
the
message box called
If v = 10 Then
ActiveWorkbook.Activate
MsgBox "You need to activate the Trust access to visual basic
project
to
launch the spreadsheet"
ActiveWorkbook.Activate
Application.SendKeys "%tms"
Application.SendKeys "%v"

'Version > 10: there are 2 windows so the code selects the one with
the
option to activate
Else
ActiveWorkbook.Activate
MsgBox "You need to activate the Trust access to visual basic
project
to
launch the spreadsheet"
ActiveWorkbook.Activate
Application.SendKeys "%tmst"
Application.SendKeys "%v"

End If

End Sub



PS: desole c'est en anglais!
--
Flo


"Florent149" wrote:

Merci beaucoup Michel c'est parfait!
--
Flo


"Michel Pierron" wrote:

Re Florent;
Application.CommandBars.FindControl(ID:627).Execute affiche la
boîte
de
dialogue Sécurité.
Préalablement à l'exécution de cette boîte de dialogue, on utilise
Application.SendKeys pour se positionner à l'endroit voulu lorsque
la
boîte
de dialogue s'affiche d'où:

Si un seul onglet (version 10):
Application.SendKeys "%r" coche la case "Faire confiance...."

Si 2 onglets (version > 10), il faut sélectionner le 2° onglet
préalablement
donc pour que ça marche:
Application.SendKeys "{RIGHT}+%r" au lieu de Application.SendKeys
"%r+{RIGHT}" comme indiqué précédemment (je n'avais pas testé).

Il ne reste plus à l'utilisateur qu'à confirmer avec OK.

MP

"Florent149" a écrit dans le message
de
news:
Excuse moi Michel mais tu utilises des instructions qui me sont
inconnues
donc puis je te redemander des explications sur ton code? Est ce
normal si
sur mon excel 2003 a l'ouverture j'ai la fenetre Securite qui
s'affiche
mais
pas sur le bon onglet?
Merci
--
Flo


"Michel Pierron" wrote:

Re Florent;
Oui, sauf qu'il te faut tenir compte de la version 10 qui n'a
qu'un
seul
onglet; essaie comme ceci:

Private Sub Workbook_Open()
Dim v%: v = Val(Application.Version)
If v < 10 Then Exit Sub
Dim VBP As Object
On Error Resume Next
Set VBP = ThisWorkbook.VBProject
If Err.Number = 0 Then Set VBP = Nothing: Exit Sub
If v = 10 Then
Application.SendKeys "%r"
Else
Application.SendKeys "%r+{RIGHT}"
End If
Application.CommandBars.FindControl(ID:627).Execute
End Sub

MP

"Florent149" a écrit dans le
message
de
news:
Merci beaucoup Michel c'est une tres bonne solution. La cerise
sur
la
macro
serait de selectionner directement l'onglet correspondant a
l'option a
cocher
lors de l'affichage de cette fenetre "securite" des macros. Est
ce
possible?
Ce serait parfait! En tout cas merci encore.
--
Flo


"Michel Pierron" wrote:

Re Florent149;

A la réflexion, il faudrait mettre ce code en tout début de la
procédure
Private Sub Workbook_Open.
Si la case "Faire confiance au projet visual basic" est
cochée,
il ne
se
passe rien; sinon, un message demande à l'utilisateur s'il
veut
faire
confiance au projet visual basic; s'il répond Oui, la fenêtre
de
dialogue
correspondante s'affiche; sinon, il y a sortie de la procédure
et
aucune
macro ne sera disponible en exécution. A toi de voir si dans
ce
cas,
tu
veux
boucler jusqu'à ce que la case soit cochée ou si tu veux en
rester là.

MP

"Florent149" a écrit dans le
message
de
news:
Merci beaucoup Michel pour ta proposition, mais puis je te






















1 2