Cherche et remplace automatique dans word [Résolu]

Signaler
Messages postés
6
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2008
-
Messages postés
6
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2008
-
bonjour,
je recherche une solution de script, macro, applis pour automatiser des mises en page word.
Je m'explique :
En entrée, des documents .doc ou .rtf qui comporte des feuilles de style numérotation, des typos diverses.
Je voudrais une solution, soit dans word, soit en dehors, qui permette d'obtenir toujours la même mise en page, c'esu un peu un cherche et remplace automatique, par exemple, cherche "deux retour ligne" remplace par "un seul", cherche champ "bidule", remplace le par "truc"...
merci pour votre aide

8 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
Salut,

Merci de lire assez rapidement le[../reglement.aspx règlement de CodeS-SourceS],
IL n'est pas la pour faire joli.... QUEL EST L'INTERET DE POSTER 3 FOIS
LA MEME QUESTION... TU CROIS QUE DE CE FAIT TU AURAS LA RéPONSE PLUS
RAPIDEMENT????


CHANGE D'ATTITUDE ET VITE....

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
bonjour

Voila un an que j'ai un projet comme ça dans mes cartons.
Le projet est vaste j'ai rencontré beaucoup de problème et n'ai pas de projet abouti.
La boite de dialogue "Chercher remplacer" de Word permet d'enregistrer des remplacements et de tout faire ou presque (sauf certaines actions).
 Mon projet était de faire quelque chose de générique : j'ai laissé tomber tellement ce que l'on me demander n'était pas délimité au départ et n'avais pas de fin. 

Pour t'aider, le squellet d'une action rechercher/remplacer

' si le document est ouvert revenir en haut du document
    Selection.HomeKey Unit:=wdStory  (FACULTATIF)

' effacer les paramètres de la dernière recherche
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting

With Selection.Find
      .Text=""
   .Replacement.Text=""
       .Forward = True
        .Wrap = wdFindContinue
        .Font.Italic = True
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
End With
While Selection.Find.Execute
   Selection.Collapse
   'ici programez l'action à faire en plus
   exemple1 :changer le style ou autre attribut de police ou de mise en forme 
   exemple2: supprimer une  partie du texte
   exempleN: ... autant d'exmple qu'on veut
   
       Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdMove
Wend
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
Je continue

Dans le script précédent il faut adapter les lignes en fonction de ce que l'on cherche à faire

.Text="bidule" 
.Replacement.Text= "truc"

Pour replacer des retours chariot multiples, les sauts de pages , essayer avec
.Text="^p^p" 
.Replacement.Text= "^p"
Messages postés
6
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2008

toutes mes excuses au modérateur, mais j'ai posté 2 messages différents, par contre, peut être un des deux est en double, mais je suis sur mac, dans une boite de pc, avec pleins de scripts qui ne fonctionnent pas, pas de confirmation non plus, donc toutes mes excuses
Messages postés
6
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2008

Merci pour ce script, je n'y comprend pas grand chose, mais quand, dans ce projet, je dis à mes responsables que des solutions de type script existent, on me regarde avec des billes.
Il faut dire que chez nous, à sofinco, l'informatique est un dinosaure.
Même si cela n'est pas complet, je conserve précieusement, juste pour le faire remonter.
Cordialement, et encore milles excuses au modérateur de la part d'une pauvre petit mac perdu dans un monde pc
Messages postés
6
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2008

ce script, il se lance dans word ou dans un autre module ?
je présume que sur mac, ce language n'est pas reconnu ?
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
pour apprendre à traiter les documents en VBA , il est oimportant de se reférer au site Microsoft
http://msdn.microsoft.com/en-us/library/kw65a0we.aspx

Il faut encadrer mon script c'est du VBA pour Word donc déclare une routine RechercherRemplacerFindExec

Sub RechercherReplacerFindExec(quoi, par, action)
   Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting

With Selection.Find
      .Text=quoi
   .Replacement.Text=par
       .Forward = True
        .Wrap = wdFindContinue
        .Font.Italic = True
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
End With
While Selection.Find.Execute
   Selection.Collapse
   'ici programez l'action à faire en plus
   Select Case action
   ' ici bon courage
   End Select   
       Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdMove
Wend
End Sub

je tiens à dire que j'emploie aussi méthode de traitement par paragraphe
ActiveDocument.Paragraphs est la collection de paragraphe sur laquelle on fait un traitement par paragraphe d'ou l'instruction "For each"

Sub RechercherReplacerParParagraphe(quoi,par,action)
Dim par as Paragraph
For each par in ActiveDocument.Paragraphs
if Instr(1,par.Range.Text,quoi) then
   ' pour remplacer (à tester) , attention ce traitement supprime les particularités italique , exposant su texte initial
Selection.Range.Text = Replace(oPar.Text,quoi,par)
' encore une autre solution
' debut de ligne jusqu'à rencontré quoi
' ajouter par pour remplacer quoi
' ajouter le restant du paragraphe
Selection.TypeText=Mid(oPar.Text, 1,Instr(1,oPar.Text,quoi)-1) + par + Mid(oPar.Text, Instr(1,oPar.Text,quoi)+1)
end if

Next
End Sub

J'ai même fait des remplacement en utilisant le composants RegExp (expression régulière) pour rechercer des URL, des numéros de téléphones, etc mais c'est pas toujours évident à maîtriser. Car la méthode connait des normes dans plusieurs environnements PHP .Net VBScript et il n'existe pas assez de script réputés sûrs
Messages postés
6
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 octobre 2008

ben mazette, t'en connais un bout !
cela fonctionne t'il sur mac ?