récupérer données d'un tableau excel vers un slide Powerpoint

julienloubeyre

XLDnaute Nouveau
Bonjour le forum,

Je galère depuis quelques jours sur une macro, et je dois avouer que j'aurais bien besoin de vos lumières.

Pour décrire rapidement la situation, j'ai un fichier powerpoint qui contient environ 50 slides.

Je dois à chaque début de mois mettre à jour certains de ces slides avec des informations provenant de divers fichiers excel.

Les informations voulues sont copiées dans excel, puis collées dans powerpoint via collage spécial > image.

Je cherche à automatiser le processus, mais je bloque en ce qui concerne l'ouverture du fichier.
J'aimerais en fait ouvrir un fichier excel, copier les données, les coller dans powerpoint, fermer le fichier excel, puis recommencer au début pour le fichier excel suivant.

Voici le code:

Code:
Sub bilanhd()

Dim comex As PowerPoint.Presentation

'donne le nom comex à la présentation active
Set comex = ActivePresentation

'donne le nom suivihd au slide 22 de la pres active
Set suivihd = comex.Slides(22)

'sélectionne le slide suivihd
suivihd.Select

'définit suivihd en tant que fenêtre active
Set suivihd = ActiveWindow

'sélection et effacement de l'image 23 du slide suivihd
    suivihd.Selection.SlideRange.Shapes("Picture 23").Select
    suivihd.Selection.ShapeRange.Delete

'ouverture du fichier excel du "comité de pilotage"
MsgBox ("Veuillez sélectionner le fichier du comité de pilotage")

  Dim fd As FileDialog
  
  ' Créer un objet FileDialog
  Set fd = Application.FileDialog(msoFileDialogOpen)
 
  ' Titre de la boîte de dialogue
  fd.Title = "Sélectionnez un fichier..."
 
  ' Ne pas autoriser la sélection multiple
  fd.AllowMultiSelect = False
 
  ' Afficher la boîte de dialogue
  If fd.Show() Then
    MsgBox "Vous avez sélectionné le fichier : " & vbCrLf & fd.SelectedItems(1), vbInformation
  End If

Pour le moment, la macro fonctionne bien, elle supprime ce que je ne veux plus dans le slide, et m'ouvre une boîte de dialogue me permettant de sélectionner le fichier désiré. Même si j'ai bien conscience que le code n'est pas au top, ça fonctionne.
Le problème, c'est que le fichier ne s'ouvre pas, et que je ne sais pas comment faire.
J'ai tenté plusieurs choses avec followhyperlink, mais cela ne fonctionne pas.

Pouvez-vous m'aider?

Merci d'avance pour vos retours,
Julien
 
C

Compte Supprimé 979

Guest
Re : récupérer données d'un tableau excel vers un slide Powerpoint

Bonjour Julien,

Un petite question avant tout,
  • est-ce que tes fichiers changent de nom chaque début de mois ?
  • N'est-il pas possible d'utiliser un nom de fichier temporaire ?
Pourquoi ces questions... car si tu utilises les mêmes fichiers, mais que tu mets à jour chaque mois
Il te suffirait d'utiliser le menu -> Instertion -> Objet -> Option : à partir d'un fichier

Tu vas chercher ton fichier Excel, que tu peux redimensionner en tant qu'objet
Et à l'ouverture de ton Powerpoint, c'est la dernière mise à jour qui s'affiche

A+
 

chris

XLDnaute Barbatruc
Re : récupérer données d'un tableau excel vers un slide Powerpoint

Bonjour
Bise à Bruno

Instertion -> Objet -> Option : à partir d'un fichier : cela insère un clone du classeur Excel dans la présentation mais il ne se mettra pas à jour.
Comme le dit Bruno, il est souhaitable de garder les mêmes noms de fichiers d'un mois à l'autre.
Tu fais un copier collage spécial et tu coches "Avec liaison" pour chaque fichier.

Quand tu ouvres la présentation tu peux ou non mettre à jour selon le besoin.

Si tu dois l'envoyer à l'extérieur, tu fais une copie de la présentation et dans la copie tu casses les liens : il restera l'image.

L'original garde ses possibilités de mise à jour automatique.

Sinon pour le VBA :
Le fichier Excel ne peut pas s'ouvrir dans PPT : il faut invoquer Excel et le piloter depuis PPT pour ouvrir le fichier et y faire les manipulations voulues.
Il faudrait aussi renommer les images car sinon ton code ne trouvera pas la "Picture 23" d'une fois à l'autre si le nommage est celui fait par Powerpoint.
Il faut aussi la placer au bon endroit et la dimensionner.

Si la 1ère solution ne peut te convenir, on essaiera de t'aider pour le code.
 

julienloubeyre

XLDnaute Nouveau
Re : récupérer données d'un tableau excel vers un slide Powerpoint

Bonjour Bruno, Chris, le forum, et merci pour vos retours.

Tout d'abord, oui, les fichiers changent de nom chaque mois, et je ne peux faire autrement. En fait les fichiers excel me proviennent de sources différentes, avec des noms précis, intégrant le mois dans le nom de fichier. Vue la quantité de fichiers, je ne peux me permettre de tout renommer à chaque fois.

J'avais bien pensé à passer par insertion > objet, le problème c'est qu'il y'a une cinquantaine de slides à mettre à jour, et que la personne qui va accomplir cette tâche est plutôt fâchée avec l'informatique, et ça risque de dérailler rapidement.

C'est pourquoi je préférais automatiser la chose, et que l'opérateur n'ait qu'à sélectionner les fichiers excel les uns après les autres. Tout le reste serait géré par la macro. En fait, je veux que la personne ne fasse aucune manip, pour éviter un maximum d'erreurs.

J'ai effectivement pensé au fait que les images collées allaient changer de nom. Mais je pense qu'on doit pouvoir lui donner un nom défini lors du collage spécial. je pourrais ainsi donner des noms comme "image1" à "image50", ce qui me permettra de les supprimer facilement en utilisant ce même nom. Le placement et le redimensionnement seront faits en même temps, avec un code de la forme de celui-ci:

Code:
With PptDoc.Slides(1).Shapes(NbShpe)
.Name = "monTableau" 'personnaliser le nom de l'objet inséré
.Left = 150 'position horizontale dans le slide
.Top = 100 'position verticale dans le slide
.Height = 300 'hauteur image
.Width = 400 'largeur image
End With

Ensuite, pour Excel, en effet j'ai bien saisi qu'il faut "appeler" Excel à partir de PPT, et c'est bien là que ça coince, malgré tous mes tests, je ne parviens pas à lancer excel et donc à ouvrir mon fichier. Je pense d'ailleurs que si je parvenais à faire ça, je serai assez autonome pour la suite, m'étant assez bien documenté sur les collage spécial et autre.

Merci encore pour vos réponses,

Julien

Edit: j'ai oublié de préciser que je bosse sur Office 2003.
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : récupérer données d'un tableau excel vers un slide Powerpoint

Bonjour

Je n'ai pas testé sous 2003.

Voici une trame faite sous 2010.

Il faut ajouter la référence Microsoft Excel dans le module.
Code:
Dim xlApp As Excel.Application
Dim comex As PowerPoint.Presentation
Sub MiseAjour()

    Dim Maslide As Integer
    Dim Ssheet As String
    Dim Maplage As String

    'donne le nom comex à la présentation active
    Set comex = ActivePresentation

    Set xlApp = Excel.Application
    
    'ouverture du fichier excel du "comité de pilotage"
    MsgBox ("Veuillez sélectionner le fichier du comité de pilotage")
    
    Maslide = 2
    Ssheet = "Test  (2)"
    Maplage = "A1:B12"
    
    Call Traitement(Maslide, Ssheet, Maplage)
    
    'ouverture du fichier excel du "blabla"
    MsgBox ("Veuillez sélectionner le fichier du blabla")
    
    Maslide = 4
    Ssheet = "Feuil1"
    Maplage = "C6:D6"
    
    Call Traitement(Maslide, Ssheet, Maplage)
    
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

Sub Traitement(DiaNum As Integer, Ssheet, Plage)

    Dim Monfichier
    Dim xlSheet As Excel.Worksheet
    Dim xlBook As Excel.Workbook
    
    comex.Slides(DiaNum).Select
    
    'sélection et effacement de l'image du slide
    ActiveWindow.Selection.SlideRange.Shapes("Monimage" & DiaNum).Delete
    
    Monfichier = xlApp.GetOpenFilename("Excel files (*.xls), *.xls")
    If Monfichier <> False Then
        xlApp.Workbooks.Open Monfichier
        Set xlBook = xlApp.Activeworkbook
        Set xlSheet = xlBook.worksheets(Ssheet)
        xlSheet.Range(Plage).Copy
        Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile
        ActiveWindow.Selection.ShapeRange.Name = "Monimage" & DiaNum
        xlBook.Close savechanges:=False
    End If

End Sub

Qui enchaîne 2 fichiers Excel.

Il y aura des tests à ajouter pour éviter des bugs en cas de feuille non trouvée dans le classeur ou autre anomalie...
 

chris

XLDnaute Barbatruc
Re : récupérer données d'un tableau excel vers un slide Powerpoint

Bonjour

Réflexion faite, je me demande s'il ne serait pas plus simple de remplir chaque mois un tableau Excel avec des infos comme

  • le chemin,
  • le nom du fichier Excel
  • le nom de l'onglet
  • la plage de cellules à copier
  • le numéro de la diapo correspondante
  • le nom de l'image
  • la taille de l'image
  • la position de l'image
et que la macro fasse la mise à jour sans que qui que ce soit ait à sélectionner les fichiers les uns après les autres...
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 494
Membres
103 234
dernier inscrit
matteo75654548