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 Word Discussion :

Rechercher/Remplacer dans zone de text word ne fonctionne pas.


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Rechercher/Remplacer dans zone de text word ne fonctionne pas.
    Bonjour,

    Je fais du VB pour la première fois aujourd'hui et j'avoue ne pas tout comprendre ...
    Je cherche simplement à remplacer des chaînes de caractères dans un document Word (par exemple remplacer [nom] par Toto). La fonction que j'ai écrite fonctionne si mon texte à rechercher ne se trouve pas dans une zone de texte Word (menu insertion/Zone de texte) !! J'ai absolument besoin d'utiliser des zones de texte !

    Ce qui est étrange c'est que lorsque je lance la commande rechercher/remplacer sous Word, celui ci me remplace bine les mots situés dans les zones de texte !
    Voici le code VB
    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
     
    Sub Remplacer_texte(Texte_à_remplacer As Variant, Texte_de_remplacement As Variant, Tout As Boolean)
     
    With Word_Application
        .Selection.find.ClearFormatting
        .Selection.find.Replacement.ClearFormatting
     
         With .Selection.find
              .Text = Texte_à_remplacer
             .Replacement.Text = Texte_de_remplacement
             .Forward = True
             .Wrap = wdFindContinue
             .Format = False
             .MatchCase = False
             .MatchWholeWord = False
             .MatchWildcards = False
             .MatchSoundsLike = False
             .MatchAllWordForms = False
        End With
        .Selection.find.Execute
     
        With .Selection
             If .find.Forward = True Then
                 .Collapse Direction:=wdCollapseStart
             Else
                 .Collapse Direction:=wdCollapseEnd
             End If
             If Tout Then
                 .find.Execute Replace:=wdReplaceAll
             Else
                 .find.Execute Replace:=wdReplaceOne
             End If
         End With
     End With
     
     End Sub
    Quelqu'un a-t-il déjà rencontré ce problème ?

    Merci d'avance.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Où prends-tu ta zone de texte ? Dans la barre d'outils "Commandes" ou dans la barre d'outils "Dessin" ?
    Si c'est dans la barre d'outils "Dessin"
    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
        ActiveDocument.Shapes("Text Box 1").Select
        Selection.WholeStory
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "cou"
            .Replacement.Text = "lou"
            .Forward = True
            .Wrap = wdFindAsk
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Application.DisplayAlerts = False
        Selection.Find.Execute Replace:=wdReplaceAll
    Tu dois sélectionner ta zone de texte et tout son contenu avant de lancer la recherche

    Edit
    Voui, j'ai été interrompu...
    Quand la zone de texte provient de la barre d'outils "Commandes", Je sais pas !
    Dans quel cas es-tu ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Ok ! Merci !! Ce n'est pas encore la solution mais cette réponse m'a permis d'avancer !

    Ton code fonctionne quand je rajoute des zones de textes depuis la barre d'outils "dessin".
    Quand j'insère une zone de texte depuis le menu "Insertion", Word crée un "canevas" et c'est dans ce canevas que doit se trouver mes fameuses zones de texte. Je vais donc approfondir de se côté. A mon avis on doit pourvoir récupérer les fils d'un objet shape.

    Merci encore !

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Sans doute ! Sans doute !
    J'avoue que je n'ai jamais fait ça dans Word

    Bonne chance dans tes recherches. Si tu trouves, n'hésite pas à mettre ta solution ici

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    voilà ce que j'ai trouvé :
    Shape.CanvasItems Property
    Returns a CanvasShapes object that represents a collection of shapes in a drawing canvas.

    Donc sur chaque shape, on peut à nouveau récupérer une collection de shape et recommencer la manip Rechercher/Remplacer.

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

Discussions similaires

  1. Pilotage Word depuis Access, remplacer dans zone de texte
    Par Jean-Philippe André dans le forum VBA Word
    Réponses: 1
    Dernier message: 04/07/2014, 15h38
  2. Rechercher/Remplacer dans un fichier texte externe
    Par Cmama dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2010, 12h34
  3. [WD-2000] Rechercher-remplacer dans une zone de texte
    Par tegestobis dans le forum VBA Word
    Réponses: 4
    Dernier message: 04/09/2009, 14h35
  4. [Word] Comment rechercher un texte dans zone de texte ?
    Par vedge2000 dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 28/11/2007, 11h11
  5. rechercher remplacer dans word 2003
    Par MALREGG dans le forum Word
    Réponses: 8
    Dernier message: 27/06/2007, 13h26

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