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:

jp14

XLDnaute Barbatruc
Re : Macro sous Word

Bonjour

Sans écrire une macro on peut facilement réaliser la première partie de la demande avec l'option rechercher remplacer.
Procédure
Rechercher et remplacer ^p^p (2 marques de paragraphe qui se suivent) par ^p£$£ (ou £$£ si on ne veut pas de tabulation)
Rechercher et remplacer les marques de paragraphe par une tabulation
et pour rétablir la séparation des informations
Rechercher et remplacer £$£ par ^p


A tester et vérifier le résultat en utilisant le bouton "Afficher tout" .

JP
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Merci de ta réponse, JP14, j'ai bien sûr essayé cette méthode, mais ça ne marche pas car je n'ai 2 marques de paragraphe qui se suivent qu'à la fin du document, chaque page commence par le style Titre1 qui inclut le fait de sauter une page, il n'y a donc pas de saut de page. Crois-moi, j'ai essayé plein de trucs à la main avant de m'apercevoir qu'il me fallait une macro, je ne peux pas faire à la main sur chaque page, il y en a trop.

Merci, bibises et bonne journée

C@thy
 

Catrice

XLDnaute Barbatruc
Re : Macro sous Word

Bonjour,

J'ai ci-joint une macro qui répond à la premiere question, mais j'ai un probleme pour trouver la police Tahoma (ca fonctionne avec du Times ...)

Mettre les 2 fichiers dans le meme dossier et ouvrir Macro Machin2.doc


A suivre ...
 

Pièces jointes

  • Machin.zip
    13.5 KB · Affichages: 259
  • Machin.zip
    13.5 KB · Affichages: 258
  • Machin.zip
    13.5 KB · Affichages: 257

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

SUPEEEEEEEEEEEERRRRRRRRRRRRRRRRRR!!! Ca marche à merveille, et mon fichier est traité en 2 mn à peine!

Un grand MERCIIIIIIIIIII à toi. Tu es génial!!!

Pour le reste, je savais bien que c'était plus dur...

mais on peut se débrouiller autrement : mettre des tabulations là où il y a des points et des virgules (en réalité c'est pas si simple car des fois on a p.127 et ce n'est pas la fin d'une phrase, mais il vaut mieux trop de tabulations que pas assez

Bises

P.S. mon saut de page a été supprimé, il se retrouvent tous à la suite des autres, y a-t-il un moyen pour le rétablir?

Merciii.

C@thy
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : Macro sous Word

Re,

Pour les sauts de page, j'ai vu ce probleme qui à la base ne me semblait pas important puisqu'on ferme peut ete le fichier sans l'enregistrer apres l'export en txt.
Quelle application crée ce fichier ?
Le saut de page n'est pas reconnu par la macro ...

En refaisant le fichier avec des sauts de page Word, là ça fonctionne.
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Non, je ne vous avais pas oubliés, j'étais juste ... pas là!

me voici reviendue à mon poste de travail (j'ai pas internert chez moi... la honte!!!)

donc j'ai un 'tit peu modifié la super macro word comme suit :

Sub Test()
Dim myRange As Range
NbPages = Selection.Information(wdNumberOfPagesInDocument)
For i = 1 To NbPages - 1
Selection.GoTo What:=wdGoToPage, which:=wdGoToAbsolute, Count:=i 'Signet de début
Selection.Bookmarks.Add Name:="bmStart", Range:=Selection.Range
Selection.GoTo What:=wdGoToPage, which:=wdGoToAbsolute, Count:=i + 1 'Signet de fin
Selection.InsertBreak Type:=wdPageBreak
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Bookmarks.Add Name:="bmEnd", Range:=Selection.Range
Traitement1 ActiveDocument.Range(Start:=ActiveDocument.Bookmarks("bmStart").Range.Start, End:=ActiveDocument.Bookmarks("bmEnd").Range.End)
Next
Selection.GoTo What:=wdGoToPage, which:=wdGoToAbsolute, Count:=i 'Signet de début
Selection.Bookmarks.Add Name:="bmStart", Range:=Selection.Range
Selection.EndKey Unit:=wdStory 'Signet de fin
Selection.Bookmarks.Add Name:="bmEnd", Range:=Selection.Range
Traitement1 ActiveDocument.Range(Start:=ActiveDocument.Bookmarks("bmStart").Range.Start, End:=ActiveDocument.Bookmarks("bmEnd").Range.End)
End Sub
Sub Traitement1(Arg1)
Arg1.Find.ClearFormatting
Arg1.Find.Replacement.ClearFormatting
With Arg1.Find
.Text = "^p"
.Replacement.Text = "^t"
End With
Arg1.Find.Execute Replace:=wdReplaceAll
End Sub

ça marche super nickel, reste à mettre une marque de paragraphe dès qu'on change de police, c'est possible ça???

Encore merci, Catrice (Ah, j'l'ai pas fait exprès!!, mais j'ai mis une virgule, comme ça on reprend son souffle entre les 2) pour cette super macro qui fait déjà une grande partie du boulot.

Bises

C@thy
 

C@thy

XLDnaute Barbatruc
Re : Macro sous Word

Question subsidiaire :

avant de rajouter le saut de page par macro, il me remontait le texte et renumérotait à chaque fois en arrière-plan. (ça prend un temps fou!)

Y a-t-il un moyen de bloquer ce recalcul automatique (les réflexes Excel reprennent le dessus!)???

Merci...

C@thy
 

Pyrof

XLDnaute Occasionnel
Re : Macro sous Word

Bonjour,

Avec retard
Tout ceci est faisable sans écrire le moindre code
3 rechercher remplacer

1 faire rechercher style T1tre1, remplacer par [PYROF] executer
2 faire rechercher "^013" (sans attributs) remplacer par "^09"
3 remplacer "[PYROF]" par "^013"

et voila
 

Catrice

XLDnaute Barbatruc
Re : Macro sous Word

Bonsoir,

J'ai modifié le code qui remplace les retours chariots et modifie les sauts de pages mais toujours un probleme avec la police Tahoma ..

Sub Transforme()
' Rajoute les sauts de page et supprime ceux du Style Titre 1
For Each X In ActiveDocument.Paragraphs
If X.Style = "Titre 1" Then
ActiveDocument.Range(X.Range.Start, X.Range.Start).InsertBreak Type:=wdPageBreak
End If
Next
' Enleve les sauts de pages du style Titre 1
ActiveDocument.Styles("Titre 1").ParagraphFormat.PageBreakBefore = False
' Reemplace les paragraphes par des tabulations
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^p"
.Replacement.Text = "^t"
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
 

Pyrof

XLDnaute Occasionnel
Re : Macro sous Word

Bonjour,


2 faire rechercher "^013" (sans attributs) remplacer par "^09" , ne marche pas,

pour taper ^013 faire AltGr 9 et non chapeau ^, tu peux aussi tape ^p, c'est la même chose.

Par expérience ^013 donne de meilleurs résultats que ^p
ainsi ^09 = ^t
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 500
Membres
103 563
dernier inscrit
samyezzehar