[Catégorie modifiée VB6 -> VBA] Macro entre excel et powerpoint

Signaler
Messages postés
20
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
12 décembre 2011
-
Messages postés
20
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
12 décembre 2011
-
Bonjour,

Voici mon sujet :

j'ai un fichier excel avec pleins de tableau. Après la mise à jour des tableaux, je dois les coller sur un powerpoint.
J'aimerais, via une macro, copier et coller les tableaux dans le powerpoint à des endroits spécifiques,en fichier méta amélioré et à des formats pré-déterminés.
le principe est que le fichier excel et powerpoint serait ouvert en même temps.

j'ai trouvé quelques codes qui me permet d'ouvrir le fichier powerpoint à un endroit bien spécifique mais comme le fichier change de nom tous les mois.. je ne sais pas comment faire pour coder en variable...

pourriez vous m'aider ??

merci d'avance de votre retour

Max

PS: voici mon début de code (trouvé sur internet)



' On déclare une variable de type Application PowerPoint
Dim ppt As PowerPoint.Application
Set ppt = CreateObject("PowerPoint.Application")
ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de fichier (Erreur)

' On crée maintenant un objet Presentation
Dim Pres As PowerPoint.Presentation

' Et on lui dit de quelle présentation il s'agit :
Set Pres = ppt.Presentations.Open('C:\\maPresentation.ppt') 'ouverture fichier ppt

' On active, sélectionne et copie le Graphique Graphique 1 de Excel :


Sheets("SLIDE4-Faits marquants").Range("tableau1").Select
Sheets("SLIDE4-Faits marquants").Range("tableau1").Copy

With Pres.Slides(1).Shapes
.Left = 150 'position horizontale dans le slide
.Top = 100 'position verticale dans le slide
.Height = 300 'hauteur image
.Width = 400 'largeur image
End With

' Et on le colle dans la première diapositive de la présentation :
Pres.Slides(1).Shapes.PasteSpecial

' On enregistre la présentation PowerPoint :
Pres.Save

' Et on quitte PowerPoint proprement :


Set ppt = Nothing
End Sub

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut

Comme on te l'as déjà dit, il est important de choisir correctement la catégorie de question - VBA n'est pas du VB6.

Quand tu colles du code, merci d'utiliser la coloration syntaxique (3eme icone à droite) = plus facile à relire et conserve l'indentation du code.

Ta question porte donc sur la seule instruction
Set Pres = ppt.Presentations.Open('C:\\maPresentation.ppt') 'ouverture fichier ppt
Je trouve bizarre :
- l'utilisation de ' pour encadrer le nom du fichier
- le double \\ en tête.
Quelle difficulté y a t-il à utiliser une variable ?
Dim maVariable As String
maVariable = "C:\maPresentation.ppt"
Set Pres =  ppt.Presentations.Open(maVariable) 'ouverture fichier ppt
A toi de voir comment remplir cette variable.

Hors sujet :
Création d'objet :
Dim ppt As PowerPoint.Application
Set ppt   = CreateObject("PowerPoint.Application")
Tu dimensionnes correctement ton objet mais tu le crées l'instance bizarrement - Ceci serait plus logique :
Dim ppt As PowerPoint.Application
Set ppt New =  PowerPoint.Application

Excel : éviter d'utiliser Select :
Puisque le .Copy s'adresse directement à un Range, la ligne du .Select qui le précède ne sert à rien et fait perdre du temps au code.

Fermeture des objets :
Quant à 'la fermeture propre' de PowerPoint, c'est raté :
Tu supprimes l'image de l'objet support, mais tu n'as pas fermé ta présentation.
Il doit bien y avoir un
Pres.Close
puis un
Set Pres = Nothing
et un
ppt.Quit
qui, avant le Set = Nothing, fermeraient proprement les objets.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
20
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
12 décembre 2011

Bonjour,

1) desolé d'avoir posté mon msg au mauvais endroit
2) merci de ta réponse jack

3) j'ai trouvé un code plus simple et qui marche :

Private Sub CommandButton1_Click()

'Sélection des données du premier tableau

Sheets("SLIDE4-Faits marquants").Range("tableau1").Select
Selection.Copy

'La Presentation est ouverte et la référence à PowerPoint activée
Dim PPApp As PowerPoint.Application
Set PPApp = GetObject(Class:="Powerpoint.Application")
PPApp.ActivePresentation.Slides(4).Select
PPApp.ActivePresentation.Slides(4).Shapes.PasteSpecial(ppPasteDefault, link:=True).Select



End Sub


4) Lors du collage du tableau sur powerpoint, j'aimerais qu'il se place à un endroit précis et avec la bonne dimension => connaissez vous un code ????

5) le mois suivant, ces memes tableaux collés doivent être supprimer => savez vous comment faire ??? j'ai trouvé un code mais qui efface tout... donc pas terrible car il y a des tableaux sur les slides qui ne doivent pas être effacer...

MERCI d'avance de vos éventuels retours

Max