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 :

Manipuler du texte en VBA [PPT-2007]


Sujet :

VBA PowerPoint

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Par défaut Manipuler du texte en VBA
    Bonjour à tous et à toutes...

    A ce jour à partir d'une macro Excel, j'arrive à copier-coller des graphes sous forme d'image dans PowerPoint.

    Et maintenant, je souhaiterai pourvoir gérer des textes, comme par exemple réécrire un cadre texte le mois de la mise à jour du fichier PowerPoint...

    Est-ce possible? Si oui comment?

    Merci par avance.

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

    Oui, il est possible d'écrire du texte en VBA en plein d'autres choses.

    Un exemple dans la FAQ PowerPoint : http://powerpoint.developpez.com/faq...AjoutZoneTexte

    Si tu veux plus de choses il faut détailler ta demande.

    Philippe

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Par défaut
    C'est déjà pas mal, je te remercie!!!

    Moi ce que je voudrais faire précisément c'est par exemple sur la slide 1 de mon PPT il y a écrit en toute lettre "Janvier 2011" et moi je voudrais le faire passer à "Février 2012" lorsque je lancerai ma macro...

    ou alors..

    Supprimer la Textbox avec "Janvier 2012" et en créer une autre "Février 2012" en gardant le même emplacement sur la même diapo...

    au final ça revient au même je passe de "Janvier 2012" à "Février 2012" mais est ce que les deux sont possibles? Si oui comment?

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

    Un code comme celui-ci devrait le faire :

    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
    Public Sub ModifierTexte()
        ' déclaration
        Dim objPPS As Presentation
        Dim objSld As Slide
        Dim objShp As Shape
     
        ' affecation
        Set objPPS = ActivePresentation
        Set objSld = objPPS.Slides(1)
     
        ' parcours des formes
        For Each objShp In objSld.Shapes
            If objShp.TextFrame.TextRange.Text Like "JANVIER 2012*" Then
                objShp.TextFrame.TextRange.Text = "FEVRIER 2012"
            End If
        Next objShp
     
    End Sub
    Attention à la case du mot (Majuscules et Minuscules)

    Philippe

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Par défaut
    Génial ça marche!!!

    Bon par contre je l'ai un peu mis à ma sauce... Je le met ci-dessous comme ça si quelqu'un en a besoin

    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
    Sub Update_PPT_dates(PPTDoc As PowerPoint.Presentation, intSlide As Integer)
        ' déclaration
        Dim car_last_month, car_old_month, Text1 As String
        Dim car_year, car_year2, j As Integer
     
        ' affecation
        car_last_month = StrConv(Format(DateAdd("m", -1, Now()), "mmmm"), vbProperCase)
        car_old_month = StrConv(Format(DateAdd("m", -2, Now()), "mmmm"), vbProperCase)
     
        'code
        If Month(Now()) - 2 <= 0 Then
            car_year = Year(Now()) - 1
        Else
            car_year = Year(Now())
        End If
     
        If Month(Now()) - 1 = 0 Then
            car_year2 = Year(Now()) - 1
        Else
            car_year2 = Year(Now())
        End If
     
        For i = intSlide To 2
            For j = 1 To PPTDoc.Slides(intSlide).Shapes.Count
                If PPTDoc.Slides(intSlide).Shapes(j).TextFrame.TextRange.Text = car_old_month & " " & car_year Then
                    PPTDoc.Slides(intSlide).Shapes(j).TextFrame.TextRange.Text = car_last_month & " " & car_year2
                End If
            Next
        Next
    End Sub
    Par contre j'ai une nouvelle question...
    J'ai une textebox où il y a beaucoup de texte dedans, je voudrais rechercher et modifier uniquement une partie de ce texte contenu dans la textbox. Est ce possible?

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Par défaut
    Je répond à ma propre question...

    J'utilise la fonction InStr qui me permet de détecter si ma chaine de caractères est contenue dans le TexteFrame et la fonction Replace qui me permet de remplacer la valuer recherchée par la valeur que je souhaite...

    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
    'Faire défiler les diapos de 1 à 2
    For i = intSlide To 2 
            'Fait défiler tous les objets contenus dans la diapo
            For j = 1 To PPTDoc.Slides(i).Shapes.Count 
     
                'Si on est au mois de Janvier          
                If Month(Now()) - 1 = 1 Then
                    'Si l'année passée est contenue dans le cadre texte de la diapo
                    If InStr(1, PPTDoc.Slides(i).Shapes(j).TextFrame.TextRange.Text, car_year, vbTextCompare) <> 0 Then 
                        'alors je remplace l'année passée par l'année en cours
                        PPTDoc.Slides(i).Shapes(j).TextFrame.TextRange.Text = _
                        Replace(PPTDoc.Slides(i).Shapes(j).TextFrame.TextRange.Text, car_year, car_year2) 
                    End If
                End If
            Next
        Next
    Merci Philippe pour ton aide.

    En espérant que ça servira à d'autre

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

Discussions similaires

  1. [PPT-2003] Manipulation de texte via VBA
    Par lecail65 dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 03/02/2010, 13h12
  2. Ajouter un composant (zone de texte) en VBA
    Par Ismaël(l) dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/05/2007, 11h38
  3. mise en forme d'un texte avec VBA c'est possible?
    Par Frenchguy dans le forum VBA Access
    Réponses: 6
    Dernier message: 15/05/2007, 11h41
  4. Réponses: 3
    Dernier message: 01/08/2006, 15h18
  5. Retour à la ligne dans Zone de texte. Via VBA
    Par GuidoBrasletti dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 11h56

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