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

j'essaie simplement de supprimer la carrière (en Tahoma)
donc de remplacer ce qui est en Tahoma gras italique par espace
et même ça, ça marche pô :

Sub Selection()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Font.Name = "Tahoma"
.Font.Italic = 1
.Font.Bold = 1
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

alors qu'on peut le faire dans la boîte de dialogue, l'enregistreur de macro ne prend pas Tahoma gras italique, et même en le rajoutant, ça le fait pas, même en pas à pas!

Tu crois que je vais y arriver????

Biz et bonne journée

C@thy
 

Pyrof

XLDnaute Occasionnel
Re : Macro sous Word

Tu n'y arriveras pas comme cela:

Il y a un conflit avec la police Tahoma.
Si tu fais le rechercher remplacer manuellement quand tu sélection Tahoma, dans la ligne en dessous il y a : Police:(Par défaut) Tahoma.

Avec ta macro, exécute la macro, puis lance rechercher remplacer manuellement, dans la boite de dialogue il n'y a pas Tahoma mais
Police:(Par défaut) Tahoma, Police de script complexe:Tahoma

Et c'est ce terme : Police de script complexe:Tahoma qui doit perturber le VBA (cadeau de Bill)

Autre solution,
Tu recherche tout ce qui est en Times et tu le mets en couleur Bleu (pour exemple)
Puis tu recherches tout ce qui est resté en couleur automatique, c'est à dire le Tahoma et là tu supprime tout.
 

Catrice

XLDnaute Barbatruc
Re : Macro sous Word

Bonjour,

effectivement depuis le début, j'ai des problemes avec cette police Tahoma.
C'est pour cela que ma macro bouclait sur tous les mots pour faire les remplacements.

Le code suivant remplace les , en Tahoma Italic par une tabulation :

Sub Test2()
For Each X In ActiveDocument.Words
If X.Text = ", " And X.Font.Name = "Tahoma" And X.Font.Italic Then X.Text = Chr(9)
Next
End Sub
 

Pyrof

XLDnaute Occasionnel
Re : Macro sous Word

Voici une méthode qui n'est pas automatique mais qui va sûrement te simplifier la vie

Tu ouvres ton fichier doc
Tu vas dans outils, option, onglet Général et tu coches Confirmation des conversions lors de l'ouverture

Maintenant tu enregistres ton fichier au format rft

tu fermes le fichier
tu ouvres à nouveau ce fichier, une boite de dialogue apparaîtra en te demandant quel format

tu choisis texte brut

Tout sera en codage RTF, tu fais un rechercher remplacer du texte Tahoma en Arial
Tu enregistre et ferme le fichier.
Tu ouvres encore le fichier en prenant le format Texte mis en forme (RTF).

Et là ton texte apparaîtra comme à l'origine, seulement la police Tahoma est remplacée par la police Arial

Par la suite tu peux décocher Confirmation des conversions lors de l'ouverture

Là les macros devraient fonctionner.
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

OK, j'essaie ça et je te dis (enfin, demain!)
par ailleurs j'essaie de supprimer tout ce qui se trouve entre * et le saut de page,
Peux-tu me dire pourquoi ceci ne fonctionne pas?

Sub MacroMu()
'
' MacroMu Macro
' Macro enregistrée le 14/10/2008 par MINEFI
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "µ"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Bookmarks.Add Name:="bmStart", Range:=Selection.Range

Selection.Find.ClearFormatting
With Selection.Find
.Text = "^m"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Bookmarks.Add Name:="bmEnd", Range:=Selection.Range
Dim X As Long, Y As Long
Dim Plage As Range

X = WordDoc.Bookmarks("bmStart").Start
Y = WordDoc.Bookmarks("bmEnd").End
Set Plage = WordDoc.Range(Start:=bmStart, End:=bmEnd)

Plage.Delete
End Sub


En réalité je voudrais le copier dans un autre document, mais il faut que je copie aussi le nom du gars (1.MACHIN) qui est en Titre1 puis tout ce qui se trouve entre µ et la saut de page (j'ai rajouté µ à la main avant la polive Tahoma gras italique, vu que par macro j'y arrivais pas)

Merci à toi, je suis franchement nullissime!!!

Bises

C@thy
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Bon, j'ai testé.

Tout se passe comme tu dis, j'ai de l'arial à la place du Tahoma, mais je n'arrive pas à remplace , et . par tabulation dans le texte en Arial

Suis dans la galèèèèèère!
Suite au prochain numéro

Merci de tous tes efforts pour moi... je l'aurai un jour....!!!

Biz et bonne soiréche (vais maison).

C@thy
 

Pyrof

XLDnaute Occasionnel
Re : Macro sous Word

Bonjour,

Pour répondre au post précédent :
Tu cherches a conserver le para Titre1 (1. Machin) et du premier saut de paragraphe * jusqu'au double retour (car je ne vois pas de sut de page)
et tout ceci tu veux le copier dans un autre doc.

Avant d'écrire une macro teste manuellement ceci
en début de document ajoute un retour à la ligne
fait :
rechercher : (^013[1-9]*^013)*^013\*
remplacer : \1*
coche caractères génériques

et dis moi si cela te convient


Pour rechercher les . et , en Arial :

rechercher : [.,] avec Police Arial gras ital
coche caractères génériques

on l'aura .......
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Arf! Oui, ON L'AURA, mais je ne sais pas quand.

En plus mon PC plante toutes les minutes, dur dur!

bon, la manip que tu m'indiques me donne 0 remplacement effectué! Gasp! Pas glop!

Je te remercie de ton énorme PATIENCE :)

