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 :

VB6 sous Windows7 word 2010 rechercher remplacer dans toutes les sections document


Sujet :

VBA Word

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut VB6 sous Windows7 word 2010 rechercher remplacer dans toutes les sections document
    Bonjour
    je travaille sous Windows7 avec word 2010
    Je voudrais créer une macro qui recherche et remplace des mots par d'autres dans toutes les sections document
    Le problème est que je n'arrive qu'à remplacer dans le coeur du document mais pas dans les autres sections (en-têtes, pieds de page, cadre, tableau ...)
    Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il faut "aller" dans chaque partie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Select
    Sachant que pour chaque section, il peut y avoir trois types de Headers.

    Pour les tableaux, ils sont parcourus aussi, mais avec la Story que l'on sélectionne. S'ils sont dans le cœur du document, ce sera dans la MainStory.

    Pour les cadres, il faut sélectionner chaque contenu de cadre.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Merci pour la réponse
    J'ai déjà testé cette commande mais il ne va jamais que dans l'entête et nulle part ailleurs. Voici la partie du code qui execute le remplacement :
    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
     
        Dim intx As Integer
        For intx = 1 To ActiveDocument.Sections.Count        
     
    ActiveDocument.Sections(intx).Headers(wdHeaderFooterPrimary).Range.Select
     
       With Selection.Find
            .Text = texte
            .Replacement.Text = newtexte
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
     
        Next intx
    merci d'avance pour l'aide

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est juste un exemple.


    Pour les pieds de page, c'est Footers.

    Pour les zones de texte, soit InLineShapes soit Shapes.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    Merci pour la réponse
    Je ne vois pas encore comment je peux automatiser le tout, à savoir :
    - parcourrir le doc afin d'y repérer toutes les parties (header, footer, ...)
    - à chacune de ces parties, rechercher et remplacer les mots
    donc je voudrais que le code détecte si c'est le corps ou la tete ou le pieds ...
    Merci pour l'aide

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Sans parcourir les différentes Stories, tu ne pourras pas savoir si l'une d'elles contient ce que tu cherches.

    Par contre, on peut savoir quelles sont les stories qui existent dans le document et ne faire la recherche que sur ce qui existe.

    Pour savoir si elles existent, on peut les compter.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    merci c'est sympa de me mettre sur la piste
    Serait-ce abuser de toi que de m'expliquer l'ensemble du processus ?
    je ne suis pas un vrai programmeur et je n'ai malheureusement pas trop de temps
    un grand merci d'avance

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Voilà la listes des Stories qui existent en Word.

    wdCommentsStory
    wdEndnoteContinuationNoticeStory
    wdEndnoteContinuationSeparatorStory
    wdEndnoteSeparatorStory
    wdEndnotesStory
    wdEvenPagesFooterStory
    wdEvenPagesHeaderStory
    wdFirstPageFooterStory
    wdFirstPageHeaderStory
    wdFootnoteContinuationNoticeStory
    wdFootnoteContinuationSeparatorStory
    wdFootnoteSeparatorStory
    wdFootnotesStory
    wdMainTextStory
    wdPrimaryFooterStory
    wdPrimaryHeaderStory
    wdTextFrameStory


    On peut, au lieu de les compter, faire une boucle sur les Stories.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim aStory As Range
    For Each aStory In ActiveDocument.StoryRanges
        Debug.Print aStory.Find.Execute(findtext:="moi")
    Next aStory
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    un grand merci
    je teste tout cela et je te tiens au courant (ou "je te dis quoi" chez les chtis)
    ciao

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    hey;

    Même si je comprends ce dialecte, je ne suis pas un chti !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Bonjour
    Non, mais moi je suis du Borinage en Belgique et notre dialecte est proche de celui des chtis
    Mais revenons-en à nos moutons
    J'ai testé ton code et ça marche mais uniquement sur la première page pas les autres. Tu dois savoir qu'il y a des sauts de page entre 2 pages
    Merci d'avance

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Les borains c'est ni des gins (ça c'est fait).

    C'est que tu n'as pas que des sauts de page, tu as probablement des sauts de sections.
    Ou autre possibilité, un première page différente des autres.

    Peut-être y a-t-il un autre moyen ?


    Quel est le but de ton remplacement ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Bonjour et merci de t'intéresser à mon problème : ça fait du bien !
    Dans mon boulot, je teste windows 7 et word 2010
    il y a des lettres modèles (qu'on appelle modèles mais qui ont l'extension .docx)
    Dans ces lettres, il y a des variables qui commence par "_Vnomvariable" afin qu'un programme en java puisse les repérer et les remplacer par des valeurs et ce, dans le word/document.xml que contient le format docx.
    Seulement, word splite le _Vnomvariable en plusieurs morceaux en donnant des style différent à "_" et à "V" et ensuite au reste de la variable. Pour la recherche dans le document xml cela devient très compliqué à gérer. D'où l'idée de les remplacer par des recherches/remplacer par VVnomvariable qui, l'expérience nous a demontré que Word ne splite plus l'ensemble du mot et donc tout reste ensemble dans le xml et le remplacement par les valeurs peut se faire
    La macro recherche à partir d'un fichier qui contient tous les noms de variable, les _Vnomvariable pour les remplacer par VVnomvariable (nomvariable change pour chaque ligne du fichier texte contenant les noms de variable)
    J'espère avoir été clair ?
    Merci de ton aide

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour éviter de faire des remplacements de mots, une méthode qui fonctionne est l'utilisation de signet, mais il faut que ce soit possible.

    Il faudrait voir dans le XML ce que ça donne.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Bonjour
    Oui en effet il y a des sauts de sections dans ce document
    y a t-il qlq chose à adapter dans le code que tu m'as donné ?
    merci d'avance

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Bonjour
    Concernant les signets, je les utilisent déjà pour insérer, sous forme boucle, sur des structures de données quand il existe plusieurs valeurs pour les mêmes variables. Mais pour ce que je recherche, je ne vois pas trop comment cela pourrait m'aider ?
    Mais pour le reste, ton premier code fonctionne bien sauf qu'il est vrai qu'il y a plusieurs sauts de section
    Merci d'avance

  17. #17
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    L'avantage d'un signet, c'est que tu ne dois pas faire de recherche.
    Quelle que soit sa position, il suffit de l'adresser pour l'atteindre.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    le problème est que j'utilise déjà les signets et cela entrainerait des conflits avec mes autres scripts (boucles, structures de valeurs)
    Mais avec ton code si je parviens à boucler sur toutes les sections, cela devrait être bon !?
    merci

  19. #19
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    En fait, il faut boucler les différents objets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim intI as Integer
     
    For intI = 1 To ActiveDocument.Sections.Count
       ActiveDocument.Section(intI).Headers(wdHeaderFooterPrimary).Range.Select
     
    Selection.Find
    ....
    Next intI
    On peut toujours vérifier l'existence de l'objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activeDocument.Sections(1).Headers(wdHeaderFooterPrimary)
    Pour le pied de page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activeDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Select
    Et ainsi de suite
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    un grand merci
    je teste ça et te dis quoi !
    D'ici là, une bonne fin d'année !
    ciao

Discussions similaires

  1. macro rechercher/remplacer sur toutes les feuilles
    Par gti64 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/03/2015, 11h25
  2. [9.1] Recherche objet dans toutes les tables
    Par vandman dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/10/2014, 13h43
  3. [XL-2010] Remplacer dans toutes les cellules
    Par arnogb69 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 14/11/2013, 10h34
  4. Réponses: 1
    Dernier message: 18/03/2011, 18h35
  5. [AC-2003] Recherche "-1" dans toutes les requêtes.
    Par Richard_35 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/04/2010, 16h16

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