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

Macros et VBA Excel Discussion :

générer 2 lignes structures différentes en VBA [XL-2010]


Sujet :

Macros et VBA Excel

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 générer 2 lignes structures différentes en VBA
    Bonjour à tous,

    je reprends le code que Qwazerty m'a fourni et qui fonctionne super bien pour générer des slides dans PPT à partir d'un fichier Excel
    et générer autant de lignes dans le tableau PPT que de lignes de données dans Excel
    ====
    voici la structure de mon tableau PPT :
    les 3 premières lignes = 1 seule cellule
    la 4ème = 2 cellules
    la 5ème = 3 cellules
    lorsque j'ajoute des lignes, elles doivent être au format de la 4ème et de la 5ème
    comment expliquer cela en VBA pour que 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
    For Each objShp In objSld.Shapes
            If objShp.HasTable Then
                With objShp.Table
                    .Cell(1, 1).Shape.TextFrame.TextRange.Text = Tablo(i, 2) 'Tableau
                    .Cell(4, 1).Shape.TextFrame.TextRange.Text = Tablo(i, 6) 'Qte
                    .Cell(4, 2).Shape.TextFrame.TextRange.Text = Tablo(i, 7) 'Description1
                    .Cell(5, 2).Shape.TextFrame.TextRange.Text = Tablo(i, 11) 'Description2
                    .Cell(5, 2).Shape.TextFrame.TextRange.Text = Tablo(i, 12) 'Description2
                    '=============================================================================
                    'nouvelle condition :
                    'si la cellule B = G, alors
                    x = 0
                    Do
                        
                        'copie la ligne 4 et 5 du tableau du slide et ajoute les à la suite
                        If x > 0 Then
                            .Rows.Add
                            .Rows.Add                    End If
                        'et remplit les avec les données
                        .Cell(4 + (2 * x), 1).Shape.TextFrame.TextRange.Text = Tablo(i, 6) 'Qte
                        .Cell(4 + (2 * x), 2).Shape.TextFrame.TextRange.Text = Tablo(i, 7) 'Description1
                        .Cell(5 + (2 * x), 2).Shape.TextFrame.TextRange.Text = Tablo(i, 11) 'Description2
                        .Cell(5 + (2 * x), 3).Shape.TextFrame.TextRange.Text = Tablo(i, 12) 'Description2
                        'et autant de fois qu'il y a de lignes où cell B = G
                        i = i + 1
                        x = x + 1
                        If i > UBound(Tablo) Then Exit Do
                    Loop While Tablo(i, 2) = Tablo(i - 1, 2)
                End With
            End If
        Next
    Next
    que faut il mettre à cet endroit pour faire comprendre qu'il faut copier la ligne 4 et 5 (avec leur structure)
    If x > 0 Then
    .Rows.Add
    .Rows.Add

    End If
    d'avance merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Salut
    Pourrais tu ajouter un pps avec la structure que tu souhaites, par ce que le fichier que tu avais fourni dans l'autre discussion n'a pas la structure que tu annonces ici, la 5eme ligne pour moi n'a que 2 colonnes.
    Si c'est une évolution du besoin, tu peux faire comme cela.
    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
    Sub BoucleTest2Conditions()
    'Active dans les references (menu option) la ligne "Microsoft PowerPoint x.x Object Library",
    'si tu veux, tu pourras par la suite remettre les Objects pour ne pas avoir a activer cette reference sur les autre postes
    'Mais pour developper c'est plus simple
    Dim objPPT As PowerPoint.Application  'Object
    Dim objPres As PowerPoint.Presentation ' Object
    Dim objSld As PowerPoint.SlideRange ' Object
    Dim objShp As PowerPoint.Shape ' Object
    Dim shp As PowerPoint.Shape
    Dim Tablo As Variant
    Dim x As Integer, i As Integer, y As Integer
     
     
    With Sheets("Feuil1") '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.Open(ThisWorkbook.Path & "\note2.pptm")
    objPres.SaveAs ThisWorkbook.Path & "\test3.ppt"
     
     
     
    For i = 1 To UBound(Tablo)
        'duplique le slide 1
        Set objSld = objPres.Slides(1).Duplicate
        'On le place au dessous de tout
        objSld.moveto objPres.Slides.Count
        'remplit le tableau du slide avec les données
        For Each objShp In objSld.Shapes
            If objShp.HasTable Then
                With objShp.Table
                    .Cell(1, 1).Shape.TextFrame.TextRange.Text = Tablo(i, 2) 'Tableau
                    x = 0
                    Do
                        'On rajoute 2 ligne pour une nouvelle saisi, s'il y a plus d'un article
                        If x > 0 Then
                            With .Rows.Add
                                'Si la ligne contient 3 colonne, on en supprime une
                                If .Cells.Count > 2 Then .Cells(3).Merge .Cells(2)
                            End With
                            With .Rows.Add
                                'ici la nouvelle ligne aura 3 colonnes, puisque powerpoint reproduit la derniere ligne du tableau lors d'un ajout
                                'On supprime donc une colonne
                                .Cells.Item(2).Split 1, 2
                            End With
                        End If
                        'On saisi les differentes valeurs
                        .Cell(4 + (2 * x), 1).Shape.TextFrame.TextRange.Text = Tablo(i, 3) 'Qte
                        .Cell(4 + (2 * x), 2).Shape.TextFrame.TextRange.Text = Tablo(i, 4) 'Description1
                        .Cell(5 + (2 * x), 2).Shape.TextFrame.TextRange.Text = Tablo(i, 5) 'Description2
                        'et autant de fois qu'il y a de lignes où cell B = G
                        i = i + 1
                        x = x + 1
                        If i > UBound(Tablo) Then Exit Do
                    Loop While Tablo(i, 2) = Tablo(i - 1, 2)
                End With
            End If
        Next
    Next
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    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
    bonjour Qwazerty,

    effectivement j'affine au fur et à mesure...
    je joins un exemple complet PPT + fichier excel

    le PPT final devra comprendre pour un enregistrement de tableau :

    2 SLIDES qui se suivent :
    • 1 avec les données
    • 1 avec l'image


    pour 1 TABLEAU
    je peux avoir :
    1 article avec 1 qté et 1 description
    mais aussi pour un même article
    • Qté1 et Description1 (toujours quelque soit le cas de figure)
    • Qté 2 et description2
    • pas de qté, mais une description2 tout de même

    ensuite je voudrais centrer ce tableau dans la page afin de garder une jolie présentation
    quant au titre du tableau, je pense le mettre dans un tableau à part au dessus afin de garder une présentation cohérente dans tous les cas de figures des différents TABLEAUX

    dans l'exemple joint, je mets :
    le PPT qui sert à la fusion (2 premiers slides)
    et l'exemple pour le TABLEAU VERT (les 2 autres slides) pour mieux voir le besoin

    il faut que je rajoute des SI
    car
    Si 'col E et F' sont vides, alors création d'une ligne avec 2 cellules au dessous
    sinon création d'une ligne avec 3 cellules

    bref, encore pas mal de code à résoudre
    d'avance merci de ton aide
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Salut
    As tu testé le code que je t'avais donné?
    La structure du pps semble assez complexe, il serait bien de nous mettre un fichier pps, avec la structure que tu souhaites.
    N'hésite pas a faire plusieurs pages contenant les différents cas que tu cites.
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    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
    Bonsoir,

    oui j'ai testé le code, mais cela coince et met un message d'erreur dès que la macro essaie de fusionner les cellules, j'ai laissé de côté pour le moment car je poursuis mon dev par ailleurs en même temps
    j'espère qu'à la fin cela fera un bon modèle pour mettre à dispo de tous, mais cela n'est pas fini....
    je te joins un modèle complet que j'ai renseigné, ce matin je n'ai pas joint le bon a priori par rapport à mes explications
    est ce que cela te semble plus clair ?
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 117
    Par défaut
    Salut
    Désolé, mais je ne comprend pas la logique de mise en page que tu souhaites, les données dans le tableau et celles dans le PPS ne semblent pas correspondre.
    Peux tu refaire un exemple avec juste un tableau, données excel + pps
    +
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/07/2006, 12h14
  2. séléction d'un ligne excel et boucle [vba]
    Par lou87 dans le forum Access
    Réponses: 2
    Dernier message: 06/06/2006, 11h00
  3. Lignes avec différentes couleurs
    Par hbzied dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/05/2006, 09h30
  4. fusionner 2 tables de structure différente
    Par Rcanada dans le forum Access
    Réponses: 9
    Dernier message: 21/04/2006, 09h54
  5. Réponses: 7
    Dernier message: 08/12/2005, 09h26

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