Oui, le saut de page n'existe pas, il est inclus dans le style Titre1, mais je comptais le rajouter par macro, pour avoir un vrai saut de page, je croyais que c'était facile et en fait ça marche pô.
 

Pyrof

XLDnaute Occasionnel
Re : Macro sous Word

Bonjour,

Tu fait toujours référence au style titre1, dans le fichier "Machin_1.doc" que tu as joint, il n'y a pas ce style.

Je suppose donc que tu fais autre chose avant.
Dans cette situation, nous ne partons pas dans les mêmes conditions.

Il faudrait que l'on reparte dès le début, avec le même fichier et que de part la connaissances des problèmes, y aller étape par étape

1 fournir un fichier de base
2 cibler les sauts de pages qui sont en fait le bornage des information pour une personne
3 à l'intérieur de ce bornage, savoir quels information (ligne) doit on conserver, et sous quel format on doit les présenter.
4 après avoir borné tous ces différents types d'information, modifier la structure du document pour qu'il soit compatible Excel

Ne connaissant pas totalement les contraintes, voilà ma vision

A+
 

MJ13

XLDnaute Barbatruc
Re : Macro sous Word

Bonjour à tous,

Si le fichier DOC vient d'une base de données, ne serait ce pas plus facile d'avoir le nom du champ avant le texte?

Ainsi avec Excel c'est plus facile à gérer.

Il y a queqlques années, J'avais traité des données ainsi sur des données bibilographiques (mais bon il n'y avait pas a traiter du texte dans chaque champs, la c'est plus complexe).
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Coucou, me voilou,

je vous réponds :

oui, c'est vrai, j'ai perdu le style Titre1.
Le style Titre1 était au départ sur le n° et le nom du gugus uniquement : 1. MACHIN 2. BIDULE etc...

Ensuite, je ne dispose que d'un fichier word, ça ne vient pas d'une base de données.

Oili oilou...

Biz

C@thy
 

Pyrof

XLDnaute Occasionnel
Re : Macro sous Word

A partir du fichier machin_1.doc

exécute cette macro :


Private Sub machin()

Selection.HomeKey unit:=wdStory
Selection.InsertBefore Chr(13)
Selection.HomeKey unit:=wdStory

'----------------- marquage début page
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Text = "^013([0-9]{1;}.*^013)"
.Replacement.Text = "^p<DPAGE>\1"
.Replacement.Font.Color = wdColorRed
.MatchWildcards = True
.Execute replace:=wdReplaceAll
End With
'----------------- nom
Selection.HomeKey unit:=wdStory
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Text = "(\<DPAGE\>[!^013]{1;}^013)([!^013]*^013)"
.Replacement.Text = "\1<NOM>\2"
.Replacement.Font.Color = wdColorRed
.MatchWildcards = True
.Execute replace:=wdReplaceAll
End With


'----------------- Né
Selection.HomeKey unit:=wdStory
With Selection.Find
.Text = "^013(Né*^013)"
.Replacement.Text = "^p<Né>\1"
.MatchWildcards = True
.Replacement.Font.Color = wdColorBlue
.Execute replace:=wdReplaceAll
End With

'----------------- Décédé
Selection.HomeKey unit:=wdStory
With Selection.Find
.Text = "^013(Décédé*^013)"
.Replacement.Text = "^p<Décédé>\1"
.MatchWildcards = True
.Execute replace:=wdReplaceAll
End With

'----------------- Diplome
'With Selection.Find
' .ClearFormatting
' .Replacement.ClearFormatting
' .Format = True
' .Text = "^013^09(*^013)"
' .Replacement.Text = "^p<Diplome>\1"
' .Replacement.Font.Color = wdColorBlue
' .MatchWildcards = True
' .Execute replace:=wdReplaceAll
'End With


'----------------- AN
Selection.HomeKey unit:=wdStory
With Selection.Find
.Text = "^013(\*A[. ]{1;2}N[.:]*^013)"
.Replacement.Text = "^p<AN>\1"
.MatchWildcards = True
.Execute replace:=wdReplaceAll
End With
'----------------- SAEF
Selection.HomeKey unit:=wdStory
With Selection.Find
.Text = "^013(\*SAEF*^013)"
.Replacement.Text = "^p<SAEF>\1"
.MatchWildcards = True
.Execute replace:=wdReplaceAll
End With
'----------------- O. ONM
Selection.HomeKey unit:=wdStory
With Selection.Find
.Text = "^013(O[. ]{1;2}ONM[.,]*^013)"
.Replacement.Text = "^p<ONM>\1"
.MatchWildcards = True
.Execute replace:=wdReplaceAll
End With
'----------------- etoile
Selection.HomeKey unit:=wdStory
With Selection.Find
.ClearFormatting
.Text = "^013(\*[!^013]{1;}^013)"
.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
'----------------- balisage gras ital
Selection.HomeKey unit:=wdStory
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = "<Deb>^&<Fin>"
.Font.Italic = True
.Font.Bold = True
.Replacement.Font.Color = wdColorBrightGreen
.Execute replace:=wdReplaceAll
End With

End Sub


Ceci va marquer les différents types de paragraphe pour chaque gugus.
On va ainsi finir par savoir ce qu'il faut conserver ou supprimer.
Après on verra pour la mise en forme

A+
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Beau boulot, Pyrof, je vais essayer de l'appliquer aux autres critères (mettre oeuvres et LH en jaune, par exemple.

On avance on avance... un grand MERCI!

P'têt que ça ressemble, MJ13, mais c'est saisi directement sous word.

Biz

C@thy
 

Discussions similaires

Statistiques des forums

Discussions
312 555
Messages
2 089 544
Membres
104 208
dernier inscrit
laura29180