Macro sous Word

C@thy

XLDnaute Barbatruc
Bonjour,

je dispose d'une population de 1500 personnes environ, une personne par page.

je cherche à écrire une macro sous Word permettant de faire ceci :
sur chaque page je veux transformer chaque marque de paragraphe par une tabulation, sauf la dernière de la page (sinon le 2ème élément se trouve collé au 1er!)

ensuite (plus dur!) je veux rajouter une tabulation avant et après ce qui est écrit en Tahoma gras Italique.

Le but étant ensuite de le transformer en .txt et de l'ouvrir en colonnes sous Excel. Je joins un exemple de fichier.

Mille mercis à celles et ceux qui pourraient m'aider.

Biz

C@thy
 

Pièces jointes

  • Machin.zip
    4.3 KB · Affichages: 216
  • Machin.zip
    4.3 KB · Affichages: 206
  • Machin.zip
    4.3 KB · Affichages: 205
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Merci pour ta réponse, je vais tester, en attendant j'ai bidouillé comme ceci :

Sub MacroLivre1()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "*Livre"
.Replacement.Text = "LO Livre"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
With Selection.Find
.Text = "^013(LO*^013)"
.Replacement.Text = "^p<LO>\1"
.MatchWildcards = True
.Replacement.Font.Color = wdColorBlue
.Execute Replace:=wdReplaceAll
End With
End Sub


C@thy
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

OK, le rechercher marche SUPER

mais c'est le remplacer que je sais pas faire

