Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

liaison excel - powerpoint

  • Initiateur de la discussion Initiateur de la discussion FredC
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

FredC

Guest
Bonjour à tous,

J'ai un fichier powerpoint assez conséquent à trier et je dois créer un fichier excel renvoyant des infos de ce ppt: le titre des slides (ou un bref descriptif) et leur numéro de page. Le souci c'est que le ppt est "vivant" et peut être modifié par différents utilisateurs: les liaisons doivent donc être mises à jour régulièrement.

J'ai pensé à des liens hypertexte, mais je ne suis pas sûr de leur robustesse (slide avec titres similaires, changement de l'ordre des slides...).

J'ai aussi pensé à créer une macro permettant d'extraire le numéro de page de chaque diapo et quelques autres infos (comme le titre) et de les renvoyer dans un classeur xls. Mais il semble que VBA pour xls ne soit pas directement lié à VBA pour ppt. J'ai d'ailleurs recontré des difficultés en voulant enregistrer une macro...

Quelqu'un aurait-il une (des?) piste(s) pour moi?
Merci d'avance,

FredC
 
Re : liaison excel - powerpoint

Bonjour,

Merci pour le lien, ça aide pas mal pour la syntaxe au moins.
Par contre ça dit comment piloter powerpoint à partir d'excel, mais est-il possible par exemple de créer/modifier un fichier excel à partir d'un ppt?

Merci...
 
Re : liaison excel - powerpoint

Bonjour,

Essayes ce code qui tu places dans un module du fichier PowerPoint.
Il faut aussi référence la bilbio Excel dans le fichier PowerPoint (dans VB : Outils/Références/Microsoft Excel x) selon ta version

Code:
Sub Extract_Excel()
  Dim appXL As Excel.Application
  Dim claXL As Excel.Workbook
  Dim presPPT As PowerPoint.Presentation
  Dim Diapo As PowerPoint.Slide
  Dim i As Integer
  
  'presPPT représente la présentation active
  Set presPPT = ActivePresentation
  'Créer une nouvelle instance de l'application Excel
  Set appXL = New Excel.Application
  'Créer un nouveau classeur dans cette instance
  Set claXL = appXL.Workbooks.Add
  'Commencer en ligne 2 dans Excel
  i = 2
  
  'Boucle sur les diapositives de la présentation
  For Each Diapo In presPPT.Slides
    With appXL
      'Ecrire le titre en colonne A
      .Cells(i, 1) = Diapo.Shapes.Title.TextFrame.TextRange.Text
      'Ecrire l'index en colonne B
      .Cells(i, 2) = Diapo.SlideIndex
      'Ligne suivante dans Excel
      i = i + 1
    End With
  Next

  'Afficher le classeur Excel
  appXL.Visible = True
  
End Sub

Caillou
 
Re : liaison excel - powerpoint

Great!
Merci Caillou pour le code 😉

Par contre est ce qu'il est possible de sélectionner le texte provenant d'une autre zone de texte que le titre?
J'ai essayé quelque chose du genre:

Code:
  For Each Diapo In presPPT.Slides
    With appXL
      'Ecrire le titre en colonne A
      .Cells(i, 1) = Diapo.Shapes(#).TextFrame.TextRange.Text
      'Ligne suivante dans Excel
      i = i + 1
    End With
  Next

en changeant "#" par 1, 2,3... mais cela ne fonctionnait que pour "1", qui est la zone du titre.
Si ce n'est pas possible, tant pis, mais si quelqu'un a une idée, merci d'avance.
 
Re : liaison excel - powerpoint

re,

Essayes ceci:
Code:
Sub Extract_Excel()
On Error Resume Next
  Dim appXL As Excel.Application
  Dim claXL As Excel.Workbook
  Dim presPPT As PowerPoint.Presentation
  Dim Diapo As PowerPoint.Slide
  Dim Forme As PowerPoint.Shape
  Dim i As Integer 'ligne
  Dim j As Integer 'colonne
  
  'presPPT représente la présentation active
  Set presPPT = ActivePresentation
  'Créer une nouvelle instance de l'application Excel
  Set appXL = New Excel.Application
  'Créer un nouveau classeur dans cette instance
  Set claXL = appXL.Workbooks.Add
  'Commencer en ligne 2 dans Excel
  i = 2
  
  'Boucle sur les diapositives de la présentation
  For Each Diapo In presPPT.Slides
    'Commencer en colonne 3 pour les zones de texte
    j = 3
    With appXL
      'Ecrire le titre en colonne A
      .Cells(i, 1) = Diapo.Shapes.Title.TextFrame.TextRange.Text
      'Ecrire l'index en colonne B
      .Cells(i, 2) = Diapo.SlideIndex
      For Each Forme In Diapo.Shapes
'        If Forme.Type = msoTextBox Then
        .Cells(i, j) = Left(Forme.TextFrame.TextRange.Text, 255)
        j = j + 1
'        End If
      Next
      'Ligne suivante dans Excel
      i = i + 1
    End With
  Next

  'Afficher le classeur Excel
  appXL.Visible = True
  
End Sub
Caillou
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 planning sur Excel
Réponses
0
Affichages
675
T
Réponses
0
Affichages
1 K
TCDVBA
T
E
  • Question Question
Réponses
1
Affichages
3 K
Ericfourm
E
P
  • Question Question
Réponses
1
Affichages
574
A
Réponses
3
Affichages
903
B
Réponses
0
Affichages
936
BoudinTozz
B
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…