souci macro VBA word 2000 sur 2007

stephsteph

XLDnaute Occasionnel
Bonjour,

C'est mon premier post sur cette partie du forum de macro word, même si j'ai souvent participé au forum excel.

Mon problème est le suivant (note : je suis nulle en macro de Word).
J'ai une macro très très vieille sous MSWord 2000 qui fonctionne (j'ai vérifié).

Je voudrais la faire fonctionner sous MSWord 2007, voire la rapidifier en plus.
Donc j'ai fait un copié-collé de la vieille macro dans mon fichier sous docx et je l'ai fait tourner.

Mais cela buggue tout de suite en surlignant en jaune le code:
Code:
.Text = listeMots.Item(i)

Je joins les 2 fichiers en docx pour test.

J'ai aussi quelques détails à améliorer comme la suppression (puisque les 2 fichiers sont ouverts) du code parasite (si possible):

Documents.Open "D:\_Data\TransfertsTemp\codes.docx"

Et je voudrais aussi adapter la macro pour que les codes ne soient pas séparés par la marque de paragraphe (pi), mais par le caractère | (sans espace avant et après).

Enfin j'ai aussi quelques instructions à ajouter qui existent sous word 2000 dans d'autres macros et que je voudrais ajouter à la suite de la macro présente pour que le processus se déroule en une fois de A à Z.
Mais cela je le préciserai dans une 2ème étape.

Pouvez-vous m'aider à fixer le problème de cette 1ère étape?

Merci
 

Pièces jointes

  • fruits-pour-macro-Vba.docx
    25.9 KB · Affichages: 140
  • codes.docx
    10.5 KB · Affichages: 122

stephsteph

XLDnaute Occasionnel
Re : souci macro VBA word 2000 sur 2007

Bonjour Modeste,

Merci de ta gentillesse.
Ce n’est pas une usine à gaz ou en tout cas si cela l’était ce serait bien plus simple qu’avant quand je traitais plusieurs milliers de fichiers un par un.
Aujourd’hui j’ai une seul fichier certes gros (5 Mo).

Je reprends ci-après la macro de formatage du titre (maintenant c'est $0$ et $1$).
Si j’active la ligne de centrage et que je remplace le code :
.Replacement.Text = ""
Par
.Replacement.Text = "^p"
après .Text = "$0$*$1$"
Le texte de mon titre disparaît avec la macro, il est remplacé par un « pi » qui lui est centré !
Enfin, j’aurais besoin de savoir où je place les 2 instructions type Application.ScreenUpdating=False,
Au début (et à la fin) de toute la macro globale (j’ai juxtaposé toutes les petites macros de formattage) ?
Ou bien avant chaque « with » et après chaque « end with »
Ou …

A+, Steph

Code:
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Size = 20
'    Selection.Find.Replacement.ParagraphFormat.Alignment = wdAlignParagraphCenter
    Selection.Find.Replacement.Font.Bold = True
    Selection.Find.Replacement.Font.Italic = True
    Selection.Find.Replacement.Font.UnderlineColor = wdColorAutomatic
    Selection.Find.Replacement.Font.Underline = True
    Selection.Find.Replacement.Font.AllCaps = True
     With Selection.Find
         .Text = "$0$*$1$"
         .Replacement.Text = ""
         .Forward = True
         .Wrap = wdFindContinue
         .Format = True
         .MatchCase = False
         .MatchWholeWord = False
         .MatchAllWordForms = False
         .MatchSoundsLike = False
         .MatchWildcards = True
     End With
     Selection.Find.Execute Replace:=wdReplaceAll
     Selection.Find.ClearFormatting
    With Selection.Find.Font
        .Size = 20
        .Bold = True
        .Italic = True
    End With
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "$0$"
        .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
    Selection.Find.ClearFormatting
    With Selection.Find.Font
        .Size = 20
        .Bold = True
        .Italic = True
    End With
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "$1$"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
 

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonsoir,

J'ai l'impression que je vais "tourner chèvre" avec tes '$2$' qui deviennent des '$0$' (d'autant que je travaille toujours sur le premier document qui contient d'autres '$0$' qui, eux, ne correspondent pas à des titres!)

Bref, je ne suis pas arrivé à reproduire ton souci :confused: mais ce qui suit me semble fonctionner (toujours sur l'ancien document!). J'ai ajouté les "Application.ScreenUpdating=..." (tout au début et tout à la fin, comme tu le verras)
VB:
Sub MFTitres()
    Application.ScreenUpdating = False
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Size = 20
    Selection.Find.Replacement.Font.Bold = True
    Selection.Find.Replacement.Font.Italic = True
    Selection.Find.Replacement.Font.UnderlineColor = wdColorAutomatic
    Selection.Find.Replacement.Font.Underline = True
    Selection.Find.Replacement.Font.AllCaps = True
    With Selection.Find
         .Text = "$0$*$1$"
         .Replacement.Text = ""
         .Forward = True
         .Wrap = wdFindContinue
         .Format = True
         .MatchCase = False
         .MatchWholeWord = False
         .MatchAllWordForms = False
         .MatchSoundsLike = False
         .MatchWildcards = True
     End With
     Selection.Find.Execute Replace:=wdReplaceAll
     Selection.Find.ClearFormatting
    With Selection.Find.Font
        .Size = 20
        .Bold = True
        .Italic = True
    End With
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "$0$"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    With Selection.Find.Font
        .Size = 20
        .Bold = True
        .Italic = True
    End With
    Selection.Find.Replacement.ParagraphFormat.Alignment = wdAlignParagraphCenter
    With Selection.Find
        .Text = "$1$"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Application.ScreenUpdating = True
End Sub
 

stephsteph

XLDnaute Occasionnel
Re : souci macro VBA word 2000 sur 2007

Bonjour Modeste,

Merci pour ta gentillesse, et en plus pour ta patience.
La rationalité et moi cela fait 2, peut-être même 3 !

Maintenant cela marche super bien et tout est résolu.

1000 Mercis

Steph

PS: Je marque le fil comme résolu (et si je peux, je modifierai l’en-tête car ces macros (codes italique et formattages divers) seront vraiment utiles, je pense, à plein d’autres… grâce à toi
 

Discussions similaires

Réponses
5
Affichages
223

Statistiques des forums

Discussions
312 027
Messages
2 084 758
Membres
102 655
dernier inscrit
STA82700