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

Execution de macro ppt depuis word ...

8 réponses
Avatar
Gregory Hilaire
Bien le bonjour,

Je suis entrain de developper pour un collègue une
application (une macro dans word) qui depuis un fichier texte génère un
fichier ppt. Cette partie est faite et fonctionne bien. La suite se fait
dans powerpoint pour la mise en forme et la sauvegarde en pps. Là ou le bas
blesse c'est que je ne puis pas executer la macro powerpoint depuis la macro
word. J'arrive à ouvrir le powerpoint et le fichier ppt qui contient la
macro mais quand j'essaye d'excuter la macro depuis word cela plante à
chaque fois ...

Toute aide seait grandement aprréciée :

Exemple de code
Macro powerpoint :
====================
Sub MiseEnForme()
'
' Macro enregistrée le 2007-02-09 par Gregory Hilaire
'

Presentations.Open FileName:="C:\TestZone\cours.ppt", ReadOnly:=msoFalse
ActiveWindow.View.GotoSlide Index:=1
ActivePresentation.ApplyTemplate FileName:="C:\Documents and
Settings\Administrateur.MCE2005.000\Application
Data\Microsoft\Templates\NOTEBOOK.POT"
ActivePresentation.SaveAs FileName:="C:\TestZone\Resultat.pps"
ActivePresentation.Close
Application.Quit
End Sub

Partie macro word qui appelle :
=======================

Sub LancePowerPoint()
Dim ppt As PowerPoint.Application ' On déclare une variable de type
Application PowerPoint
Dim Pres As PowerPoint.Presentation ' On crée maintenant un objet
Presentation
Dim PresFic As String 'Une variable chaine pour recevoir le nom de la
présentation

PresFic = "C:\TestZone\Patron.ppt"

Set ppt = CreateObject("PowerPoint.Application") ' Ou encore Set ppt = new
PowerPoint.Application
ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de
fichier (Erreur)
Set Pres = ppt.Presentations.Open(PresFic) ' Et on lui dit de quelle
présentation il s'agit :
'Set Pres = ppt.Run("C:\TestZone\Patron.ppt!MiseEnForme") '
====================== Partie problématique

'With Pres = ppt.Run("MiseEnForme") ' On spécifie quelle macro elle doit
executer
'ppt.Run ("C:\TestZone\Patron.ppt!MiseEnForme")
'End With ========================================================== Fin
de mes essais infructueux
ppt.Quit
Set ppt = Nothing
End Sub

Erreur
======
Erreur d'execution '-2147188160(80048240)':
Application (unknown member):Invalid request. Sub or function not defined.

ou

Erreur d'execution '438':
Propriété ou methode non gérée par cet objet

8 réponses

Avatar
Tisane
Bonjour Gregory,

Je suis entrain de developper pour un collègue une application (une macro
dans word) qui depuis un fichier texte génère un fichier ppt. Cette partie
est faite et fonctionne bien. La suite se fait dans powerpoint pour la
mise en forme et la sauvegarde en pps. Là ou le bas blesse c'est que je ne
puis pas executer la macro powerpoint depuis la macro word. J'arrive à
ouvrir le powerpoint et le fichier ppt qui contient la macro mais quand
j'essaye d'excuter la macro depuis word cela plante à chaque fois ...
[...]


Si tu te débrouilles un peu en anglais, je pense que ta question aura plus
de succès sur le forum US :
microsoft.public.powerpoint
Les compétences en VBA y sont plus nombreuses ;-)
Ou encore sur :
microsoft.public.office.developer.vba

--
Tisane

Avatar
Geo

Bien le bonjour,

Je suis entrain de developper pour un collègue une application
(une macro dans word) qui depuis un fichier texte génère un fichier ppt. Cette partie
est faite et fonctionne bien. La suite se fait dans powerpoint pour la mise en forme et
la sauvegarde en pps. Là ou le bas blesse c'est que je ne puis pas executer la macro
powerpoint depuis la macro word. J'arrive à ouvrir le powerpoint et le fichier ppt qui
contient la macro mais quand j'essaye d'excuter la macro depuis word cela plante à
chaque fois ...

Toute aide seait grandement aprréciée :


Votre code fonctionne bien avec la version 2003, voici
la version que j'ai utilisée :

Set ppt = CreateObject("PowerPoint.Application")
ppt.Visible = True
Set Pres = ppt.Presentations.Open(PresFic)

On récupère bien la présentation ouverte dans Pres.

--
A+

Avatar
Gregory Hilaire
Merci d'avoir prêté attention au cas ...
En faite la partie qui appelle PowerPoint a toujours fonctionnée.
C'est ce que j'ai mis en remarque qui ne fonctionne pas. L'appel de
la macro PowerPoint. J'utilise aussi 2003. Quand la présentation
s'ouvre je suis obligé d'aller exécuter manuellement la macro ce qui
annule tout espoir de faire un traitement par lots ...

Petit rappel j'ai quelques dizaines de plans de cours que je veux
transformer
en présentation PowerPoint c'est cela la finalité. Donc plus l'application
sera
autonome plus ce sera apprécié ... :)

Merci et a bientôt

"Geo" a écrit dans le message de news:


Bien le bonjour,

Je suis entrain de developper pour un collègue
une application (une macro dans word) qui depuis un fichier texte génère
un fichier ppt. Cette partie est faite et fonctionne bien. La suite se
fait dans powerpoint pour la mise en forme et la sauvegarde en pps. Là ou
le bas blesse c'est que je ne puis pas executer la macro powerpoint
depuis la macro word. J'arrive à ouvrir le powerpoint et le fichier ppt
qui contient la macro mais quand j'essaye d'excuter la macro depuis word
cela plante à chaque fois ...

Toute aide seait grandement aprréciée :


Votre code fonctionne bien avec la version 2003, voici
la version que j'ai utilisée :

Set ppt = CreateObject("PowerPoint.Application")
ppt.Visible = True
Set Pres = ppt.Presentations.Open(PresFic)

On récupère bien la présentation ouverte dans Pres.

--
A+





Avatar
Geo

Merci d'avoir prêté attention au cas ...
En faite la partie qui appelle PowerPoint a toujours fonctionnée.
C'est ce que j'ai mis en remarque qui ne fonctionne pas. L'appel de
la macro PowerPoint.


1.000 excuses, je pensais que c'était simplement la trace de différents
essais de code, comme je procède ainsi j'ai omis de lire cette partie.
La macro est dans la présentation Patron.ppt ?
J'essaierais (mais je n'ai pas testé) :

Application.Run "MiseEnForme"

En fait je ne comprends pas bien où sont les différentes macros.
Je serais tenté de dire qu'autant tout faire à partir de Word.
La partie utile de la macro Mise en forme peut être modifiée pour être
lancée de Word.
Et si vous devez traiter quelques centaines de fichiers, il y a une
macro qui facilite le genre d'opérations.
http://faqword.free.fr/download.php?lng=fr&pgs6
cliquer sur la disquette pour afficher la page.

--
A+

Avatar
Gregory Hilaire
Geo je trouve que l'on avance avec tes suggestions et je sens qu'on y est
presque.
Je vais être un peu plus clair au niveau de ce que fait cette application...

L'application est divisée en deux sections une section dans Word qui
formatte
les fichiers textes des plans de cour en enlevant tout ce qui est superflu
et
agence le texte en deux nivaux les titres et les sous-titres. Les titres
sont
des paragraphes et les sous titres des paragraphes précédés de tab.
Donc à la fin de cette première étape on a un fichier texte de la forme:

Jour 1 :
Les tables :
Comprendre les concepts de base.
Utiliser les tables.
Créer une table avec/sans l'aide de l'assistant.
Saisir les données dans une table.
Appliquer la propriété Masque de saisie.
Les tables : - Suite
Définir la notion de clé primaire.
Utiliser la fonction d'aide.
Importer des données.
Importer depuis un fichier de base de données Access ou autre et d'un
fichier Excel ou Texte.
Exploiter les données d'une table.
Les tables : - Suite...
Saisir les données. etc.

ce fichier il suffit de enregistrer avec l'extension ppt pour que
PowerPoint n'y voit que du feu
toute fois à la suite de cette étape on a une présentation réduite à sa plus
simple expression ...

Maintenant le formatage se fait dans PowerPoint... Suivant ton idée si je
pouvais de Word étant
appeler les fonctionnalités de power point ( Ce que fait la Macro
MiseEnForme) sans passer par la macro
cela me conviendrait bien ... Je trouve l'idée même assez séduisante pour
alléger l'ensemble de application.

D'ailleurs pour le moment la macro ne fait rien extra
Juste appliquer un modèle au ficher Txt envoyé par Word et sauvegarder le
fichier sous format pps

ActivePresentation.ApplyTemplate FileName:="C:Documents and
SettingsAdministrateur.MCE2005.000Application
DataMicrosoftTemplatesNOTEBOOK.POT"
ActivePresentation.SaveAs FileName:="C:TestZoneResultat.pps"
Si je pouvais executer ces deux fonctionnalité depuis word ce serait
excellent ...

La macro au complet ...
Sub MiseEnForme()
Presentations.Open FileName:="C:TestZonecours.ppt", ReadOnly:=msoFalse
ActiveWindow.View.GotoSlide Index:=1
ActivePresentation.ApplyTemplate FileName:="C:Documents and
SettingsAdministrateur.MCE2005.000Application
DataMicrosoftTemplatesNOTEBOOK.POT"
ActivePresentation.SaveAs FileName:="C:TestZoneResultat.pps"
ActivePresentation.Close
Application.Quit
End Sub

Merci
Greg





"Geo" a écrit dans le message de news:


Merci d'avoir prêté attention au cas ...
En faite la partie qui appelle PowerPoint a toujours fonctionnée.
C'est ce que j'ai mis en remarque qui ne fonctionne pas. L'appel de
la macro PowerPoint.


1.000 excuses, je pensais que c'était simplement la trace de différents
essais de code, comme je procède ainsi j'ai omis de lire cette partie.
La macro est dans la présentation Patron.ppt ?
J'essaierais (mais je n'ai pas testé) :

Application.Run "MiseEnForme"

En fait je ne comprends pas bien où sont les différentes macros.
Je serais tenté de dire qu'autant tout faire à partir de Word.
La partie utile de la macro Mise en forme peut être modifiée pour être
lancée de Word.
Et si vous devez traiter quelques centaines de fichiers, il y a une macro
qui facilite le genre d'opérations.
http://faqword.free.fr/download.php?lng=fr&pgs6
cliquer sur la disquette pour afficher la page.

--
A+





Avatar
Geo

[...]
ce fichier il suffit de enregistrer avec l'extension ppt pour que PowerPoint n'y voit
que du feu


Pas mal !

[...]
Suivant ton idée si je pouvais de Word étant
appeler les fonctionnalités de power point ( Ce que fait la Macro MiseEnForme) sans
passer par la macro cela me conviendrait bien ...


Vous l'avez déjà fait à partir de :
ppt.Visible = True

On le voit peut-être mieux sur la commande :
Set Pres = ppt.Presentations.Open(PresFic)

Vous donnez depuis Word l'ordre à PowerPoint d'ouvrir une présentation.
Continuez sur votre lancée :

ppt.ActivePresentation.ApplyTemplate FileName:="C:Documents and
SettingsAdministrateur.MCE2005.000Application
DataMicrosoftTemplatesNOTEBOOK.POT"

etc.
Vous préfixez vos commandes avec l'application concernée.
mais évitez de la refermer (Quit), fermez simplement la présentation.

