Copier-coller Excel vers Powerpoint (tableaux)

nat54

XLDnaute Barbatruc
Bonjour,

Voilà mon « problème ».
Un fichier Excel avec environ 30 onglets formatés de façon identique
Je dois copier-coller les cellules de B2 à I37 de chaque onglet
Le but : un slide powerpoint par onglet excel

J’ai vu sur le site pour copier-coller des graphes mais pas de simples tableaux …

Merci de m’aider à automatiser cela en VBA, je gagnerais un temps fou

Dans ma besace excel j’avais cela au ca où ca vous aide…

Code:
[/SIZE][/FONT]
[FONT=Arial][I][SIZE=3]ort_Ppt()[/SIZE][/I][/FONT]
[COLOR=teal][FONT=Arial][I][SIZE=3]    'necessite d'activer la reference Microsoft Powerpoint Object Library[/SIZE][/I][/FONT][/COLOR]
[FONT=Arial][I][SIZE=3]    Dim PPT As PowerPoint.Application[/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    Dim PptDoc As PowerPoint.Presentation[/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    Dim NbShpe As Byte[/SIZE][/I][/FONT]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][FONT=Arial][I]Dim NumMois As String[/I][/FONT][/SIZE]
[FONT=Arial][I][SIZE=3]    Dim Rep As String[/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]        [/SIZE][/I][/FONT]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][FONT=Arial][I]Sheets("Page de Garde").Select[/I][/FONT][/SIZE]
[FONT=Arial][I][SIZE=3]    NumMois = Range("D14")[/SIZE][/I][/FONT]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][FONT=Arial][I]Rep = Range("D16")[/I][/FONT][/SIZE]
[FONT=Arial][I][SIZE=3]    [/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    Set PPT = CreateObject("Powerpoint.Application") 'creation session PowerPoint[/SIZE][/I][/FONT]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][FONT=Arial][I]PPT.Visible = True [/I][/FONT][COLOR=teal][FONT=Arial][I]'l'application sera visible[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][FONT=Arial][I]Set PptDoc = PPT.Presentations.Open("J:\Services\Finance Division CCF\Reporting-SIDEL\2006\" & Rep & "\Sales report\CCF Division turnover " & NumMois & "-06 Sales Report.ppt") [/I][/FONT][COLOR=teal][FONT=Arial][I]'ouverture fichier ppt[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[FONT=Arial][I][SIZE=3]    [/SIZE][/I][/FONT]
[COLOR=teal][FONT=Arial][I][SIZE=3]    ''''''' GRAPHIQUE 30[/SIZE][/I][/FONT][/COLOR]
[FONT=Arial][I][SIZE=3]    Sheets("Division Global Sales").Select[/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    ActiveSheet.Shapes("Group 30").Copy[/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    [/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    PptDoc.Slides(2).Shapes.PasteSpecial ppPasteEnhancedMetafile [/SIZE][/I][/FONT]
[SIZE=3][COLOR=teal][FONT=Arial][I] [/I][/FONT][/COLOR][COLOR=teal][FONT=Arial][I]'collage image metafichier windows dans le Slide3 du document Power Point[/I][/FONT][/COLOR][/SIZE]
[FONT=Arial][I][SIZE=3]    [/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3] [/SIZE][/I][/FONT]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][COLOR=teal][FONT=Arial][I]    'compte le nombre de shapes dans le 3eme slide ; le dernier objet inséré correspond à l'index le plus élevé[/I][/FONT][/COLOR][/SIZE]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][FONT=Arial][I]NbShpe = PptDoc.Slides(2).Shapes.Count[/I][/FONT][/SIZE]
[FONT=Arial][I][SIZE=3]    [/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    With PptDoc.Slides(2).Shapes(NbShpe)[/SIZE][/I][/FONT]
[SIZE=3][FONT=Arial][I]        [/I][/FONT][FONT=Arial][I]'.Name = "monGraph[/I][/FONT][FONT=Arial][I]"                [COLOR=teal]'personnaliser le nom de l'image insérée[/COLOR][/I][/FONT][FONT=Arial][I][/I][/FONT][/SIZE]
[SIZE=3][FONT=Arial][I]        .Left = 100                                  [/I][/FONT][COLOR=teal][FONT=Arial][I]'position horizontale dans le slide[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[SIZE=3][FONT=Arial][I]        .Top = 50                               [/I][/FONT][FONT=Arial][I]'[COLOR=teal]position verticale dans le slide[/COLOR][/I][/FONT][FONT=Arial][I][/I][/FONT][/SIZE]
[SIZE=3][FONT=Arial][I]        [/I][/FONT][FONT=Arial][I].Height = 400                             [/I][/FONT][COLOR=teal][FONT=Arial][I]'hauteur image[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[SIZE=3][FONT=Arial][I]        .Width = 600                             [/I][/FONT][COLOR=teal][FONT=Arial][I]'largeur image[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[FONT=Arial][I][SIZE=3]    End With[/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    [/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]    [/SIZE][/I][/FONT]
[SIZE=3][FONT=Arial][I]    [/I][/FONT][FONT=Arial][I]PptDoc.Save         [/I][/FONT][COLOR=teal][FONT=Arial][I]'sauvegarder les modifications[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[SIZE=3][FONT=Arial][I]    'PptDoc.Close          [/I][/FONT][COLOR=teal][FONT=Arial][I]'fermer le document ppt[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[SIZE=3][FONT=Arial][I]    'PPT.Quit '              [/I][/FONT][COLOR=teal][FONT=Arial][I]fermer l'application powerPoint[/I][/FONT][/COLOR][FONT=Arial][I][/I][/FONT][/SIZE]
[FONT=Arial][I][SIZE=3] [/SIZE][/I][/FONT]
[FONT=Arial][I][SIZE=3]End Sub
[/I]
 

JNP

XLDnaute Barbatruc
Re : Copier-coller Excel vers Powerpoint (tableaux)

Bonjour Nat54, Pierrot93, et le forum :),
J'ai suivi tes perigrinations et toutes les réponses de Pierrot, j'aimerais t'aider, mais c'est pire que lui pour la compatibilité, je suis en 2007...
Par contre, j'ai un peu de mal à suivre l'acharnement à copier des feuilles Excel dans du PowerPoint (certe, des contrôleurs de gestion seraient surement intéressés, mais pour ceux que je connais, il maitrisent très bien les formules, pas le VBA...). Plusieurs pistes que je te propose pour changer d'angle d'attaque: Une bonne vieille copie d'écran. Ou alors un enregistrement en pdf d'Excel pour intégration automatique. Enfin, PowerPoint supportant très bien VBA, pourquoi pas appeler les feuilles Excel depuis une macro PowerPoint?
Bon courage :cool:
 

nat54

XLDnaute Barbatruc
Re : Copier-coller Excel vers Powerpoint (tableaux)

Bonjour Nat54, Pierrot93, et le forum :),
J'ai suivi tes perigrinations et toutes les réponses de Pierrot, j'aimerais t'aider, mais c'est pire que lui pour la compatibilité, je suis en 2007...
Par contre, j'ai un peu de mal à suivre l'acharnement à copier des feuilles Excel dans du PowerPoint (certe, des contrôleurs de gestion seraient surement intéressés, mais pour ceux que je connais, il maitrisent très bien les formules, pas le VBA...). Plusieurs pistes que je te propose pour changer d'angle d'attaque: Une bonne vieille copie d'écran. Ou alors un enregistrement en pdf d'Excel pour intégration automatique. Enfin, PowerPoint supportant très bien VBA, pourquoi pas appeler les feuilles Excel depuis une macro PowerPoint?
Bon courage :cool:

Bonjour

La dernière solution pourrait m'intéresser
mais je pense que le code reviendrait au même, non ?


PS : "l'acharnement" à vouloir coller du excel dans ppt, c'est pour nos Directeurs
qu'ils puissent présenter les choses en réunion...
 

JNP

XLDnaute Barbatruc
Re : Copier-coller Excel vers Powerpoint (tableaux)

Bonjour Nat54, le forum :),
Si c'est pour tes directeurs, je te souhaites du courage, car non seulement il faut que ça marche, mais il faut que ce soit blindé, car ça buggera toujours 1/4 d'heure avant la réunion :D.
Pourquoi passer dans l'autre sens ? Le code, effectivement, sera du même type, je ne vois pas pourquoi il en serait autrement. Mais la où peux résider la différence, c'est qu'au lieu d'injecter, tu vas aspirer, au lieu de décrire une collection de feuilles sous Excel en en ignorant certaines, tu vas pouvoir ajouter les slides au fur et à mesure de tes besoins. Ça présentera même l'avantage de pouvoir sélectionner plusieurs fichiers Excel pour les rassembler dans un même pps... Tu peux même prévoir un contrôle en visualisant toutes les feuilles d'Excel une à une avec un simple "Voulez-vous importer cette feuille ?". Et puis, au lieu de coller du code dans tous les fichiers Excel de tes directeurs pour qu'il puissent extraire les données, en les adaptant à chaque fois suivant la configuration du fichier, tu vas pouvoir créer un modèle de pps unique qui va leur permettre d'aller chercher n'importe quel fichier Excel.
Je dit pas que c'est du tout cuit, mais vu que tu bloques dans l'autre sens, ça vaut peux-être le coup d'essayer.
A plus tard :cool:
 

nat54

XLDnaute Barbatruc
Re : Copier-coller Excel vers Powerpoint (tableaux)

Présenté comme cela, ça a l'air extra
seulement mes connaissances en vba sont limitées donc je vais voir
as-tu un code s'en rapprochant ?

ps : c'est à moi que revient la charge des copier-coller et non pas aux Directeurs :D
et ce sera près bien plus d'1/4 d'heure avant la réunion mensuelle
 

JNP

XLDnaute Barbatruc
Re : Copier-coller Excel vers Powerpoint (tableaux)

Re Nat54, le forum :),
Il n'y a pas si longtemps que ça que j'accepte de travailler avec PowerPoint (je l'exécrait avant car il me posait des problèmes professionnels, mais je ne vais pas m'étendre la dessus...). Je n'ai donc pas de bouts de code à te proposer. En plus, Microsoft n'as pas pensé qu'un enregistreur de macro pourrait être utile, donc il faut tout penser... Mais les codes que j'ai testé sont du même tonneau que sous Excel, donc les codes déjà évoqués dans ce fil devraient te fournir une base de départ. D'autre part, un forum sur lequel je vais chercher des infos plus généralistes traite de tous les produits Office, dont PowerPoint et bien d'autres : Forum des développeurs devrait t'aider sur ce nouvel angle (ma reflexion portait plus sur la logique que sur la pratique).
Je te souhaites un bon courage :cool:
PS : Tu as bien de la chance d'avoir des Directeurs pour qui le travail n'est pas pour hier... Au vu de ton pseudo, tu es en Meurthe&Moselle, envoie moi un MP que je puisse postuler ;)
 

nat54

XLDnaute Barbatruc
Re : Copier-coller Excel vers Powerpoint (tableaux)

Bonjour,

Ok va falloir que je me plonge dans ce problème alors...

PS : ne t'inquiète pas, ils demandent aussi des choses pour avant-hier :D
mais sur ce point, c'est en quelque sorte moi qui lance le projet, avec une fréquence mensuelle (pas réellement encore de date-butoir vu que c'est nouveau) donc je m'organise comme je veux, mais j'aimerais bien éviter les tâches sans valeur ajoutée dont les sempiternels copier-coller ..

Au pire je liste tout une fois pour toutes dans excel (mais la macro ne sera pas optimale... loin de là ..)

Code:
Sub Test()

   'nécessite d'activer la référence Microsoft Powerpoint Object Library
    Dim PPT As PowerPoint.Application, PptDoc As PowerPoint.Presentation
    Dim NbShpe As Byte, i As Integer, WS As Worksheet
    
    Set PPT = CreateObject("Powerpoint.Application")
    PPT.Visible = True 'l'application sera visible
    Set PptDoc = PPT.ActivePresentation

Sheets("RECAP ADMINISTRATIF").Activate
Range("b2:k46").Copy
PptDoc.Slides(1).Shapes.Paste ppPasteEnhancedMetafile

End Sub

Mais de toute manière je n'ai pas le résultat voulu car j'aimerais un collage special type DIB
or là c'est un simple copier-cooler 'tout moche'...
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Copier-coller Excel vers Powerpoint (tableaux)

Bonjour Nat54,

je ne m'y connais pas trop en VBA Powerpoint, mais essaye ça :

Code:
Sub Test()
   'nécessite d'activer la référence Microsoft Powerpoint Object Library
    Dim PPT As PowerPoint.Application, PptDoc As PowerPoint.Presentation
    Dim NbShpe As Byte, i As Integer, WS As Worksheet
    
    Set PPT = CreateObject("Powerpoint.Application")
    PPT.Visible = True 'l'application sera visible
    PPT.Presentations.Add
    Set PptDoc = PPT.ActivePresentation
    PptDoc.Slides.Add Index:=1, Layout:=ppLayoutBlank
Sheets("Feuil1").Activate
Range("b2:k46").Copy
PptDoc.Slides(1).Shapes.PasteSpecial ppPasteEnhancedMetafile
End Sub
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote