1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
Sub MiseEnFormeMagasin()
'// On recherche les occurrences du mot "Magasin" suivi d'un espace, d'un 2 points, d'un espace et d'un nombre (peut importe lequel)
Selection.HomeKey Unit:=wdStory
With Selection.find
.Text = "Magasin^w:^w^#"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute
While Selection.find.Found
'// Tant qu'on en a trouvé, on effectue le traitement
'// 1°) On recupère le numéro du magasin que l'on stocke dans la variable "aNumeroDeMagasin"
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
aNumeroDeMagasin = LTrim$(Str$(Selection.Range))
'// 2°) On va rechercher toutes les lignes (consécutives) qui commence par le numéro du magasin
Selection.HomeKey Unit:=wdLine
Selection.MoveDown Unit:=wdLine, Count:=2
Selection.MoveDown Unit:=wdLine, Count:=3, Extend:=wdExtend
While InStr(Selection.Paragraphs(Selection.Paragraphs.Count), aNumeroDeMagasin) = 1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Wend
Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
'// 3°) On va transformer ce pseudo-tableau en tableau pour Word en remplaçant les espaces par des tabulations
'// Attention au format du document d'entrée, s'il devait contenir des espaces dans ses pseudo-cases, il te faudra adpater la macro
Selection.find.ClearFormatting
Selection.find.Replacement.ClearFormatting
With Selection.find
.Text = "^w"
.Replacement.Text = "^t"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute Replace:=wdReplaceAll
Selection.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=5, NumRows:=Selection.Paragraphs.Count, Format:=wdTableFormatNone, _
ApplyBorders:=True, ApplyShading:=True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, ApplyLastRow:=False, ApplyFirstColumn:=True, _
ApplyLastColumn:=False, AutoFit:=True, AutoFitBehavior:=wdAutoFitFixed
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.SelectRow
Selection.Rows.Delete
Selection.Tables(1).Select
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=2
'// 4°) On insère un saut de page pour séparer les différents magasins à l'impression
Selection.InsertBreak Type:=wdPageBreak
'// 5°) On relance la recherche pour boucler
With Selection.find
.Text = "Magasin^w:^w^#"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute
Wend
'// On supprime le dernier saut de page pour économiser une page (qui ne sert à rien) ==> penser au développement durable
Selection.TypeBackspace
End Sub |
Partager