XL 2010 créer un fichier powerpoint à partir d'excel

Mak_tarmak

XLDnaute Junior
Bonjour,
Dans mon fichier ci-joint, l'onglet Tableau recense, dans le désordre, les dates de formation qui se déroule sur une semaine.
Est-ce qu'il est possible via macro ou une autre fonction de générer des fichiers powerpoint pour chaque jour de la semaine et d'y inclure les formations du jour comme dans mon onglet Affichage ?
En vous remerciant pour votre aide,
Cordialement,
 

Pièces jointes

  • Tableau.xlsx
    20.7 KB · Affichages: 8

cp4

XLDnaute Barbatruc
Bonjour,
Pour l'instant, j'avance doucement.
En changeant en DataType:=ppPasteOLEObject sur l'exportPPt, j'ai un slide centré mais tout petit.
Bonjour,

Bravo! j'étais sur une fausse piste. Il suffit d'ajuster la largeur des colonnes et normalement ça sera bon.
J'ai ajouté cela dans la procédure qui crée les feuilles. Prends donc cette dernière.
VB:
Option Explicit
Sub Ajout_feuilles_jour()
    Dim d As Object, cel As Range, I As Integer, plg As Range, J As Integer
    Set d = CreateObject("scripting.dictionary")
    With Sheets("tableau")
        Set plg = .[A1].CurrentRegion
        For Each cel In .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            d(Format(cel.Value2, "dddd")) = ""
        Next cel
    End With
    For I = 0 To d.Count - 1
        On Error Resume Next
        Application.DisplayAlerts = False
        Sheets(d.keys()(I)).Delete
        Application.DisplayAlerts = True

        Sheets.Add After:=Worksheets(Worksheets.Count())
        ActiveSheet.Name = d.keys()(I)
        plg.Copy Sheets(d.keys()(I)).Range("A2")
        'Sheets.Add.Name = d.keys()(i)
        With ActiveSheet
            For J = Range("a" & Rows.Count).End(xlUp).Row To 4 Step -1
                If Format(Range("a" & J).Value, "dddd") <> .Name Then Range("a" & J).EntireRow.Delete
            Next J

            'copie du logo + mise en forme
            Sheets("logo").Shapes("Picture 1").Copy
            .Paste Destination:=.Range("A1")
            '            Image.Width = .Width
            'Image.Height = .Height
            .Rows(1).RowHeight = Sheets("logo").Shapes("Picture 1").Height
            .Range("b1") = .Range("A" & .Range("a" & Rows.Count).End(xlUp).Row)
            .Range("b1").NumberFormat = """Formation(s) du ""dddd dd mmmm yyyy"

            With .Range("b1:e1")
                .Merge
                .Font.Bold = True
                .Font.Size = 18
                .VerticalAlignment = xlCenter
                .HorizontalAlignment = xlCenter
            End With

            ' Ajustement largeur colonnes
            .Columns("B:E").WrapText = True 'renvoie à la ligne
            .Columns("B:B").ColumnWidth = 34
            .Columns("C:C").ColumnWidth = 27
            .Columns("D:D").ColumnWidth = 21
            .Columns("E:E").ColumnWidth = 17
            .Columns("A:A, F:F").ColumnWidth = 11
            
            With .Range("D2:E2")
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
        End With
    Next I
End Sub
powerpoint.gif
 

Mak_tarmak

XLDnaute Junior
Bonjour,

Bravo! j'étais sur une fausse piste. Il suffit d'ajuster la largeur des colonnes et normalement ça sera bon.
J'ai ajouté cela dans la procédure qui crée les feuilles. Prends donc cette dernière.
VB:
Option Explicit
Sub Ajout_feuilles_jour()
    Dim d As Object, cel As Range, I As Integer, plg As Range, J As Integer
    Set d = CreateObject("scripting.dictionary")
    With Sheets("tableau")
        Set plg = .[A1].CurrentRegion
        For Each cel In .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            d(Format(cel.Value2, "dddd")) = ""
        Next cel
    End With
    For I = 0 To d.Count - 1
        On Error Resume Next
        Application.DisplayAlerts = False
        Sheets(d.keys()(I)).Delete
        Application.DisplayAlerts = True

        Sheets.Add After:=Worksheets(Worksheets.Count())
        ActiveSheet.Name = d.keys()(I)
        plg.Copy Sheets(d.keys()(I)).Range("A2")
        'Sheets.Add.Name = d.keys()(i)
        With ActiveSheet
            For J = Range("a" & Rows.Count).End(xlUp).Row To 4 Step -1
                If Format(Range("a" & J).Value, "dddd") <> .Name Then Range("a" & J).EntireRow.Delete
            Next J

            'copie du logo + mise en forme
            Sheets("logo").Shapes("Picture 1").Copy
            .Paste Destination:=.Range("A1")
            '            Image.Width = .Width
            'Image.Height = .Height
            .Rows(1).RowHeight = Sheets("logo").Shapes("Picture 1").Height
            .Range("b1") = .Range("A" & .Range("a" & Rows.Count).End(xlUp).Row)
            .Range("b1").NumberFormat = """Formation(s) du ""dddd dd mmmm yyyy"

            With .Range("b1:e1")
                .Merge
                .Font.Bold = True
                .Font.Size = 18
                .VerticalAlignment = xlCenter
                .HorizontalAlignment = xlCenter
            End With

            ' Ajustement largeur colonnes
            .Columns("B:E").WrapText = True 'renvoie à la ligne
            .Columns("B:B").ColumnWidth = 34
            .Columns("C:C").ColumnWidth = 27
            .Columns("D:D").ColumnWidth = 21
            .Columns("E:E").ColumnWidth = 17
            .Columns("A:A, F:F").ColumnWidth = 11
          
            With .Range("D2:E2")
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
        End With
    Next I
End Sub
Regarde la pièce jointe 1118070
Merci beaucoup.
Je n'obtiens pas le même affichage que toi mais avant ton poste j'avais réussi à insérer le logo où je voulais à partir d'un emplacement local.
Du coup, comme je n'arrivais pas à obtenir le même affichage que toi, j'ai voulu optimiser l'affichage en sortie pour donner de la visibilité.
J'ai souhaité avoir l'affichage de l'onglet Affichage du fichier excel ou l'équivalent de la slide 6 dans le powerpoint.
Je souhaite supprimer la colonne PC qui en fait ne sert à rien et supprimer la colonne DATE des 5 onglets journaliers générés.
Je souhaite également mettre "FORMATIONS DU JOUR XX MOIS ANNEE" dans l'entête en rouge.
J'ai un peu tout cassé en faisant cela car j'ai pas dû comprendre l'utilisation des offset ou quelque chose comme ça.
Je te joins le fichier excel qui marche et le powerpoint associé (j'ai créé manuellement la slide 6 pour essayer d'arriver à ce rendu, je le trouve pas mal et synthétique).
Qu'en penses-tu c'est jouable d'adapter ton code en ce sens ?
 

Pièces jointes

  • Tableau.xlsm
    51.7 KB · Affichages: 2
  • Présentation1.pptx
    361.9 KB · Affichages: 7

cp4

XLDnaute Barbatruc
Merci beaucoup.
Je n'obtiens pas le même affichage que toi mais avant ton poste j'avais réussi à insérer le logo où je voulais à partir d'un emplacement local.
Du coup, comme je n'arrivais pas à obtenir le même affichage que toi, j'ai voulu optimiser l'affichage en sortie pour donner de la visibilité.
J'ai souhaité avoir l'affichage de l'onglet Affichage du fichier excel ou l'équivalent de la slide 6 dans le powerpoint.
Je souhaite supprimer la colonne PC qui en fait ne sert à rien et supprimer la colonne DATE des 5 onglets journaliers générés.
Je souhaite également mettre "FORMATIONS DU JOUR XX MOIS ANNEE" dans l'entête en rouge.
J'ai un peu tout cassé en faisant cela car j'ai pas dû comprendre l'utilisation des offset ou quelque chose comme ça.
Je te joins le fichier excel qui marche et le powerpoint associé (j'ai créé manuellement la slide 6 pour essayer d'arriver à ce rendu, je le trouve pas mal et synthétique).
Qu'en penses-tu c'est jouable d'adapter ton code en ce sens ?
Re,

Je n'ai pas pu ouvrir ton PPT. Je ne sais donc pas ce que tu veux obtenir exactement.
Cependant, j'ai compris que tu voulais ne plus faire apparaitre la colonne "PC" (c'est facile).
Il faut adapter la largeur des colonnes car telle quelle la date (colonne A) affiche des dièses (#######).
Envoie-moi une capture d'une diapo du powerpoint.
A+

edit: la feuille "Affichage" te sert à quoi?
ppt.gif
 
Dernière édition:

Mak_tarmak

XLDnaute Junior
si j'ai bien compris voir fichier.
Bonjour,
Super on progresse.
Sur ton nouveau fichier, il y a des champs qui ont sauté ; le référent a disparu et dans la date, il y a une date intruse.
Je te joins une copie écran du résultat dans powerpoint généré (fichier resultat) et ce que j'aimerais avoir en sortie (fichier souhait).
Je te remercie de m'aider sur ce projet.
 

Pièces jointes

  • resultat.png
    resultat.png
    32.4 KB · Affichages: 19
  • souhait.png
    souhait.png
    49.7 KB · Affichages: 21
Dernière édition:

Mak_tarmak

XLDnaute Junior
Bonjour,
Super on progresse.
Sur ton nouveau fichier, il y a des champs qui ont sauté ; le référent a disparu et dans la date, il y a une date intruse.
Je te joins une copie écran du résultat dans powerpoint généré (fichier resultat) et ce que j'aimerais avoir en sortie (fichier souhait).
Je te remercie de m'aider sur ce projet.
j'ai réussi à remettre le référent en ajoutant le offset de la colonne E qui manquait et j'ai réussi aussi à enlever la date intruse en modifiant le range.
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour,
Super on progresse.
Sur ton nouveau fichier, il y a des champs qui ont sauté ; le référent a disparu et dans la date, il y a une date intruse.
Je te joins une copie écran du résultat dans powerpoint généré (fichier resultat) et ce que j'aimerais avoir en sortie (fichier souhait).
Je te remercie de m'aider sur ce projet.
Bonjour,

je ne te suis plus. si il y a une date qui ne devrait pas apparaitre, c'est une question de ligne.
En effet, le code copie tout le tableau et ensuite à partir du bas il supprime les lignes ne répondant pas au nom de la feuille. je t'avais déjà signalé où devait se faire la correction.

Quant au référent, je n'ai pas mis une seule ligne de code concernant cette feuille "Affichage".
Je t'ai d'ailleurs demandé à quoi elle te servait. mais je n'ai pas eu de réponse.

Bonne continuation.
 

Mak_tarmak

XLDnaute Junior
Bonjour,

je ne te suis plus. si il y a une date qui ne devrait pas apparaitre, c'est une question de ligne.
En effet, le code copie tout le tableau et ensuite à partir du bas il supprime les lignes ne répondant pas au nom de la feuille. je t'avais déjà signalé où devait se faire la correction.

Quant au référent, je n'ai pas mis une seule ligne de code concernant cette feuille "Affichage".
Je t'ai d'ailleurs demandé à quoi elle te servait. mais je n'ai pas eu de réponse.

Bonne continuation.
Pour la date et le référent c'est réglé.
Maintenant ce que j'essaie de faire c'est de supprimer la colonne DATE dans les onglets qui portent un nom de jour de semaine car c'est redondant avec le titre que tu as mis en rouge qui se trouve de B1:E1 mais je n'arrive pas à comprendre la construction des 5 onglets journaliers donc quand j'essaie de modifier je casse tout.
De plus, j'aimerai dans la construction des onglets correspondants aux jours de la semaine, déplacer le titre rouge de B1:E1 en B3 pour servir d'entête de tableau à la place de LIBELLE FORMATION.
Est-ce que tu as pu voir les copies écran que je t'ai envoyé ? L'image "souhait" c'est ce que je souhaite sortir dans le powerpoint.
Je suis désolé si je ne suis pas clair dans mes propos. Je pensais que les deux images pourrait t'aiguiller sur ce que je n'arrivais pas à faire.
Merci

ps : l'onglet Affichage dans le fichier excel ne sert à rien, c'est juste le modèle d'affichage que je souhaite obtenir dans le powerpoint
 

cp4

XLDnaute Barbatruc
Pour la date et le référent c'est réglé.
Maintenant ce que j'essaie de faire c'est de supprimer la colonne DATE dans les onglets qui portent un nom de jour de semaine car c'est redondant avec le titre que tu as mis en rouge qui se trouve de B1:E1 mais je n'arrive pas à comprendre la construction des 5 onglets journaliers donc quand j'essaie de modifier je casse tout.
De plus, j'aimerai dans la construction des onglets correspondants aux jours de la semaine, déplacer le titre rouge de B1:E1 en B3 pour servir d'entête de tableau à la place de LIBELLE FORMATION.
Est-ce que tu as pu voir les copies écran que je t'ai envoyé ? L'image "souhait" c'est ce que je souhaite sortir dans le powerpoint.
Je suis désolé si je ne suis pas clair dans mes propos. Je pensais que les deux images pourrait t'aiguiller sur ce que je n'arrivais pas à faire.
Merci

ps : l'onglet Affichage dans le fichier excel ne sert à rien, c'est juste le modèle d'affichage que je souhaite obtenir dans le powerpoint
un peu brouillon tout ça. tes captures d'écran ne sont pas parlantes. Il faut aussi prendre les entêtes de lignes et colonnes pour tout voir.

Essaie de faire un feuille manuellement et envoie le modèle obtenu.
Pour la colonne date, il suffit de la supprimer. Mais il faudrait faire un copier/coller valeur de l'entete car la date est prise de la 1ère cellule des dates.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG