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 :

Conversion de l'ensemble des images d'un PPT


Sujet :

VBA PowerPoint

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Août 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Août 2023
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Conversion de l'ensemble des images d'un PPT
    Bonjour,
    Je débute en VBA powerpoint et je cherche a réaliser une macro pour me faciliter une horrible tâche... Devoir transformer en PNG toutes les images de plusieurs PPT sur plusieurs slides.

    J'ai commencé a essayer de construire quelques chose :
    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
     
    Sub conversion()
    Dim sld As Slide
    Dim shp As Shape
     
        For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
         If shp.Type = msoPicture Then
          position_h = shp.Left
          position_v = shp.Top
          shp.Copy
          sld.Shapes.PasteSpecial ppPastePNG
     
          sld.Shapes(1).Left = position_h
          sld.Shapes(1).Top = position_v
     
          shp.Delete
     
          End If
        Next shp
        Next sld
    End Sub
    C'est pour le moment très bancale et bugué car actuellement elle convertie surtout la première image qu'elle rencontre sur une slide et déplace aussi des zones de textes... Pourriez vous m'aider s'il vous plait ?

    Je vois bien que je ne maitrise pas comment "jouer" avec se qui vient d'être créée par le collage spéciale et comment lui dire de positionner cet élément collé exactement à la même place que l'image d'origine , sld.Shapes(1) est faux je suppose il faudrait plutôt lui dire "cette élément que tu viens de coller place le là".

    Il existe peut être une autre solution qu'un copier collé spéciale puis effacer

  2. #2
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    A tester :

    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
     
    Sub conversion2()
     
    Dim sld As Slide
    Dim I As Integer
    Dim shpN As Shape
    Dim position_h As Double, position_v As Double
     
        For Each sld In ActivePresentation.Slides
            With sld
                For I = .Shapes.Count To 1 Step -1
                    With .Shapes(I)
                        If .Type = msoPicture Then
                             Debug.Print .Type
                             position_h = .Left
                             position_v = .Top
                             .Copy
     
                             sld.Shapes.PasteSpecial ppPastePNG
     
                             Set shpN = sld.Shapes(sld.Shapes.Count)
                             shpN.Left = position_h
                             shpN.Top = position_v
                             Set shpN = Nothing
     
                             .Delete
     
                        End If
                    End With
     
                 Next I
             End With
        Next sld
     
    End Sub

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