|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
Salut,
Il faut "aller" dans chaque partie. Code :
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Select 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 ! |
|
|
00
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
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 ! |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
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 ! |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#8 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
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 :
__________________
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 ! |
||
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
un grand merci
je teste tout cela et je te tiens au courant (ou "je te dis quoi" chez les chtis) ciao |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
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 ! |
|
|
00
|
|
|
#11 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
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 ! |
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
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 ! |
|
|
00
|
|
|
#15 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#16 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#17 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
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 ! |
|
|
00
|
|
|
#18 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
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 |
|
|
00
|
|
|
#19 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 343 ![]() |
Salut,
En fait, il faut boucler les différents objets. Code :
Code :
activeDocument.Sections(1).Headers(wdHeaderFooterPrimary) Code :
activeDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Select
__________________
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 ! |
||
|
|
00
|
|
|
#20 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 130 ![]() |
un grand merci
je teste ça et te dis quoi ! D'ici là, une bonne fin d'année ! ciao |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com