Selection.HomeKey Unit:=wdStory
With Selection.Find
.Text = "^013(\*Livre d^0146or"
.Replacement.Text = "^p<ETOILE>\1":(
.MatchWildcards = True
.Execute
End With
While Selection.Find.Found
Selection.MoveStart Unit:=wdCharacter, Count:=1
Selection.Font.Color = wdColorBlue
Selection.MoveEnd Unit:=wdCharacter, Count:=-1
Selection.InsertBefore "<ETOILE>"
Selection.MoveLeft
Selection.Find.Execute
Wend

Gné?:confused::confused::confused:
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Macro sous Word

Bonjour

je n'imaginais pas toutes ces possibilités, et sous OpenOffice writer fait encore mieux puisqu'il existe le sélectionner tout, en plus du rechercher tout (entre parenthèses ça m'arrangerait bien si ça existait sous Word).

Bon tu as le raccourci

ctrl+a
ou
sur XL2003
Selection.WholeStory
(a ne pas confondre avec un célèbre film!).
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Je me suis mal exprimée, le control A sélectionne tout le document je voulais parler du Rechercher tout, qui fait une sélection disjointe (tous les Titre1, tout le gras italique, tous les mots Toto ...)
 

C@thy

XLDnaute Barbatruc
Merci PYROF

Eh ben je ne suis pas peu fière,

grâce à ton enseignement, j'ai réussi à séparer ce qui est entre £ et µ et à le colorier :

Sub Sterling()
Selection.HomeKey unit:=wdStory
ScreenUpdating = False
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = True
.Text = "(\£*\µ)"
.Replacement.Text = "^p<STERLING>^&<MU>^p"
.Replacement.Font.Color = wdColorGreen
.Forward = True
.Execute Replace:=wdReplaceAll
End With
End Sub

Pfiou! Ca n'a pas été si facile, il fait les () et les \, je n'ai pas encore compris toutes les subtilités possibles, mais finalement le métier rentre!!!

Bizzzzzzzzzz

C@thy
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Bon, là, j'suis vraiment coincée :

Sub MacroPointVirguleTEST()
Selection.HomeKey unit:=wdStory
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[,.;-^p]" ' --------------Rechercher point, virgule, pointvirgule, tiret, paragraphe
.Replacement.Text = "^t" 'Remplacer par tabulation
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "de l*^013" 'mettre une tabulation devant de la, du, d', de l', à la, mais pas des
.Text = "d*^013"
.Replacement.Text = "^t\1"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

:( pas terrible!!!:(

Ensuite il faut faire 5 fichiers contenant :

1) le nom (en rouge) + l'état civil (naissance décès fils de) dans un fichier
2) le nom (en rouge) + les décorations :(en indigo) LH (légion d'honneur) pour l'instant on n'arrive pas à identifier LH car il paut y avoir devant chevalier etc...
ONM (ordre national du mérite) pareil il peut y avoir devant chevalier, GO (grand officier... c'est pas le club Med!) O. (officier) commandeur GC ou bien Grand-croix
3) le nom (en rouge) + les oeuvres, archives, livre d'or etc... (en bleu)
4) le nom (en rouge) + le grade (en vert italique)
5) le nom en rouge + la carrière (tout ce qui reste en noir)

Ensuite dans ces 5 fichiers (en réalité 10 car j'ai 2 fichiers Word au départ : avant 1924 et après)
pour les décorations seulement : remplacer les marques de paragraphes par des tabulations, pour les 4 autres remplacer , . ; - marque de paragraphe par des tabulations, mettre des tabulations devant les dates et devant du de la de l' d' à la mais pas des

Oilà. J'essaie de constituer mes 5 fichiers, mais je ne sais pas comment le faire et je te demande humblement ton aide pour terminer ce projet (ensuite, le boulot se fera sous excel, mais à la fin, il faudra de nouveau faire un seul document word, avec les noms des gugus depuis l'origine, en gardant le gras italique pour la carrière (dont tous les éléments seront regroupés les uns à la suite des autres, par individu).

Je sais que je te demande beaucoup et que tu n'es pas trop dispo, et je te remercie de tous tes efforts, passés et à venir.

Big bisous et bon courage à toi. (pour me supporter! Lol!)

C@thy
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Arf!

Il me reste un truc aussi :

mort pour la France ou mort en fonctions doit être traité comme décéde,

ceci fonctionne :

Sub DCD()
Selection.HomeKey unit:=wdStory
With Selection.Find
.Text = "^013(Mort pour la France^013)"
.Replacement.Text = "^p<Décédé>\1"
.MatchWildcards = True
.Replacement.Font.Color = wdColorDarkYellow
.Execute Replace:=wdReplaceAll
End With
End Sub

sauf que ça peut se trouver au milieu d'une phrase, donc dans ce cas il faut mettre une marque de paragraphe avant et commencer le paragraphe avec la balise <Décédé> ce traitement sera effectué uniquement dans le fichier Etat civil, on ne sait jamais, s'il a écrit une oeuvre qui s'appelle mort pour la France....!!!)

Pfiou! On l'aura quand même, va!;)

Biz

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Merci Pyrof, tu es un chouchou.

Ouf! Tu vas bien! C'est l'essentiel! Je me suis inquiétée (je suis d'une nature bileuse!).

Ne t'en fais pas pour moi, tu es débordé alors j'avance (à mon rythme, je rame beaucoup, mais j'avance tout de même).

Je te tiendrai au courant de ce que j'ai fait.

Contente d'avoir eu de tes nouvelles.

Bises et bon courage!!!

C@thy
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Bonjour le fil, le forum,

je relis avec plaisir ce fil qui date un peu, mais très intéressant, sauf qu'entre temps j'ai largement oublié les macros word, et donc j'essaie de m'y replonger.

Voilà le sujet :

je reçois des fichiers . txt en japonais.

Les champs sont séparés par des virgules, les chiffres sont tous entre guillemets et le séparateur de milliers est... la virgule aussi!!!
par conséquent, dans le fichier je dois remplacer, mais seulement entre les guillemets la virgule par rien, mais qui plus est lorsque j'ai -1,25 cela signifie -1250... car la virgule est séparateur de milliers... donc si je remplace la virgule par rien j'ai -125 et c'est pas bon...

Ces fichiers arrivent régulièrement chez mes utilisateurs, donc automatiser par macro serait vraiment très utile...

mais la chose s'avère compliquée, je pense...

Edit : j'ai essayé de l'ouvrir sous excel et convertir les données, mais là, grosse galère, donc cela semblerait plus facile sous word...:confused:

Si jamais vous avez une idée sur la façon de procéder, elle sera la bienvenue.

Merci à vous et bonne soiréche

Bizz

C@thy
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette