Création macro, copier powerpoint selon une base.

problemeaide - 14 déc. 2012 à 11:00
 problemeaide - 7 janv. 2013 à 16:48
Bonjour à tous,

Je suis actuellement à la recherche de réponse.
Ma question concerne la faisabilité de mon projet.

Voila j'ai un fichier excel de base nommé "BDD"
A partir de ce fichier je créer X nouveau document (XLS), X étant le nombre de ville contenu dans une des colonnes du fichier "BDD".
Option Explicit

Sub CreationFichiers()
Dim J As Long
Dim Nom As String

  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  With Sheets("Nomenclature")
    For J = 3 To .Range("G" & Rows.Count).End(xlUp).Row
      Nom = .Range("G" & J)
      Sheets(Array("Nomenclature", "BDD", "G3")).Copy
      With ActiveWorkbook
        .Sheets("G3").Range("A1") = Nom
        .Sheets("G3").Name = Nom
        .Sheets("Nomenclature").DrawingObjects.Delete
        .SaveAs ThisWorkbook.Path & "" & Nom
        .Close
      End With
    Next J
  End With
  MsgBox "Création fichier terminée"
End Sub


J'ai un diapo de base nommé "Diapo" contenant la base visuel que je souhaite garder.

Mon but est de créer un diapo par feuille XLS créer. Les données du diapo s'actualisant en fonction des tableaux contenu dans chacun des documents XLS.

J'aimerai d'abord savoir si c'est réalisable. Et si vous pouvez m'aider à comprendre comment y arriver?

Merci d'avance du temps que vous prendrez pour me répondre

11 réponses

Utilisateur anonyme
14 déc. 2012 à 12:19
Bonjour problème,
J'essaye de comprendre:
Mon but est de créer un diapo par feuille XLS créer

Qu'appelles-tu un diapo? une photo?
Les données du diapo s'actualisant en fonction des tableaux contenu dans chacun des documents XLS

S'actualisent en fonction de la modification/création du XLS?
Qui le modifie? un utilisateur ou ton appli vb.net?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
problemeaide
14 déc. 2012 à 13:13
#acive
Je veux créer un PTT (ayant la meme forme que mon fichier de base)automatiquement. Il faudrait qu'il soit relié au fichier xls et donc que les graphiques et tableau soit en relation avec l'xls.

Je ne sais pas si c'est possible.

Si il le faut je peux donner des fichiers qui donnent une idée de mes documents. Ou expliquer ma démarche avec des images.
0
problemeaide
14 déc. 2012 à 13:16
Oui il faudrait que tout soit relié ensemble. C'est possible avec un copier coller avec relation mais comme les villes ne sont jamais les mêmes, leur nombre non plus...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
14 déc. 2012 à 14:00
Bonjour,
Voici un code pour exporter un graphique dans une présentation PowerPoint. Il crée la présentation et exporte le graphique dans le même dossier que le classeur Excel:


'Cochez la réf&érence Microsoft PowerPoint 11.0 Object Library
Sub NouvellePresentation()

Dim PptDoc As PowerPoint.Presentation
Dim Diapo As PowerPoint.Slide
Dim Sh As PowerPoint.Shape
Dim Cs1 As ColorScheme
Dim NbShpe As Integer

Dim PptApp As Variant
Set PptApp = CreateObject("Powerpoint.Application")
Set PptDoc = PptApp.Presentations.Add

With PptDoc

'--- Ajoute un Slide
.Slides.Add Index:=1, Layout:=ppLayoutBlank
'Crée une zone de texte (AddLabel)
Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=150, Height:=60)
'insère la valeur de la Cellule A1 dans une zone de texte
Sh.TextFrame.TextRange.Text = Range("A1")
'Modifie la couleur du texte
Sh.TextFrame.TextRange.Font.Color = RGB(255, 100, 255)


'--- Ajoute un nouveau slide et le positionner en 2eme position
Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)

'copie le 1er graphique contenu dans la feuille Excel active
ActiveSheet.ChartObjects(1).Copy
'collage dans la 2eme diapositive
Diapo.Shapes.Paste

'Compte le nombre de shapes dans la diapositive:
'le dernier objet inséré correspond à l'index le plus élevé
NbShpe = Diapo.Shapes.Count

'Renomme et met en forme l'objet collé
With Diapo.Shapes(NbShpe)
.Name = "monGraph" 'personnalise le nom
.Left = 150 'définit la position horizontale dans le slide
.Top = 100 'définit la position verticale dans le slide
.Height = 300 'hauteur
.Width = 400 'largeur
End With


'--- Modifie la couleur de fond dans les différents Slides
Set Cs1 = .ColorSchemes(3)
Cs1.Colors(ppBackground).RGB = RGB(UserForm1.TextBox1, UserForm1.TextBox2, UserForm1.TextBox3)
.SlideMaster.ColorScheme = Cs1
End With

'Sauvegarde la présentation
'dans le meme répertoire que le classeur excel contenant la macro.
PptDoc.SaveAs FileName:=ThisWorkbook.Path & "" & "NouvellePresentation_graph.ppt"
'ferme la presentation
PptDoc.Close
'ferme powerpoint
PptApp.Quit

MsgBox "Opération terminée."
End Sub


A toi de l'adapter suivant tes besoins

@+ Le Pivert
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
problemeaide
14 déc. 2012 à 14:20
Merci le pie vert,

Le problème est que j'ai déjà un diapo de base!
Je pourrais le faire comme tu me l'indiques mais sa ne résoudrait pas le problème de création de graphique en dynamique en fonction des fichiers XLS.

X fichier XLS = X fichier PPT

Sinon

'copie le 1er graphique contenu dans la feuille Excel active
ActiveSheet.ChartObjects(1).Copy

Comment sait il ou il se situe? Peut on l'adapter en fonction qu'il cherche le graphique ou tableau dans une feuille excel dont nous aurions défini la liste?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
14 déc. 2012 à 15:11
Pour ouvrir la présentation existante:
a la place de:
Set PptDoc = PptApp.Presentations.Add

tu mets cela:

' affectation
    Set PptDoc  =  "Chemin  de la présentation\MaPrésentation.ppt"
 
    ' ouverture du fichier
    PptApp .WindowState = ppWindowMaximized
    PptApp .Visible = True
    PptApp .Presentations.Open PptDoc


Et pour la feuille Excel, il suffit de sélectionner celle qui contient ton graphique

@+ Le Pivert
0
Bonjour à vous,

Je te remercie du code que tu m'as donné.
J'ai un autre soucis c'est que le chemin d'axcès peut changer.

Je vousdrais dejà réussir à copier/coller mon fichier PPT nommé base, X fois en fonction de la colonne G et donnée à chaque fichier crée, le nom des cellules en G( lyon,paris, marseille...)comme pour la macro montré si dessus.

Merci d'avance
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
7 janv. 2013 à 14:44
Tu fais une boucle sur la colonne "G" pour récupérer les informations comme ceci:


  Dim j As Integer
  Dim nompptopen As String 'nom présentation à ouvrir
  Dim nompptsave As String 'nom présentation à enregistrer
    'Récupère les données de la colonne G...
    For j = 1 To Range("G65536").End(xlUp).Row
       If Range("G" & j) = "" Then
       j = j + 1
      Else
      nompptopen = Range("G" & j)
      nompptsave = Range("G" & j)
       MsgBox nompptsave
       End If
    Next j



Ces infos tu les mets dans ton code

@+ Le Pivert
0
Et ce code est à integrer à ma fonction XLS?
fichier xls: midou Créations Fichiers V001.xls

Mais surtout où et comment?? Je pense dejà avoir al boucle

j'ai essayé de rajouter
FileCopy (ThisWorkbook.Path & "OLN-Ville-Base.ppt", ThisWorkbook.Path & "" & Nom & ".ppt")


Mais ça ne fonctionne pas!

Je ne vois vraiment pas.

Ps: Je cherche à avoir
un fichier PPT au nom des villes, avec comme copie un fichier dejà existant nommé base.ptt
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
7 janv. 2013 à 16:03
Là, je suis un peu perdu.

Voici donc pour copier un fichier ppt nommé "Base" qui se trouve dans le même dossier que le classeur Excel avec le nom des villes se trouvant dans la colonne "G" du-dit classeur:
C'est bien cela?

 Dim j As Integer
  Dim nompptsave As String 'nom présentation à enregistrer
    'Récupère les données de la colonne G...
    For j = 1 To Range("G65536").End(xlUp).Row
       If Range("G" & j) = "" Then
       j = j + 1
      Else
      nompptsave = Range("G" & j)
    FileCopy ThisWorkbook.Path & "" & "Base.ppt", ThisWorkbook.Path & "" & nompptsave & ".ppt"
End If
    Next j
.


@+ Le Pivert
0
Sa marche!
Merci!

Je reviendrais prochainement car maintenant je dois faire la liaison avec le xls et le ppt de meme noms.
J'y planche se soir et je reviens avec une macro (qui ne fonctionnera surement pas...)
0
Rejoignez-nous