enregistrer avec powerpoint

enregistrer avec powerpoint - VB/VBA/VBS - Programmation

Marsh Posté le 30-01-2013 à 09:10:17    

Bonjour,
 
Quelqu'un saurait-il quel est l'équivalent pour un powerpoint de :  

Code :
  1. ActiveWorkbook.SaveAs "Comparaison", xlNormal

 
 
Merciiii  :)

Reply

Marsh Posté le 30-01-2013 à 09:10:17   

Reply

Marsh Posté le 30-01-2013 à 10:05:52    

Salut

 

Call Application.ActivePresentation.SaveAs("Comparaison", ppSaveAsDefault)


Message édité par sh_kyra le 30-01-2013 à 10:06:13
Reply

Marsh Posté le 30-01-2013 à 10:13:30    

Tout d'abord, merci de m'avoir répondu :) j'essaye ça et je te dis :D

Reply

Marsh Posté le 30-01-2013 à 10:19:38    

Si je mets ça,  

Code :
  1. Call Application.ActivePresentation.SaveAs("Comparaison", ppSaveAsDefault)


 
Un message d'erreur s'affiche :  
"Propriété ou méthode non gérée par cet objet"
 
De même si j'enlève le "call"
 
J'ai essayé :  

Code :
  1. ActivePresentation.SaveAs "Rapport", ppSaveAsDefault


 
et ça me donne :  
"Un composant ActiveX ne peut pas créer d'objet" ...  :sweat:  
 
 :jap:  merci de m'aider ^^

Reply

Marsh Posté le 30-01-2013 à 10:23:19    

minimoack a écrit :

Si je mets ça,

Code :
  1. Call Application.ActivePresentation.SaveAs("Comparaison", ppSaveAsDefault)
 

Un message d'erreur s'affiche :
"Propriété ou méthode non gérée par cet objet"

 

De même si j'enlève le "call"

 

J'ai essayé :

Code :
  1. ActivePresentation.SaveAs "Rapport", ppSaveAsDefault
 

et ça me donne :
"Un composant ActiveX ne peut pas créer d'objet" ...  :sweat:

 

:jap:  merci de m'aider ^^

 

Tu peux donner le reste de ton code?

 

J'ai fait un bouton sur une feuille de présentation et codé l'évenement click et le fichier s'est bien enregistré sous ce nom là.

 
Code :
  1. Private Sub CommandButton1_Click()
  2. Application.ActivePresentation.SaveAs "bla", ppSaveAsDefault
  3. End Sub
 

Call ne change rien normalement. C'est juste plus propre.
Enlève moi un doute, tu es bien sous powerpoint? Tu n'essayes pas d'enregistrer ton PPT depuis Excel par hasard? ;)


Message édité par sh_kyra le 30-01-2013 à 10:25:27
Reply

Marsh Posté le 30-01-2013 à 10:26:17    

Tiens  :D  
 

Code :
  1. Public Function ppt()
  2.     Dim ppapp As PowerPoint.Application
  3.     Dim Pres As PowerPoint.Presentation
  4.     Dim Diapo1 As PowerPoint.Slide
  5.     Dim Diapo2 As PowerPoint.Slide
  6.     Dim handle As Long
  7.     Dim nomFichier As String
  8.    
  9.     handle = 0
  10.     ' On ouvre le powerpoint
  11.     Set ppapp = CreateObject("PowerPoint.Application" )
  12.        
  13.     ' Et on lui dit de quelle présentation il s'agit :
  14.     nomFichier = OuvrirUnFichier(handle, "Sélectionner le masque", 1, "Microsoft Powerpoint", "ppt" )
  15.    
  16.     ppapp.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de fichier (Erreur)
  17.    
  18.     Set Pres = ppapp.Presentations.Open(nomFichier)
  19.     ppapp.Activate
  20.    
  21.     ' Avec la présentation ouverte
  22.     With Pres
  23.        
  24.         ' on dit que la 2ème diapo a pour nom Diapo1
  25.         Set Diapo1 = .Slides(2)
  26.         'On copie la zone de texte
  27.         Diapo1.Shapes("Rectangle 2" ).Copy
  28.        
  29.         ' on ajoute une diapositive qu'on nomme Diapo2
  30.         Set Diapo2 = .Slides.Add(Index:=3, Layout:=ppLayoutBlank)
  31.         'On sélectionne la diapo2 et on colle la zone de texte
  32.         Diapo2.Select
  33.         Diapo2.Shapes.Paste
  34.  
  35.         ' Copie du graphe1 excel
  36.         Workbooks("Comparaison.xls" ).Sheets("Comparaison de la taille" ).Activate
  37.         ActiveSheet.ChartArea.Select
  38.         ActiveSheet.ChartArea.Copy
  39.         ' On colle le graphe dans la présentation
  40.         Set Shape1 = Diapo1.Shapes.Paste
  41.         ' et on le redimensionne
  42.         Shape1.Top = 40
  43.         Shape1.Left = 20
  44.         Shape1.Width = 430
  45.         Shape1.Height = 430
  46.        
  47.         ' Copie du graphe2 excel
  48.         Workbooks("Comparaison.xls" ).Sheets("Evolution de la taille" ).Activate
  49.         ActiveSheet.ChartArea.Select
  50.         ActiveSheet.ChartArea.Copy
  51.         ' On colle le graphe dans la présentation
  52.         Set Shape2 = Diapo2.Shapes.Paste
  53.         ' et on le redimensionne
  54.         Shape2.Top = 40
  55.         Shape2.Left = 20
  56.         Shape2.Width = 430
  57.         Shape2.Height = 430
  58.        
  59.         .Slides(1).Select
  60.        
  61.     End With
  62.    
  63.     ppapp.Activate
  64.     'et là on enregistre
  65.     'ActivePresentation.SaveAs "Rapport", ppSaveAsDefault
  66.                
  67. End Function

Reply

Marsh Posté le 30-01-2013 à 10:26:45    

euh ... sur excel  :whistle:

Message cité 1 fois
Message édité par minimoack le 30-01-2013 à 10:27:09
Reply

Marsh Posté le 30-01-2013 à 10:28:35    

Désolée d'avoir oublié de le préciser -_-'
Comment as-tu deviné? à cause des messages d'erreur? Tu peux m'expliquer à quoi correspond ce message ActiveX?

Reply

Marsh Posté le 30-01-2013 à 10:29:56    

minimoack a écrit :

euh ... sur excel  :whistle:

 

Parce que du coup c'est pas pareil, ActivePresentation ne peut être disponible que depuis l'objet Powerpoint ;)
Et quand tu tapes sur l'objet Application, tu es sur l'objet de l'application courante, s'il ne te trouve pas ActivePresentation (ce que veut dire "Propriété ou méthode non gérée par cet objet" ) c'est que tu n'es pas sur powerpoint.

 
Code :
  1. Pres.SaveAs "Rapport", ppSaveAsDefault
 

Essayes ça, ça devrait marcher.

 

Pense bien à fermer ton objet Powerpoint à la fin.

 
Code :
  1. ppapp.Quit



Message édité par sh_kyra le 30-01-2013 à 10:34:42
Reply

Marsh Posté le 30-01-2013 à 10:34:51    

"Erreur d'exécution '-2147467259 (80004005)' :
Presentation (unknown member) : Powerpoint n'a pas réussi à ouvrir ou à enregistrer ce document. Vérifiez que vous disposez des autorisations de lecture et d'écriture requises et que le document n'est pas crypté"
 
...  
 

Reply

Marsh Posté le 30-01-2013 à 10:34:51   

Reply

Marsh Posté le 30-01-2013 à 10:36:11    

Je suis obligée de le fermer?
en fait si je l'enregistre, c'est pour que l'utilisateur ne l'enregistre pas sous la présentation que j'ouvre avec nomFichier, mais j'aimerais garder la présentation ouverte

Reply

Marsh Posté le 30-01-2013 à 10:43:26    

Ok, c'est juste que tu n'as pas les droits sur ton répertoire de sauvegarde par défaut.

 

Essayes ça:

 
Code :
  1. Pres.SaveAs Pres.Path & "\" & "Rapport", ppSaveAsDefault
 

Ah non t'es pas obligée de fermer, si tu veux laisser ouvert, laisses ouvert. Par contre fait attention, à chaque fois que ta macro va tourner, tu vas créer un process powerpoint en mémoire...

 

C'est pas important si tu le fermes manuellement à chaque fois ou que c'est pas récursif! ;)


Message édité par sh_kyra le 30-01-2013 à 10:46:34
Reply

Marsh Posté le 30-01-2013 à 10:46:06    

Qu'est-ce que l'ActiveX, quel genre d'erreur?
 
Je vais essayer ce que tu viens de me mettre merci :D

Message cité 1 fois
Message édité par minimoack le 30-01-2013 à 11:04:23
Reply

Marsh Posté le 30-01-2013 à 10:47:59    

(ça marche merci :D  :jap:)

Reply

Marsh Posté le 30-01-2013 à 11:16:59    

minimoack a écrit :

Qu'est-ce que l'ActiveX, quel genre d'erreur?
 
Je vais essayer ce que tu viens de me mettre merci :D


 
Wikipédia expliquera mieux que moi : http://fr.wikipedia.org/wiki/ActiveX
 
Ravi que ça fonctionne :)

Reply

Marsh Posté le 30-01-2013 à 11:22:01    

L'ActiveX a l'air d'être un truc assez compliqué, je vais me pencher dessus :D
 
Merciiiiiiii !!  

Reply

Marsh Posté le 30-01-2013 à 11:34:24    

... j'ai un peu de mal à comprendre dans notre situation, l'erreur avec l'ActiveX... :sweat:
En gros, ça veut dire que je ne peux pas utiliser "ActivePresentation", qui est une méthode de Powerpoint (supposition) dans Excel, car l'ActiveX ne le gère pas?
J'ai compris que c'était un outil qui permettait de dialoguer entre les programmes, et donc qu'il permettait (ici) dans Excel d'avoir accès à certaines méthodes de Powerpoint...  
J'ai bon?

Reply

Marsh Posté le 30-01-2013 à 11:45:58    

minimoack a écrit :

... j'ai un peu de mal à comprendre dans notre situation, l'erreur avec l'ActiveX... :sweat:
En gros, ça veut dire que je ne peux pas utiliser "ActivePresentation", qui est une méthode de Powerpoint (supposition) dans Excel, car l'ActiveX ne le gère pas?
J'ai compris que c'était un outil qui permettait de dialoguer entre les programmes, et donc qu'il permettait (ici) dans Excel d'avoir accès à certaines méthodes de Powerpoint...
J'ai bon?

 

En fait c'est un peu compliqué, mais je vais essayer d'être un peu simpliste...

 

Quand tu ajoutes la référence Microsoft PowerPoint VBA te donnes l’accès à l'objet (qui n'est qu'un raccourci/alias - comme ActiveWorksheet) ActivePresentation.

 

Le problème est, que, dans ton cas, ActivePresentation n'existe pas DANS Excel, seulement dans ton objet PowerPoint (ppapp dans ton cas). Il pourrait exister DANS Excel dans le cas où tu aurais INCLUS ton PowerPoint dans Excel (En tant que lien OLE: http://fr.wikipedia.org/wiki/Objec [...] _Embedding )

 

Donc le compilateur cherche via les ActiveX (qui gère les OLE) la présence de ton ActivePresentation DANS Excel, comme elle n'existe pas (= Nothing), le composant ActiveX te renvoie une erreur.

 

Voila, en gros, j'espère avoir été à peu près clair ;)


Message édité par sh_kyra le 30-01-2013 à 11:47:16
Reply

Marsh Posté le 30-01-2013 à 11:49:34    

Oui c'est plus clair déjà merci :D
c'est vrai que c'est assez difficile à comprendre, mais j'ai saisi l'idée!
 
Merci de m'avoir accordé tout ce temps !!! ^^
 :D

Reply

Marsh Posté le 30-01-2013 à 11:53:31    

minimoack a écrit :

Oui c'est plus clair déjà merci :D
c'est vrai que c'est assez difficile à comprendre, mais j'ai saisi l'idée!
 
Merci de m'avoir accordé tout ce temps !!! ^^
 :D


 
C'est toujours un plaisir d'aider une collègue toulousaine ;)

Reply

Marsh Posté le 30-01-2013 à 11:58:25    

Vive la ville rose, et la solidarité toulousaine! :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed