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 :

Manipulation de texte via VBA [PPT-2003]


Sujet :

VBA PowerPoint

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut Manipulation de texte via VBA
    Bonjour,

    Je viens vers vous en ce qui concerne la manipulation de texte dans une présentation PPT via VBA.

    Je génère une présentation PPT à partir d'un fichier Excel, sur plusieurs slides de la présentation il y a du texte de cette forme là:

    • titre1
      <!--texte1-->
    • titre2
      <!--texte2-->
    • titre3
      <!--texte3-->
    • titre4
      <!--texte4-->


    <!--textex--> : correspond à des balises que je remplace par des valeurs contenues dans la feuille Excel.

    Mon soucis est le suivant : il se peut que la valeur de la balise soit Nulle ("") dans ce cas je souhaite supprimer le titre accompagné de la puce, malheureusement je n'y arrive pas.

    pour le moment j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With pptPres.Slides(INT_SLIDE).Shapes(INT_Shape).TextFrame.TextRange
          .Replace STR_Balise, ""                       
    End With
    merci d'avance pour votre aide.

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

    Pourrai-t-on avoir un bout de fichier pour tester (il faut le zipper), j'essaierais ce soir (ou demain matin), car là je n'ai pas le temps de voir en détail.

    Sinon, as-tu pensé au lieu de balises de programmer carrément l'écriture complète ?

    Philippe

  3. #3
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr,

    en faisant un boucle sur les lignes du texte du cadre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    With ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange
        If STR_Value = "" Then
            For Each lLine In .Lines
                lCpt = lCpt + 1
                If Not lLine.Find(STR_Balise) Is Nothing Then
                    .Lines(lCpt - 1, 2) = ""
                End If
            Next
        Else
            .Replace STR_Balise, STR_Value
        End If
    End With
    sinon c'est effectivement sûrement plus simple de générer le texte complet et de l'affecter au cadre, si excel a toute les infos nécessaires (c'est peut-être un template ppt qui est rempli par excel?)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut
    Oui j'utilise effectivement un template PPT et çà risque d'être lourd de réécrire chaque slide avec le code.

    Je vais regarder ta solution plus attentivement.

    En fait les Balises sont remplacer en premier, c'est à dire que si dans mon fichier excel j'ai une valeur alors la balise prend cette valeur sinon je remplace la balise par "".

    Et dans le cas où il n'y a pas de valeur il me faut pourvoir supprimer la puce et le titre.

    Merci pour la réponse

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut
    Donc j'ai réussit à faire ce que je voulais, j'ai encore quelques soucis avec le foreach donc je me suis contenté d'une boucle For :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For i = 1 To .Lines.Count
         If Not .Lines(i).Find(STR_Balise) Is Nothing Then
            .Lines(i).Delete 'supprime la ligne courante contenant la balise 
            .Lines(i - 1).Delete 'supprime la ligne du dessus contenant le titre
         End If
    Next i
    Merci pour votre aide !


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

Discussions similaires

  1. [PPT-2007] Manipuler du texte en VBA
    Par benjamin82 dans le forum VBA PowerPoint
    Réponses: 5
    Dernier message: 23/02/2012, 16h38
  2. manipulation de pdf via VBA
    Par yves fiallet dans le forum VBA Word
    Réponses: 4
    Dernier message: 27/08/2010, 13h37
  3. Supprimer un fichier texte via VBA
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/04/2008, 22h01
  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