![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre du Club
![]() Date d'inscription: juin 2006
Messages: 92
|
Bonjour,
Après avoir parcouru le forum ,je bloque sur une procédure qui me permettrait de copier un slide powerpoint et de le coller sur Excel. La dessus ,est-il possible de : sur un slide (avec du texte ,et sous forme de tableau de 4 colonnes),de copier que 3 colonnes sur Excel ? de faire une boucle en prenant uniquement les slides avec le titre :"Tableau de classe" ? Merci d'avance de votre aide, |
|
|
|
|
|
#2 (permalink) |
![]() |
Bonjour
On est bien d'accord, c'est le contenu de ta diapositive et non celle-ci que tu veux transférer ? C'est tout à fait possible, mais il faut plus de détails :
Philippe |
|
|
|
|
|
#3 (permalink) | |
|
Membre du Club
![]() Date d'inscription: juin 2006
Messages: 92
|
Bonjour Philippe,
On est bien d'accord, c'est sur le contenu de la diapo Citation:
|
|
|
|
|
|
|
#5 (permalink) |
|
Membre Expert
![]() Date d'inscription: juin 2008
Messages: 1 038
|
bonsoir,
voila ce que je comprends du texte en gras, j'ai fais cela dans VBA-PPT, coche la référence à Excel : Code :
Sub ExtraitTexte() Dim yaExcel As New Excel.Application Dim yaWk As Excel.Workbook Dim s As Slide Dim yaSa As Shape Dim i As Integer ' ' Création Classeur ' Set yaWk = yaExcel.Workbooks.Add yaWk.Sheets(1).Cells(1, 1) = "Slide" yaWk.Sheets(1).Cells(1, 2) = "Texte" i = 1 For Each s In ActivePresentation.Slides For Each yaSa In s.Shapes If yaSa.HasTextFrame Then i = i + 1 yaWk.Sheets(1).Cells(i, 1) = s.Name yaWk.Sheets(1).Cells(i, 2) = yaSa.TextFrame.TextRange End If Next Next yaExcel.Visible = True End Sub
__________________
JacqueS. Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...) Pour devenir mon ami laissez moi un message |
|
|
|
|
|
#6 (permalink) |
|
Membre du Club
![]() Date d'inscription: juin 2006
Messages: 92
|
Bonjour JackOuYA,
Merci pour ta réponse ! Si j'ai bien compris ,la ligne Code :
yaWk.Sheets(1).Cells(i, 1) = s.Name Dans ma demande ,je chercherais une boucle qui scannerait les slides et quand il trouverait le nom d'un titre de slide avec "Classe" ,il prendrait alors le textbox situé dans ce slide (ie : Code :
yaWk.Sheets(1).Cells(i, 2) = yaSa.TextFrame.TextRange Autre question ,si dans la textrange du slide, il y a un tableau(4x4) :est-il possible de prendre les colonnes 1 et 2 uniquement ? Merci d'avance, |
|
|
|
|
|
#7 (permalink) |
|
Membre Expert
![]() Date d'inscription: juin 2008
Messages: 1 038
|
bonsoir,
pour les deux premiéres question si tu as exécuté le code tu dois avoir la solution ? Ton tableau il est vraiment dans la Zone de texte ? si la réponse est non tiens le code précédent modifié pour traiter les tableaux : Code :
Sub YaTableau() Dim yaExcel As New Excel.Application Dim yaWk As Excel.Workbook Dim s As Slide Dim yaSa As Shape Dim i As Integer ' ' Création Classeur ' Dim iR As Integer Dim iC As Integer Set yaWk = yaExcel.Workbooks.Add yaWk.Sheets(1).Cells(1, 1) = "Slide" i = 1 For Each s In ActivePresentation.Slides For Each yaSa In s.Shapes If yaSa.HasTable Then i = i + 1 yaWk.Sheets(1).Cells(i, 1) = s.Name For iR = 1 To yaSa.Table.Rows.Count 'boucle dans lignes i = i + 1 For iC = 1 To yaSa.Table.Columns.Count 'boucle dans colonne yaWk.Sheets(1).Cells(i, iC) = yaSa.Table.Cell(iR, iC).Shape.TextFrame.TextRange Next Next End If Next Next yaExcel.Visible = True End Sub
__________________
JacqueS. Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...) Pour devenir mon ami laissez moi un message Dernière modification par JackOuYA ; 14/11/2008 à 19h18 |
|
|
|
|
|
#8 (permalink) |
|
Membre du Club
![]() Date d'inscription: juin 2006
Messages: 92
|
Merci Jacques pour ta réponse.
J'ai avancé dessus mais je bloque sur une étape. Dans la pratique ,je voudrais que la macro balaye tous les slides et scanne les titres des textbox. Je suis arrivé avec cette syntaxe à scanner les textbox : Code :
If yaSa.HasTextFrame Then ActiveWindow.Selection.SlideRange.Shapes(i).Select ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Select Dim aa As String aa = ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Text MsgBox aa Else End If Simplement, arrivé a la fin du premier slide en scannant toutes les textbox, il ne passe pas à la deuxieme et me met un message d'erreur . Je copie colle tout mon code si ca peut aider : Code :
Sub macro2() Dim s As Slide Dim yaSa As Shape Dim i As Integer For Each s In ActivePresentation.Slides i = 1 For Each yaSa In s.Shapes If yaSa.HasTextFrame Then ActiveWindow.Selection.SlideRange.Shapes(i).Select ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Select Dim aa As String aa = ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Text MsgBox aa Else End If i = i + 1 debut = debut + 1 Next Next End Sub Merci d'avance!! |
|
|
|
|
|
#9 (permalink) |
|
Membre Expert
![]() Date d'inscription: juin 2008
Messages: 1 038
|
bonsoir,
bonilla, évite de rajouter des Select dans mes codes cela me donne des boutons ![]() le premier code que j'ai posté tout en haut parcours tous les boites textes de toutes tes diapositives , ce n'est pas cela que tu veux faire ?
__________________
JacqueS. Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...) Pour devenir mon ami laissez moi un message |
|
|
|
|
![]() |
![]() |
||
[PPT-VBA] Comment exporter un slide vers Excel
|
||
| Outils de la discussion | |
|
|