MACRO Powerpoint rechercher remplacer

Signaler
Messages postés
8
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2010
-
Messages postés
8
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2010
-
Bonjour,

Aprés moulte recherches sur le net, j'ai réussi à trouver un code me permettant de faire un rechercher remplacer dans mes présentations.

Le but étant de rechercher des mots comprenant des espaces avant et/ou/ aprés et de les remplacer.

Un exemple vaut mieux que de longs discours :

Cettre phrase  contient deux espaces entre phrase et contient.

Et je souhaite remplacer cette phrase par

Cette phrase ne contient plus deux espaces entre phrase et contient.

Je recherche donc le code manquant au miens en vb pour réaliser ceci.

le code ci-dessous cherche tous les "?" et les remplace en insérant un espace avant.
Une fois réalisé, la suite du code cherche tous les "  ?" (deux espaces avant pour ceux qui en avaient déja un avant la première manupulation) et les remplacer par " ?" (c-a-d : un espace et un "?")

C'est un peu complexe à expliquer mais je crois que je m'en suis pas trop mal sorti... 

CODE

Sub ReplaceText()
    
    Dim oSld As Slide
    Dim oShp As Shape
    Dim oTxtRng As TextRange
    Dim oTmpRng As TextRange
    Dim strWhatReplace As String, strReplaceText As String

' write  find text
    strWhatReplace = "?"


     ' write change text
    strReplaceText = " ?"


     ' go during each slides
    For Each oSld In ActivePresentation.Slides
         ' go during each shapes and textRanges
        For Each oShp In oSld.Shapes
             ' replace in TextFrame
            Set oTxtRng = oShp.TextFrame.TextRange
            Set oTmpRng = oTxtRng.Replace( _
            FindWhat:=strWhatReplace, _
            Replacewhat:=strReplaceText, _
            WholeWords:=True)
            
            Do While Not oTmpRng Is Nothing
                
                Set oTxtRng = oTxtRng.Characters _
                (oTmpRng.Start + oTmpRng.Length, oTxtRng.Length)
                Set oTmpRng = oTxtRng.Replace( _
                FindWhat:=strWhatReplace, _
                Replacewhat:=strReplaceText, _
                WholeWords:=True)
             Loop
        Next oShp
    Next oSld
   
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       ' write  find text
    strWhatReplace = "  ?"


     ' write change text
    strReplaceText = " ?"


     ' go during each slides
    For Each oSld In ActivePresentation.Slides
         ' go during each shapes and textRanges
        For Each oShp In oSld.Shapes
             ' replace in TextFrame
            Set oTxtRng = oShp.TextFrame.TextRange
            Set oTmpRng = oTxtRng.Replace( _
            FindWhat:=strWhatReplace, _
            Replacewhat:=strReplaceText, _
            WholeWords:=True)
            
            Do While Not oTmpRng Is Nothing
                
                Set oTxtRng = oTxtRng.Characters _
                (oTmpRng.Start + oTmpRng.Length, oTxtRng.Length)
                Set oTmpRng = oTxtRng.Replace( _
                FindWhat:=strWhatReplace, _
                Replacewhat:=strReplaceText, _
                WholeWords:=True)
             Loop
        Next oShp
    Next oSld

End Sub

Testez le, ca fonctionne pour la première mais pas pour la deuxième opération. En gros, il n'arrive pas à repérer l'espace avant le mot que je recherche.

Qu'en pensez-vous ???

Merci pour vos réponses

M-D-K
www.m-d-k.eu

4 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Utilise des regex, y'a une réponse sur le forum de Développez
Messages postés
8
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2010

Ok merci pour ta réponse mais après quelques recherhces sur le net, je ne trouve pas un exemple de code...
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Dans ce topic, tu trouves la paire d'expressions régulières pour faire ce que tu souhaites. Maintenant, il te suffit de chercher regex vb6 sur Google et d'utiliser l'objet Regex comme c'est expliqué sur ces sites.

---
VB.NET is good ... VB6 is better
Messages postés
8
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2010

Ok merci beaucoup pour ta réponse

Je vais continuer à fouiner

Bye