IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Créer un Powerpoint en VBA


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 54
    Par défaut Créer un Powerpoint en VBA
    Bonjour,

    Je souhaiterais, dans un premier temps, créer depuis access un bouton qui m'ouvre une slide PPT avec une slide Blank par default.

    Je voudrais savoir ensuite comment remplir cette slide vide, avec des variables venant d'une de mes tables

    Merci de votre aide

  2. #2
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Par défaut
    Salut
    Le doute m'a envahi après lecture de votre billet.
    Cartésien que je suis, j'ai dû le lever.
    En utilisant "Gogole est mon ennemi" ou pourquoi pas Qwant, vous ne pouvez pas vous imaginer le nombre de réponses qui s'affichent.
    Je suis certain que vous allez trouver chaussure à votre pied, que vous allez faire des essais et que s'ils n'étaient pas concluant, vous reviendriez ici pour interpeler la communauté de DEV.
    Qu'en pensez-vous ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 54
    Par défaut
    Vous avez absolument raison, j'ai préféré la rapidité d'une réponse au lieu de la joie de chercher soi-même

    Je reviendrais si jamais je me retrouve bloqué par mes capacités en vba qui sont malheureusement assez limitées, comme mon courage à me lancer dans ce morceau de code que je m'apprête à faire, et que j'ai honteusement négligé en ne voulant pas le mérité à force d'essais et de recherches (et de cri un peu )

    Merci de me remettre dans le droit chemin, et pour info mon ennemi s'appelle Ecosia

  4. #4
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut Acces pilotant powerpoint (2007)
    Bonjour, je suis fainéant aussi, c'est pourquoi je donne ce code
    la table 'table1' contient 2 champs (le nom d'un objet, le nombre d'objet)
    ça a le mérite de fonctionner même si c'est un peu lent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    Option Compare Database
     
    Sub creation_PPT()
      Dim ppt As PowerPoint.Application
      Dim Pres As PowerPoint.Presentation
      Dim sl As PowerPoint.Slide
      Dim db As Database
      Dim t As Recordset
      Dim ligne As Long, numDiapo As Long
     
      Set ppt = CreateObject("PowerPoint.Application") 'ouvre powerpoint
      ppt.Visible = True
     
      Set Pres = ppt.Presentations.Add  'ouvre un document
     
      Pres.Slides.Add 1, ppLayoutBlank  'crée une diapo vide
      Set sl = Pres.Slides(1)
      numDiapo = Pres.Slides.Count + 1  'numero pour la diapo suivante
     
      Set tb = sl.Shapes.AddTable(26, 2, 40, 10, 400, 300)  'ajoute une table
      tb.Table.Columns(1).Width = 300   'largeur des colonnes
      tb.Table.Columns(2).Width = 40
     
      For i = 2 To 26   'mise en forme des cellules (26=nombre de lignes)
        For j = 1 To 2  '2=nombre de colonnes
          sl.Shapes(1).Table.Rows(i).Cells(j).Shape.TextFrame.TextRange.Font.Size = 10
          sl.Shapes(1).Table.Rows(i).Cells(j).Shape.TextFrame.TextRange.Font.Name = "Arial"
        Next j
        '2eme cellule alignée à droite
        sl.Shapes(1).Table.Rows(i).Cells(2).Shape.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignRight
      Next i
     
      Set db = CurrentDb
      Set t = db.OpenRecordset("table1")    'ouvre la table 'table1'
      t.MoveFirst
      ligne = 2
     
      tb.Table.Columns(1).Cells(1).Shape.TextFrame.TextRange.Text = "objet"
      tb.Table.Columns(2).Cells(1).Shape.TextFrame.TextRange.Text = "nb"
     
      Do Until t.EOF
        'renseigne les cellules avec les données de l'enregistrement en cours
        sl.Shapes(1).Table.Columns(1).Cells(ligne).Shape.TextFrame.TextRange.Text = t(0)
        sl.Shapes(1).Table.Columns(2).Cells(ligne).Shape.TextFrame.TextRange.Text = t(1)
        t.MoveNext  'enregistrement suivant
     
        ligne = ligne + 1   'ligne suivante
        If ligne Mod 27 = 0 Then    'crée une nouvelle diapo si tableau plein
            Pres.Slides.Add numDiapo, ppLayoutBlank
            Set sl = Nothing
            Set sl = Pres.Slides(Pres.Slides.Count)
     
            Set tb = Nothing
            Set tb = sl.Shapes.AddTable(26, 2, 40, 10, 400, 300)    'ajoute la table
            tb.Table.Columns(1).Width = 250
            tb.Table.Columns(2).Width = 40
            'format des cellules
            For i = 2 To 26
                For j = 1 To 2
                    sl.Shapes(1).Table.Rows(i).Cells(j).Shape.TextFrame.TextRange.Font.Size = 10
                    sl.Shapes(1).Table.Rows(i).Cells(j).Shape.TextFrame.TextRange.Font.Name = "Arial"
                Next j
                sl.Shapes(1).Table.Rows(i).Cells(2).Shape.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignRight
            Next i
     
            'titre
            tb.Table.Columns(1).Cells(1).Shape.TextFrame.TextRange.Text = "objet"
            tb.Table.Columns(2).Cells(1).Shape.TextFrame.TextRange.Text = "nb"
            numDiapo = Pres.Slides.Count + 1
            ligne = 2
        End If
      Loop
      t.Close   'ferme la table
     
      'sauve le document
      Pres.SaveAs "C:\Users\NomUtilisateur\Documents\outils.pptx"
      ppt.Quit  'quitte powerpoint
      Set ppt = Nothing
     
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 54
    Par défaut
    Merci bcp

Discussions similaires

  1. créer evenement onerror par VBA
    Par cbleas dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2006, 13h59
  2. Créer un PDF en VBA sous Excel
    Par chasseur37 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/10/2006, 10h03
  3. Créer un état en VBA (avec des paramètres)
    Par kissmytoe dans le forum Access
    Réponses: 7
    Dernier message: 09/03/2006, 16h10
  4. Créer une table en VBA ?
    Par nicburger dans le forum Access
    Réponses: 11
    Dernier message: 16/02/2005, 15h15
  5. Créer un formulaire avec VBA ?
    Par Jean Bonnisme dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/10/2004, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo