Miniatures de slides Powerpoint

nerok Messages postés 4 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 20 septembre 2011 - 14 sept. 2011 à 15:27
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 20 sept. 2011 à 11:25
Bonjour à tous,

Je suis en train de créer un Userform pour parcourir en miniatures des fichiers ppt et insérer des diapositives dans la présentation en cours.
Dans la pratique, je souhaiterais donc me rapprocher de la fonction "Insérer une diapositive à partir de..." déjà présente dans Powerpoint.

J'ai commencé à faire un formulaire mais je suis coincé sur la partie visualisation des miniatures.
J'ai suivi un tuto qui passe par un fichier image pour chaque slide mais ça me semble fastidieux.

Existe-t-il un moyen plus simple de créer une sorte de "trieuse de diapositives" dans un Userform

Voici mon code
J'ai 1 textbox, 1 image et 3 boutons sur mon userform

Sub CommandButton1_Click()

    Dim fd As FileDialog
    Dim PrezSource As PowerPoint.Presentation
    Dim TempSlide As String
    
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    Dim vrtSelectedItem As Variant

    With fd
        .AllowMultiSelect = False
        .InitialFileName = "C:"
        .Filters.Add "Présentations Powerpoint : *.ppt; *.pptx", "*.ppt; *.pptx", 1
        .Filters.Add "Tous les fichiers : *.*", "*.*", 2
        .FilterIndex = 1

        If .Show = -1 Then
                TextBox1.Text = fd.SelectedItems.Item(1)
        Else
        End If
    End With

    Set PrezSource = PowerPoint.Presentations.Open(fd.SelectedItems.Item(1), , , msoFalse)
    
    TempSlide = "C:\TempSlide000.jpg"
    PrezSource.Slides.Item(1).Export TempSlide, "jpg"
    
    Image1.Picture = Nothing
    
    With Image1
        .Picture = LoadPicture(TempSlide)
        .PictureSizeMode = fmPictureSizeModeZoom
        .Visible = True
    End With
    
    Set fd = Nothing

End Sub


Sub CommandButton2_Click()
UserForm1.Hide
End Sub

Sub CommandButton3_Click()
ActivePresentation.Slides.InsertFromFile TextBox1.Text, ActivePresentation.Slides.Count, 1, 1
End Sub

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
14 sept. 2011 à 15:44
Bonjour,
Sous VBA ?
Un contrôle ImageList, par exemple.




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
nerok Messages postés 4 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 20 septembre 2011
20 sept. 2011 à 10:54
Merci pour ta réponse.
Par contre, c'est le fait d'exporter chaque diapositive en image qui me semble fastidieux. N'y a-t-il pas un moyen de récupérer directement une capture de diapositive sans passer par cet export ?
Comment Powerpoint gère les miniatures dans la fenêtre "Trieuse de diapositives" ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
20 sept. 2011 à 11:25
Je dirais (sans en être certain) qu'il crée dynamiquement des contrôles images et qu'il y met une image dans chaque contrôle.
Il est vraisemblable que, pour ce faire, il utilise directement StdPicture et des fonctions de l'Api de Windows.
Mais cet outil ne semblant pas te permettre de charger une image autrement (pas prévu) qu'en l'important depuis un fichier, je te vois mal "barré", puisque PowerPoint ne t'offre apparemment pas de contrôles dôtés d'un hdc (comme une picturebox). Il te faudrait donc pratiquement construire de A à Z tout ce que PowerPoint a dans son ventre pour cet aspect et, en plus, être capable d'en assurer la persistance (et ce dernier aspect est de loin le plus dur).
Enfin : je te réponds à l'aveuglette, var je n'ai pas PowerPoint.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0