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 PowerPoint Discussion :

Récupérer le code VBA d'un modèle pour incorporer dans Excel [PPT-2010]


Sujet :

VBA PowerPoint

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut Récupérer le code VBA d'un modèle pour incorporer dans Excel
    bonjour à tous !

    j'ai un fichier excel qui génère un powerpoint avec 2 slides au modèle différent :
    j'utilise :
    le thème : Horizon
    disposition : titre seul
    le logo en haut et à gauche

    1er modèle de slide :
    depuis Excel je crée un tableau de données (qui n'a jamais le même nombre de lignes)
    je veux :
    • le centrer verticalement
    • l'encadrer avec un cadre aux angles arrondis et de couleur mauve


    2ème modèle de slide :
    depuis Excel je crée pour chaque slide (1), un slide (2) avec l'image correspondant aux données du slide(1)
    présentation :
    image pleine page sans encadrement

    j'ai créé un modèle dans PPT : DEVIS.potx
    mais je voudrais récupérer le code VBA pour l'insérer dans la macro Excel
    dont voici le code :
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    Option Explicit 'T'oblige a declarer toutes les variables que tu utilises
    'Forum DEVELOPPEZ.COM - Auteur : Qwazerty
    Sub POWERPOINT()
    'Active dans les references (menu option) la ligne "Microsoft PowerPoint x.x Object Library"
     
    Dim objPPT As Object 'POWERPOINT.Application
    Dim objPres As Object 'POWERPOINT.Presentation
    Dim objSld As Object 'POWERPOINT.Slide
    Dim ObjShTable As Object 'POWERPOINT.Shape
    Dim Tablo As Variant
    Dim x As Integer, i As Integer
    Dim CustLayout As Object 'POWERPOINT.CustomLayout
    Dim TheRow As Variant 'POWERPOINT.Row
    Dim NomTableau As String
    Dim NewTop As Integer
    Dim TheShTab As Object 'POWERPOINT.Shape
    Dim TmpTop As Integer
    Dim objSldImg As Object
    Dim objSldImgTable As Object
    Dim ObjShImgTable As Object
     
    With Sheets("description-prod") 'Il faut presiser le "." dans la suite du code pour y faire reference
        Tablo = .Range("A2:Z" & .Cells(Rows.Count, "A").End(xlUp).Row).Value
    End With
     
    Set objPPT = CreateObject("Powerpoint.Application")
    objPPT.Visible = True
     
    Set objPres = objPPT.Presentations.Add
    objPres.SaveAs ThisWorkbook.Path & "\test3.ppt"
     
    Set CustLayout = objPres.SlideMaster.CustomLayouts.Add(1)
    'Si tu veux changer les couleur sur ous tes Slide, il faut modifier CustLayout
    'Ca affectera directement la présentation des slides
    For i = 1 To UBound(Tablo)
        'On regarde si on doit créer un nouveau Slide ou completer l'existant
        If NomTableau <> Tablo(i, 2) Then
            'On garde en memoire le nom du tableau
            NomTableau = Tablo(i, 2)
     
            'On ajoute un nouveau Slide pour insérer les données
            Set objSld = objPres.Slides.AddSlide(objPres.Slides.Count + 1, CustLayout)
     
            'On renseigne le titre du slide
            objSld.Shapes.Title.TextFrame.TextRange.Text = Tablo(i, 2)
     
            'On ajoute un nouveau slide pour insérer l'image
            Set objSldImg = objPres.Slides.AddSlide(objPres.Slides.Count + 1, CustLayout)
     
            'on crée un tableau d'une seule cellule pour recevoir l'image
            Set ObjShImgTable = objSldImg.Shapes.AddTable(1, 1)
            'on dimensionne la cellule pour l'image
            With ObjShImgTable.Table
            .Columns(1).Width = 500
            .Rows(1).Height = 350
            .Cell(1, 1).Shape.Fill.UserPicture (Tablo(i, 19)) 'insertion de l'image correspondante
             End With
     
        End If
     
        'On crée le tableau qui contiendra les données avec 2 ligne 3 colonnes ou 1 ligne 3 colonnes
        If Tablo(i, 12) <> "" Then
            Set ObjShTable = objSld.Shapes.AddTable(2, 3)
        Else 'Si pas de sous element precisé
            Set ObjShTable = objSld.Shapes.AddTable(1, 3)
        End If
     
        'On regarde si des objet tableau existe et on le rajoute a la suite du plus bas
        NewTop = ObjShTable.Top
        For Each TheShTab In objSld.Shapes
            If TheShTab.HasTable And (TheShTab.Name <> ObjShTable.Name) Then
                TmpTop = TheShTab.Top + TheShTab.Height
                If NewTop < TmpTop Then NewTop = TmpTop + 3
            End If
        Next
        ObjShTable.Top = NewTop
     
        'On dimensionne la taille des colonnes (a toi de voir)
        With ObjShTable.Table
            .Columns(1).Width = 40
            .Columns(2).Width = 40
            .Columns(3).Width = 480
     
     
            'On Rajoute les données article
            'On fusionne les 2 dernieres cellules de a ligne 1
            .Cell(1, 2).Merge .Cell(1, 3)
            'On place l'item principal
            .Cell(1, 1).Shape.TextFrame.TextRange.Text = Tablo(i, 6) 'Qte
            .Cell(1, 2).Shape.TextFrame.TextRange.Text = Tablo(i, 7) 'Description
            'On place le sous-ensemble uniquement s'il existe
            If Tablo(i, 12) <> "" Then
                .Cell(2, 2).Shape.TextFrame.TextRange.Text = Tablo(i, 11) 'Qte
                .Cell(2, 3).Shape.TextFrame.TextRange.Text = Tablo(i, 12) 'Description
            End If
        End With
    Next
     
     
    objPres.save
    objPres.Close
     
    End Sub
    cela fonctionne très bien, reste le problème du modèle à résoudre...

    votre aide sera la bienvenue
    d'avance merci aux experts POWERPOINT VBA

  2. #2
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    pour ceux que cela intéresse
    reportez vous à cette discussion dans le forum Excel VBA EXCEL

    Piloter POWERPOINT depuis Excel - utilisation d'un modèle

    Vous y trouverez toutes les réponses documentées par Qwazerty

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Code vba ne fonctionne pas pour sous formulaire
    Par 8e8eClo dans le forum IHM
    Réponses: 5
    Dernier message: 23/03/2012, 09h32
  2. [XL-2003] code VBA pr choix magasion pour impression
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/06/2009, 14h55
  3. [Debutant]Comment récupérer du code VBA d'un Assistant
    Par peuplier dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/12/2008, 23h26
  4. [code VBA]passage de variable pour une requête paramétrée
    Par christrabin dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/04/2007, 14h30
  5. Récupérer le code VBA d'un formulaire
    Par Peanut dans le forum IHM
    Réponses: 19
    Dernier message: 15/12/2006, 16h18

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