--
A+

Avatar
Gregory Hilaire
Tout fonctionne à merveille. Je suis pas très fier de moi d'avoir sollicité
le groupe pour si peu,
mais je suis très content du support qui a été fourni et de l'attention
portée à ma requête...
J'espère un jour pouvoir te retourner ascenseur Geo ...

A la prochaine
et un GROS MERCI encore

Le code modifié

Sub LancePowerPoint()
Dim ppt As PowerPoint.Application ' On déclare une variable de type
Application PowerPoint
Dim Pres As PowerPoint.Presentation ' On crée maintenant un objet
Présentation
Dim PresFic As String 'Une variable chaine pour recevoir le nom de la
présentation

PresFic = path & "cours.ppt"

Set ppt = CreateObject("PowerPoint.Application") ' Ou encore Set ppt = new
PowerPoint.Application
ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de
fichier (Erreur)
ppt.Presentations.Open FileName:=PresFic 'ouvrir le fichier texte généré
par Word
ppt.ActivePresentation.ApplyTemplate FileName:=path & "NOTEBOOK.POT" '
lui appliquer un modèle
ppt.ActivePresentation.SaveAs FileName:=path & "Resultat.pps" 'le
sauvegarder sous format pps
ppt.ActivePresentation.Close 'et le tour est joué
ppt.Quit 'Fermer PowerPoint
Set ppt = Nothing 'Libérer la variable objet ppt
End Sub


"Geo" a écrit dans le message de news:


[...]
ce fichier il suffit de enregistrer avec l'extension ppt pour que
PowerPoint n'y voit que du feu


Pas mal !

[...]
Suivant ton idée si je pouvais de Word étant
appeler les fonctionnalités de power point ( Ce que fait la Macro
MiseEnForme) sans passer par la macro cela me conviendrait bien ...


Vous l'avez déjà fait à partir de :
ppt.Visible = True

On le voit peut-être mieux sur la commande :
Set Pres = ppt.Presentations.Open(PresFic)

Vous donnez depuis Word l'ordre à PowerPoint d'ouvrir une présentation.
Continuez sur votre lancée :

ppt.ActivePresentation.ApplyTemplate FileName:="C:Documents and
SettingsAdministrateur.MCE2005.000Application
DataMicrosoftTemplatesNOTEBOOK.POT"

etc.
Vous préfixez vos commandes avec l'application concernée.
mais évitez de la refermer (Quit), fermez simplement la présentation.

--
A+





Avatar
Geo

Tout fonctionne à merveille.
Je suis pas très fier de moi d'avoir sollicité le groupe
pour si peu,


Ah mais non, les forums sont faits pour aider quel que que soit le
problème. L'important c'est que pour vous c'était beaucoup et que le
résultat vous convienne.

[...]
Le code modifié


Pour lancer PowerPoint, d'accord, mais pourquoi ne pas l'intégrer dans
votre boucle ?
(j'ai supprimé vos commentaires)

Sub TraduireEnPowerPoint()
Dim ppt As PowerPoint.Application
Dim Pres As PowerPoint.Presentation
Dim PresFic As String
dim i as integer
Set ppt = CreateObject("PowerPoint.Application")
ppt.Visible = True

For i = 1 to 50 ' au hasard 50 cours
' ici on pourrait ouvrir le .doc
' et l'enregistrer en .ppt

' si les cours s'appellent cours1.ppt, cours2.ppt
PresFic = path & "cours" & i & ".ppt"
ppt.Presentations.Open FileName:=PresFic
ppt.ActivePresentation.ApplyTemplate FileName:=path & "NOTEBOOK.POT"
ppt.ActivePresentation.SaveAs FileName:=path & "Resultat.pps"
ppt.ActivePresentation.Close
Next i
ppt.Quit 'Fermer PowerPoint
Set ppt = Nothing 'Libérer la variable objet ppt
End Sub

Pas testé.

--
A+