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

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

10 réponses

1 2
Avatar
Michel Pierron
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 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


Avatar
Florent149
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 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







Avatar
Michel Pierron
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 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









Avatar
Florent149
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 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














Avatar
Michel Pierron
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 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
















Avatar
Florent149
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 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





















Avatar
Michel Pierron
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
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























Avatar
Florent149
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
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




























Avatar
Florent149
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
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






























Avatar
Michel Pierron
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
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
































1 2