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 :

Modification d'animations en masse


Sujet :

VBA PowerPoint

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Modification d'animations en masse
    Bonjour à tous,

    Je découvre depuis peu les "joies" de VBA et en particulier dans Powerpoint et je bute déjà sur un problème que je n'arrive pas à résoudre (j'aurais bien utilisé l'enregistreur de macro pour piger comme dans excel, mais il semblerait que Microsot ait jugé bon de le retirer de la version 2010 de ppt) :

    Voilà l'idée :
    Dans une présentation j'ai crée de nombreuses animations (env. 200) pour de nombreux objets (zones de textes et formes essentiellement), ces animations étant des "balayer, estomper et forme".

    A chaque animation j'ai donné un délai et une durée qui lui sont propres. Les animations indépendantes les unes des autres, où j'ai choisi de les faire toutes "Démarrer avec le précédent" dans les options de minutage puis de régler les délais que je connaissais à la mano.

    L'ennui c'est que je me suis aperçu d'une erreur dans mon calcul pour une bonne partie d'entre elles (un peu plus des 3/4 environ) et il faudrait que je puisse rajouter un délai fixe (de 12 secondes pour être exact) à cette sélection d'animations.

    Pour l'instant je patauge :
    - Je me suis dit que ce serait plus simple et flemmard de faire ça avec vba plutôt qu'à la main.
    - J'ai bien dans l'idée qu'il "suffirait de" sélectionner mes animations ou encore les objets (formes/zones de texte) auxquelles elles correspondent, récupérer le délai de chacune via une variable, et déclarer que la nouvelle valeur de ma variable devient "délai = délai + x" où x est un délai fixe en secondes à entrer à la main...

    Mais je n'arrive pas à aller plus loin.

    Si il se trouve parmi vous quelqu'un qui peut me venir en aide ou au moins m'expliquer une piste sur laquelle me lancer, je lui en serai très reconnaissant!


    ps: voilà, premier post! ce forum à l'air sacrément utile!

    edit : à la limite et pour simplifier le problème, si je peux faire la modif sur l'ensemble des animations de mon slide pour ensuite revenir sur les quelques animations à ne pas modifier à la main, je suis preneur aussi

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Pour le moment voilà ce que j'ai (en partant sur l'hypothèse que je fais de la modification bourrin, et que les 2 ou 3 trucs à pas toucher je les ferai à la main) :

    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
    Sub Modifier_delai()
        Dim myrange As ShapeRange
        Dim sh As Shape
        Dim delai As Single
     
        Set myrange = ActivePresentation.Slides(2).Shapes.Range
        For Each sh In myrange
            delai = sh.AnimationSettings.AdvanceTime
            If delai >= 12 Then
                delai = delai - 12
            Else
                delai = 0
            End If
        Next
     
    End Sub
    Mais ça ne marche pas et je vois vraiment pas comment me débloquer...

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    dans ton code tu récupère dans ta variable delai la valeur de la temporisation, tu traite et modifie cette valeur , mais il te manque une ligne pour mettre à jour la valeur après ce traitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.AnimationSettings.AdvanceTime = delai

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour cette correction de mon code, en effet j'arrive maintenant à modifier le délai des animations!
    Cependant, maintenant, lorsque j'exécute la procédure, toutes mes animations sont chamboulées :

    D'un réglage (fait initialement à la main) d'animation "AVEC la précédente" elles passent toutes en "APRES la précédente" et mon ppt ne ressemble du coup plus du tout au résultat attendu.

    D'ailleurs quand j'exécute cet autre code là (que j'ai écris pour tester l'une de mes formes afin de mieux comprendre comment marchait l'outil), ça me dérègle aussi toutes les animations!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub bidouille_friserouge()
    Dim sh As Shape
    Set sh = ActivePresentation.Slides(1).Shapes("friserouge")
        With sh.AnimationSettings
        MsgBox "Le délai de cette animation est de " & .AdvanceTime & " secondes"
        .AdvanceMode = ppAdvandOnTime
        .AdvanceTime = 24
        .EntryEffect = ppEffectWipeLeft
        .TextLevelEffect = ppAnimateByAllLevels
        .Animate = True
        MsgBox "Le nouveau délai de cette animation est de " & .AdvanceTime & " secondes"
     
        End With
    End Sub
    Je croyais pourtant avoir compris que la propriété ppAdvanceOnTime faisait démarrer AVEC l'animation précédente?!

    Que faire?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    up?

Discussions similaires

  1. [PowerShell] Modification propriétés utilisateurs en masse
    Par Mi K L dans le forum Scripts/Batch
    Réponses: 14
    Dernier message: 17/04/2018, 16h41
  2. SAP GMAO modification d'inventaire en masse
    Par kmloujdi dans le forum SAP
    Réponses: 0
    Dernier message: 16/05/2012, 22h08
  3. [VxiR2] Modif Objets Univers en masse
    Par bodev dans le forum Designer
    Réponses: 1
    Dernier message: 02/07/2010, 22h10
  4. [XL-2007] excel modif GIF ANIME
    Par CRACOS38 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/06/2009, 17h12
  5. [EDI] Modification de masse de fichiers PHP
    Par lodan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 11/01/2007, 10h06

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