Power Point [RESOLU] Macro introuvable hors fenêtre éditeur VBA

Brain Box

XLDnaute Nouveau
Bonsoir à tout le forum, j'espère que vous allez bien :)

Pour une fois, je ne vous contacte pas pour de l'aide sur une macro-commande, celle-ci fonctionne à merveille ! Cette fois-ci, je demande votre aide sur la manière d'activer la macro-commande une fois en dehors de la fenêtre éditeur de VBA Powerpoint...

Je m'explique : j'ai développé une macro qui fait appel à un UserForm. Lorsque je lance cette procédure directement depuis VBA, le USF se lance, je sélectionne une option dans une liste déroulante, puis la procédure suit son cours.
Une fois l'éditeur fermé, j'arrive à retrouver la macro en cliquant sur l'icone "Macros" de l'onglet éditeur. Là encore, tout s'exécute sans problème.

Par contre, lorsque je fais appel à cette même procédure via un fichier PPAM (ou via code XML pour l'exemple), le UserForm se lance, je fais ma sélection dans la liste déroulante... mais lorsque je clique sur OK la procédure ne suit plus son cours ! A la place, j’obtiens le message d'erreur "La macro est introuvable ou a été désactivée en raison de vos paramètres de sécurité".

Quelqu'un saurait-il comment briser ce maléfice ? :D

Merci d'avance à tous !

Maxence
 

Pièces jointes

  • Macro - Exemple.zip
    55.4 KB · Affichages: 45

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Avec ces modifs, plus de message
Mais qu'est censé faire la macro?
Car chez moi, il ne se passe rien.
(L'userform s'affiche, mais quand je clique sur OK, je ne vois pas de changement d'aucune sorte)

VB:
Private Sub OKbutton_Click()
'Macro commande appelée par le clic sur le bouton "OK"
Dim ChoixLangue As String 'Langue sélectionnée via menu déroulant
Dim LangueID As MsoLanguageID 'Langue à appliquer
'Inscription de la langue choisie dans une variable
ChoixLangue = ListeLangues.Value
'Conversion du nom de langue en identifiant Microsoft Office
ConvertLanguage ChoixLangue, LangueID
'Appelle la procédure de changement de langue dans tout le fichier
ChangeProofingLanguage LangueID
'Ferme le UserForm une fois la procédure terminée
Me.Hide
End Sub

Je m'explique : j'ai développé une macro qui fait appel à un UserForm.
NB: T'étais pas tout seul sur ce coup là ;)
http://codegist.net/code/align-selected-objects-powerpoint-2010/
 
Dernière édition:

Brain Box

XLDnaute Nouveau
Bonjour JM, décidément c'est toi qui te 'coltine' mes questions en ce moment ;)

Je ne voulais pas embêter la communauté avec ces histoires de paternité, mais s'il faut être précis alors l’honnêteté m'oblige à vous dire qu'une moitié de la macro vient de SuperUser, rendons à César ce qui lui appartient. (https://superuser.com/questions/432366/how-do-i-change-the-language-of-all-powerpoint-slides-at-once)
Macro que j'ai complétée car elle n'était pas exhaustive, et à laquelle j'ai rattaché un UserForm (j'ai un peu bossé quand même :p). Je n'avais pas du tout connaissance du lien que tu proposes par contre, mais j'imagine que beaucoup de personnes sont confrontées aux mêmes soucis que moi !

Concernant ta proposition, cela fonctionne parfaitement ! Mais je t'avoue que je ne comprends absolument pas pourquoi, puisqu'il s'agit de la dernière instruction avant de fermer toute la procédure, donc quelle différence entre End et Hide à ce stade ?

Si tu ne vois pas l'effet de la macro, c'est que la présentation est volontairement épurée. Mais le but est de changer la langue du document et de tous les éléments qui la constituent (y compris les masques). Si on rajoute du texte dans les zones de texte, tu verras qu'elles se soulignent en rouge ou pas selon la langue choisie dans le UserForm.

Merci beaucoup en tout cas ! (je teste quand même plus en détails)

Maxence
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@Brain Box
Concernant ta proposition, cela fonctionne parfaitement ! Mais je t'avoue que je ne comprends absolument pas pourquoi, puisqu'il s'agit de la dernière instruction avant de fermer toute la procédure, donc quelle différence entre End et Hide à ce stade ?
Pour comprendre il suffit de consulter l'aide en ligne de VBA.
Ce lien n'existe plus

NB: Jamais lu sur aucun forum que c'était embêtant de citer ses sources ou l'auteur d'un code ;)
 

Brain Box

XLDnaute Nouveau
Bonjour à tous,

@Staple1600

L'aide précise bien que le UserForm est caché (comme le nom de la méthode l'indique plutôt bien !) mais pas déchargé. Donc ma question est plutôt là : pourquoi masquer et pas décharger le UserForm, sachant que lors de l'appel de la procédure la méthode .Show le charge automatiquement quoi qu'il arrive... Dès lors pourquoi ne pas le décharger ?

Jamais lu sur aucun forum que c'était embêtant de citer ses sources ou l'auteur d'un code ;)

Il est vrai que cela ne fait pas de mal, j'ai uniquement voulu éviter l'effet 'roman' avec un pavé de 25 lignes, on ne m'y reprendra plus !

En tout cas on peut considérer mon problème résolu, je change le titre !

Maxence
 

Staple1600

XLDnaute Barbatruc
Re

Mon lien était là pour indiquer que pour "fermer" un userform il n'y a que deux syntaxe
Me.Hide
ou
UnLoad Userform1

End n'a rien à voir avec les userform
Ce lien n'existe plus

NB: Pour citer ses sources, nul besoin d'un roman ;)
Une ligne suffit, celle d'une URL indiquant le site web où se trouve le code original
Ou dans le code VBA, une seule ligne également dans le commentaire
'Auteur de la macro: John Doe
 

Discussions similaires

Réponses
12
Affichages
227

Statistiques des forums

Discussions
312 070
Messages
2 085 045
Membres
102 766
dernier inscrit
Awiix