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

en V2007, problème de sécurité macro

16 réponses
Avatar
Papyjac
Bonjour,

J'ai une macro (VB136.ppt) PowerPoint qui fonctionne en V2003

Cette macro fonctionne également en mode compatbilité sous V2007, sous
réserve de :
1. cocher "accès approuvé au modèle d'objet du projet VBA"
2. créer un emplacement approuvé contenant le composant

Si j'effectue la conversion de VB136.ppt par enregistrer sous VB136.pptm :
1. je peux exécuter une macro déclenchée par un bouton de commande,
2. je ne paux pas exécuter une macros déclenchée par un bouton de barres
d'outils => j'ai le message "la macro est introuvable ou a été désactivée en
raison de vos paramètres de sécurité"

A noter, que j'ai effectué exactement la même opération sous Excel avec succès

J'ai du sauter un épisode de cette triste histoire du passage en V2007 !

--
Papyjac

10 réponses

1 2
Avatar
Geo
Bonjour à Papyjac qui nous a écrit :


Si j'effectue la conversion de VB136.ppt par enregistrer sous VB136.pptm :
1. je peux exécuter une macro déclenchée par un bouton de commande,
2. je ne paux pas exécuter une macros déclenchée par un bouton de barres
d'outils => j'ai le message "la macro est introuvable ou a été désactivée en
raison de vos paramètres de sécurité"



Et en mettant le pptm dans un emplacement approuvé ?

--
A+
Avatar
Papyjac
Bonjour geo

et merci de répondre,

Oui, j'ai d'abord autorisé l'emplacement pour pouvoir exécuter la version
VB136.ppt en V2003
ensuite j'ai crée VB136.pptm au même endroit

Je suspecte le paramètre de Onaction:="Test"
d'abord la procédure Test n'est en PRIVATE SUB car ça ne fonctionne pas :
j'ai mis SUB
Ensuite j'ai testé avec Onaction:= chemincomplet & "!Test", car j'utilisais
cette technique en V2000

J'ai également en testant le clic :
1. soit avec le composant ouvert
2. Soit avec le composant fermé

Ce scénario fonctionne sous V2007 pour VB136.ppt mais pas pour VB136.pptm


--
Papyjac


"Geo" a écrit :

Bonjour à Papyjac qui nous a écrit :


> Si j'effectue la conversion de VB136.ppt par enregistrer sous VB136.pptm :
> 1. je peux exécuter une macro déclenchée par un bouton de commande,
> 2. je ne paux pas exécuter une macros déclenchée par un bouton de barres
> d'outils => j'ai le message "la macro est introuvable ou a été désactivée en
> raison de vos paramètres de sécurité"

Et en mettant le pptm dans un emplacement approuvé ?

--
A+





Avatar
Geo
Bonjour

Je suspecte le paramètre de Onaction:="Test"



Il est où ce paramètre ? Ces menus qui existaient en 2003, n'existent
plus en 2007.
A moins que vous ayez modifié le ruban ?

d'abord la procédure Test n'est en PRIVATE SUB car ça ne fonctionne pas :
j'ai mis SUB
Ensuite j'ai testé avec Onaction:= chemincomplet & "!Test", car j'utilisais
cette technique en V2000



Je viens de faire un essai en mettant le bouton de commande dans la
barre d'outils Accès rapide, ça marche bien avec le niveau de sécurité
au minimum.

--
A+
Avatar
Papyjac
Bonjour geo

Non, je n'ai rien changé dans le ruban

Le paramètre dont je parle, c'est la propriété Onaction de l'objet Controls

Je te fais voir le code VBA pour créer la barre d'outils :
Sub CommandButton1Click(Optional X As Boolean)
'_Gestion de l'événement clic
O_Outil = ActivePresentation.Name
On Error Resume Next
CommandBars(O_Outil).Delete
On Error GoTo 0
With CommandBars.Add(Name:=O_Outil, Position:=msoBarFloating)
.Visible = True
With .Controls.Add(Type:=msoControlButton)
.Style = msoButtonIcon
.OnAction = "Test"
.TooltipText = "Tester le bouton"
.FaceId = 59
End With
End With
SlideShowWindows(1).View.Exit
End Sub


Sub Test()
MsgBox "Test_2. coucou"
End Sub

La procédure CommandButton1Click fonctionne toujours

La procédure Test fonctionne bien sous V2003 et sous V2007 en compatibilité
dans un composant VB136.ppt. Mais ne fonctionne pas sous V2007 dans un
composant VB136pptm

--
Papyjac


"Geo" a écrit :

Bonjour

> Je suspecte le paramètre de Onaction:="Test"

Il est où ce paramètre ? Ces menus qui existaient en 2003, n'existent
plus en 2007.
A moins que vous ayez modifié le ruban ?

> d'abord la procédure Test n'est en PRIVATE SUB car ça ne fonctionne pas :
> j'ai mis SUB
> Ensuite j'ai testé avec Onaction:= chemincomplet & "!Test", car j'utilisais
> cette technique en V2000

Je viens de faire un essai en mettant le bouton de commande dans la
barre d'outils Accès rapide, ça marche bien avec le niveau de sécurité
au minimum.

--
A+





Avatar
Geo
Bonjour à Papyjac qui nous a écrit :

Je te fais voir le code VBA pour créer la barre d'outils :



Bonne idée

Sub CommandButton1Click(Optional X As Boolean)



Pour un bouton de commande c'est plutôt
CommandButton1_Click()
Je ne me souviens pas si c'était différent dans les version
précédentes.
De plus je ne saurais trop vous conseiller de mettre un
Option Explicit
en tête de module.
Ça permet de repérer les fautes de frappe dans les noms de variables.

With CommandBars.Add(Name:=O_Outil, Position:=msoBarFloating)



Les barres d'outils n'existent plus en version 2007, le code est
accepté mais n'a aucun effet chez moi.
Apparemment chez vous ça crée une barre d'outils.

Je ne sais pas trop quoi vous dire.

--
A+
Avatar
Papyjac
Bonjour Geo

Oui, j'ai bien Option Explicit

Tu trouveras la barre d'outils dans le menu Compléments

Effectivement les barres d'outils n'existent plus, mais il en existe encore
de nombreuses, alors Certaines fonction de Excel 4 fonctionnent encore en
V2007, les barres d'outils sont encore acceptés pour quelques temps...

--
Papyjac


"Geo" a écrit :

Bonjour à Papyjac qui nous a écrit :

> Je te fais voir le code VBA pour créer la barre d'outils :

Bonne idée

> Sub CommandButton1Click(Optional X As Boolean)

Pour un bouton de commande c'est plutôt
CommandButton1_Click()
Je ne me souviens pas si c'était différent dans les version
précédentes.
De plus je ne saurais trop vous conseiller de mettre un
Option Explicit
en tête de module.
Ça permet de repérer les fautes de frappe dans les noms de variables.

> With CommandBars.Add(Name:=O_Outil, Position:=msoBarFloating)

Les barres d'outils n'existent plus en version 2007, le code est
accepté mais n'a aucun effet chez moi.
Apparemment chez vous ça crée une barre d'outils.

Je ne sais pas trop quoi vous dire.

--
A+





Avatar
Geo
Bonsoir

Tu trouveras la barre d'outils dans le menu Compléments



Bien vu.

J'ai donc mis la macro Click dans la diapo où est le bouton.
Si on met la macro test dans la même diapo, elle marche.
Si on la met dans un module il ne la trouve pas.
Pour cela il suffit de mettre un ! devant.
Exemple : .OnAction = "!Test2"
En image :
http://cjoint.com/data/jfut08zqb0.htm


--
A+
Avatar
Papyjac
Bonjour Geo et grand merci,

Il y a un grand mieux,

Effectivement, je suis bien dans ce cas là, ça marche
Mais je souhaite allez un petit peu plus loin, c'est à dire exécuter la
macro test2 du bouton de la barre d'outils alors que le classeur VB136.pptm
est fermé

Si je peux abuser de ta diligence

En principe, sous V2003, il charge le classeur, puis il exécute la macro,
puis il se referme naturellement. Il ne reste pas mémoire.

Au lieu de mettre Onaction:="!Test2" je mets Onaction:= ''" &
Presentations(presentations.count).FullName & "'!Test2"

je mets le chemin complet encadré par des apostrophes à cause des caractères
spéciaux. malheurensement Thispresentation n'existe pas pas plus que
macrocontainer

--
Papyjac


"Geo" a écrit :

Bonsoir

> Tu trouveras la barre d'outils dans le menu Compléments

Bien vu.

J'ai donc mis la macro Click dans la diapo où est le bouton.
Si on met la macro test dans la même diapo, elle marche.
Si on la met dans un module il ne la trouve pas.
Pour cela il suffit de mettre un ! devant.
Exemple : .OnAction = "!Test2"
En image :
http://cjoint.com/data/jfut08zqb0.htm


--
A+





Avatar
Geo
Bonsoir

Effectivement, je suis bien dans ce cas là, ça marche
Mais je souhaite allez un petit peu plus loin, c'est à dire exécuter la
macro test2 du bouton de la barre d'outils alors que le classeur VB136.pptm
est fermé



Ouille Ouille Ouille
On verra ça à tête reposée demain.

Bonne nuit.

--
A+
Avatar
Geo
Bonjour

En principe, sous V2003, il charge le classeur, puis il exécute la macro,
puis il se referme naturellement. Il ne reste pas mémoire.

Au lieu de mettre Onaction:="!Test2" je mets Onaction:= ''" &
Presentations(presentations.count).FullName & "'!Test2"



Il doit me manquer des éléments.
Presentations(presentations.count) correspond à la dernière
présentation ouverte
Ca marche bien si la macro est dans celle-ci.
Mais je ne vois pas comment ce OnAction peut agir sur une présentation
fermée.

Malheurensement Thispresentation n'existe pas pas plus que
macrocontainer



???

--
A+
1 2