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 :

Positionner une zone de texte et/ou une image en VBA [PPT-2007]


Sujet :

VBA PowerPoint

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Positionner une zone de texte et/ou une image en VBA
    Bonjour,

    Je suis nouvel inscrit sur ce forum, et je dois admettre ne maîtriser que très peu le VBA. De fait, ma question est un peu basique (si je peux m'exprimer ainsi ), et j'espère qu'elle n'offensera personne...

    En résumé, je travaille sur des slides que je dois homogéniser, ce qui inclut notamment de positionner certaines zones de textes et certaines images à la même position sur toutes les slides.

    Ma question est donc la suivante : Comment dire à VBA de positionner la zone de texte/ l'image sélectionnée à) une position donnée sur la slide? Par ailleurs, est-il possible de sélectionner plusieurs zones de texte/ images en même temps , et de dire à la macro de positionner chaque sélection à une position donnée, en fonction de son ordre de sélection? Dernièrement, si je désire réitérer l'action sur un certain nombre de slides, vu que mes objets à positionner sont bien particuliers (zone de titre, shape utilisée une fois par slide...), est-il possible de dire à VBA de chercher ces objets, et de les positionner lui-même en fonction du type d'objet?
    Bon, je m'aperçois que cela ne fais au final une question, mais trois question

    Si une bonne âme veut bien l'éclairer sur l'un des points précédents, je lui en serai très reconnaissant

    Une nouvelle fois, j'ai conscience que ma question est très basique en raison de mon niveau de VBA. J'espère que ce ne sera pas mal vu ou hors charte...

    Merci d'avance pour vos pistes, et bonne journée.

    Sylvain

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour et bienvenue sur le forum Office de DVP.

    Normalement c'est une question par discussion, mais tu as de la chance je suis dans un bon jour

    Tout ce que tu demandes est possible, cependant, il y a plusieurs questions qui se posent :

    Veux-tu faire cela en mode création ou en mode diaporama ?

    Comment dire à VBA de positionner la zone de texte/ l'image sélectionnée à) une position donnée sur la slide?
    Cette image vient d'où ? D'une diapositive ? D'un fichier ?


    Par ailleurs, est-il possible de sélectionner plusieurs zones de texte/ images en même temps , et de dire à la macro de positionner chaque sélection à une position donnée, en fonction de son ordre de sélection?
    Pareil ,en mode diaporama ou conception ? Car la méthode de travail est différente.


    Dernièrement, si je désire réitérer l'action sur un certain nombre de slides, vu que mes objets à positionner sont bien particuliers (zone de titre, shape utilisée une fois par slide...), est-il possible de dire à VBA de chercher ces objets, et de les positionner lui-même en fonction du type d'objet?
    Si tu peux le faire une fois, tu peux le faire plusieurs fois.

    A première vu, c'est possible, mais il faut donner plus de détails pour que les membres du forum puissent te répondre.

    Philippe

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour Philippe,

    Merci tout d'abord pour la rapidité de ta réponse.
    Je vais essayer de corriger mes approximations

    Veux-tu faire cela en mode création ou en mode diaporama ?
    Je désirerais faire cela en mode création

    Cette image vient d'où ? D'une diapositive ? D'un fichier ?
    Cette image provient de la slide elle-même.

    Pareil ,en mode diaporama ou conception ? Car la méthode de travail est différente.
    Toujours en mode conception

    A première vu, c'est possible, mais il faut donner plus de détails pour que les membres du forum puissent te répondre.
    Pour être un peu plus précis, il s'agit d'un fichier contenant X slides. Chaque slide présente un membre d'une équipe projet : son titre, ses expériences, sa photo... Le problème est que toute les slides ne sont pas homogènes, notamment pour la position des différents objets. Mon but est donc d'harmoniser toutes les slides en mode conception, ce que je ne peux pas faire avec un masque à cause des différentes images présentes dans les slides.

    Voilà, j'espère avoir limité les approximations et autres abus de langage N'hésite pas à me demander d'autres précisions si ce n'est pas le cas.

    Merci une nouvelle fois pour ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par sylvain92 Voir le message
    Chaque slide présente un membre d'une équipe projet : son titre, ses expériences, sa photo... Le problème est que toute les slides ne sont pas homogènes, notamment pour la position des différents objets.
    Voilà une phrase intéressante tout va dépendre des réponses

    Son titre : Est-il dans une zone de titre ? Dans une zone de texte simple ?
    Sa photo : C'est un contrôle image qui a été utilisé ?
    Ses expériences : une ou des zones de textes ?

    Peut-on avoir un exemple avec 2 ou 3 slides qui représente l'ensemble des cas (je me fous des données, cela peut-être toto), il faut zipper le tout avant de le mettre en pièce jointe.

    Philippe

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Le titre est dans une zone de Titre, le titre de la slide, et les expériences dans une autre zone de texte. Il n'y a pas de contrôle d'image (si j'en crois mon ami Google, c'est ce qui informe le logiciel de l'utilisation que l'on veut faire de l'image?)

    Je t'envoie quelques slides, qui représente bien mon fichier, au contenu près
    Disons, pour l'exemple, que la slide 1 est formatée selon le positionnement standard désiré. Les autres slides présentent les mêmes objets, mais ne dispose pas du positionnement désiré.
    Fichiers attachés Fichiers attachés

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Il y a bien une image.

    On résume :

    L'image contient la photo.
    Le nom de la personne et son titre est contenu dans la zone de titre.
    L'expérience et autre dans une zone de texte.

    Il est possible de faire quelque chose, cependant quel type de disposition des différents éléments veux-tu ?

    La barre bleue au milieu doit-elle rester au même endroit ?

    Philippe

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    C'est bien ça !

    Au niveau de la disposition, je souhaiterais :
    - placer le nom/titre en haut à gauche de la slide (Top Left Corner position Horizontale : 1,24cm, position Verticale : -0,07 cm)
    - placer la barre de séparation (la barre bleu, en horizontal dans l'exemple, mais à la base en position verticale dans mon fichier original) en vertical à gauche de la slide (à la position TLC H : 5,57 V: 3,59)
    -placer la zone de texte à la position au "milieu" (TLC H : 5,57 V: 3,59.)Saurais-tu également stp comment indenter le texte de cette zone en VBA?
    - placer la photo en haut à gaucheTLC (à la position H : 2,53 V : 3,59)

    Merci beaucoup pour ton aide

    Sylvain

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Voici un code (pour l'instant incomplet car j'ai peu de temps), ce code est à coller dans un module :

    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
    Public Sub Reorganisation()
     
        ' déclaration des variables
        Dim objShp As Shape
        Dim objSld As Slide
     
        ' on met d'abord en forme le masque qui se trouve dans le premier slide toutes les positionnements sont faits à tatons
        ' le customslayouts est le n°2 qui se nomme "Title and Content"
     
        ' on commence par Title 1 qui comporte le nom et le titre en haut à gauche
     
        With ActivePresentation.SlideMaster.CustomLayouts(2).Shapes("Title 1")
            .Top = 25
            .Left = 25
             With .TextFrame.TextRange.Font
                .Size = 15
                .Name = "Comic Sans MS"
            End With
        End With
     
        ' ensuite on met les expériences au milieu et qui se nomme "Content Placeholder 2"
        With ActivePresentation.SlideMaster.CustomLayouts(2).Shapes("Content Placeholder 2")
            .Top = 200
            .Left = 200
            ' on modifie un peu la police
            With .TextFrame.TextRange.Font
                .Size = 20
                .Name = "Comic Sans MS"
            End With
        End With
        DoEvents
     
        ' on reaffecte les masques
     
        For Each objSld In ActivePresentation.Slides
            objSld.Layout = objSld.Layout
     
        Next objSld
     
        ' on met maintenant en place la photo et la forme
        For Each objSld In ActivePresentation.Slides
            For Each objShp In objSld.Shapes
                ' pour l'image
                If objShp.Type = msoPicture Then
                    With objShp
                        .Top = 100
                        .Left = 25
                    End With
                End If
            Next objShp
        Next objSld
    End Sub
    Il y a pour l'instant de petits soucis sur la forme et la dernière diapo de ton exemple.

    Le but de ce code est de modifier le masque et la position de la photo.

    Pour l'exécuter il suffit de cliquer à l'intérieur et de cliquer sur F5.

    Voilà donc un début, j'essaierais de faire la suite pour ce soir, mais sans garantie.

    Philippe

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci Philippe !

    Ne t'en fais pas, c'est déjà très gentil de m'avoir aidé.
    Apparemment, le nom des membres de l'équipe projet ne serait pas dans une zone de titre (J'ai été piégé par le fait que la zone de texte en question se situait à la place du titre de la slide). Saurais-tu stp quel argument de Shapes pourrait remplacer Title 1 pour désigner cette zone? J'ai naivement essayé Content Placeholder 1, mais ca n'a pas marché

    Merci à nouveau pour ton aide

    Sylvain

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    J'ai fait le code en fonction de ton modèle, mais s'il changent tout

    Comme c'était une zone du masque c'était cool, mais si tu as plusieurs formes qui ne sont pas définies correctement cela va devenir galère.

    Title 1 est dans le masque, si la zone n'est pas dans le masque cela change le code, et on se retrouve avec une mise en position comme l'image.

    Pourquoi ne pas faire un masque prédéfini avec les éléments en bonnes positions, il n'y a plus qu'à remplir ?

    Philippe

  11. #11
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    C'est ce que je voulais faire au début.
    Mais cela ne m'a paru pas réalisable à cause de la photo, et à cause de la barre de séparation.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Re

    C'est réalisable, dans un masque tu peux positionner les éléments où tu veux, il y a des exemples qui devraient convenir, il faut ajouter des espaces réservés :

    Par exemple vite fait :



    Une fois sortie du masque, tu cliques sur la zone pour ajouter une photo, la barre tu la fais dans le masque.

    Philippe

  13. #13
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta capture d'écran Philippe.

    Néanmoins, à moins que je ne comprenne mal ta solution, cela ne résoud pas vraiment le problème :
    Pour la zone réservée de type image, l'image est insérée à partir d'un fichier. Or la photographie que je dois positionner correctement ne se trouve pas dans un fichier, mais dans le slide.
    Pour la barre, sachant que le document à modifier comprend déjà une barre mal positionnée, placer une barre dans le masque aboutirait à un doublon.

    Non?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par sylvain92 Voir le message
    Néanmoins, à moins que je ne comprenne mal ta solution, cela ne résoud pas vraiment le problème :
    Ce que je te propose dans la capture d'écran est pour démarrer à 0.

    Pour la zone réservée de type image, l'image est insérée à partir d'un fichier. Or la photographie que je dois positionner correctement ne se trouve pas dans un fichier, mais dans le slide.
    Une partie du code te repositionne l'image.

    Pour la barre, sachant que le document à modifier comprend déjà une barre mal positionnée, placer une barre dans le masque aboutirait à un doublon.
    Si tu veux supprimer cette barre dans toutes les diapositives, copie ce code dans un module et exécute le.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub SupForme()
        Dim objShp As Shape
        Dim objSld As Slide
     
        For Each objSld In ActivePresentation.Slides
            For Each objShp In objSld.Shapes
                If objShp.Name = "Flowchart: Punched Tape 4" Then
                    objShp.Delete
                End If
            Next objShp
        Next objSld
    End Sub
    Ensuite crées la barre que tu veux dans le masque pour toutes les diapositives.

    Toujours faire les tests sur une copie.

    Philippe

  15. #15
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Très bien, merci pour cette nouvelle solution !

    Si je comprends bien ce que tu dis, le plus simple est donc d'associer macro et masque.
    Comment as-tu fait pour déterminer le type de la barre "Flowchart: Punched Tape 4" stp? Existe-t-il un moyen de trouver la correspondance VBA d'une forme powerpoint donnée? De même (pour ma culture perso), existe-t-il un moyen de déterminer la correspondance entre un objet donné de la slide (une zone de texte par exemple) et son "code" VBA ?
    Par ailleurs, dans le cadre d'une slide disposant de plusieurs images, est-il possible de dire à VBA de n'en positionner qu'une seule, en l'occurence, la photo, et de laisser les autres tranquiles ?

    Une nouvelle fois, merci encore. C'est la dernière fois que je t'embête

  16. #16
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par sylvain92 Voir le message
    Si je comprends bien ce que tu dis, le plus simple est donc d'associer macro et masque.
    Oui et non

    En fait si tu commences à 0, le masque te permet de t'en sortir, la macro était là pour essayer de remettre en forme (rattraper les dégâts).
    Cependant, le masque et une macro permet par exemple de récupérer des données d'un fichier Excel, pour alimenter directement le masque.

    Comment as-tu fait pour déterminer le type de la barre "Flowchart: Punched Tape 4" stp?
    La FAQ PowerPoint : Comment nommer un objet dans PowerPoint 2007 ?

    Existe-t-il un moyen de trouver la correspondance VBA d'une forme powerpoint donnée?
    De même (pour ma culture perso), existe-t-il un moyen de déterminer la correspondance entre un objet donné de la slide (une zone de texte par exemple) et son "code" VBA ?
    Si tu regardes le code qui concerne l'image, on peut déterminer le type (si j'ai bien compris ta question).

    Par ailleurs, dans le cadre d'une slide disposant de plusieurs images, est-il possible de dire à VBA de n'en positionner qu'une seule, en l'occurence, la photo, et de laisser les autres tranquiles ?
    Si tu a plusieurs éléments de même nature, il faut les repérer par leur nom.

    C'est la dernière fois que je t'embête
    Tu ne m'embêtes pas, sinon je ne répondrais pas.

    Philippe

  17. #17
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Quoiqu'il en soit, merci une nouvelle fois pour ton aide.

    Sylvain

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 24/01/2010, 07h40
  2. Réponses: 8
    Dernier message: 19/04/2007, 10h20
  3. Remplir une zone de texte par rapport à une checkbox
    Par beegees dans le forum Général JavaScript
    Réponses: 43
    Dernier message: 04/09/2006, 17h01
  4. Réponses: 2
    Dernier message: 30/08/2006, 22h51
  5. désactivation d'une zone de texte en cochant une checkBox
    Par mjihanne dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 25/05/2006, 16h33

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