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

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonsoir stephsteph, JM :)

Je ne sais pas pourquoi, mais celle-là, je la sentais venir! :rolleyes:

... même si je trouve que notre agrafe rouille un peu: je l'attendais quelques jours plus tôt sur
jeune inconsciente à dit:
En espérant que le "maître" corrigera !


à mon tout de sortir (1492 ... j'te jure! C'qu'y faut pas entendre!)
 

Staple1600

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonsoir Modeste

Bien vu ;)

Au fait, toi et Word ?
Ça fait 1492 ou 1493 ?
(oui je sais c'est très léger)

T'aurais pas une idée de code VBA "wordique" pour aider stephsteph à défaut de la corriger ;) ?

NB
:Quant à moi je peux pas décemment m'attifer ainsi devant mon tableur chéri.
Que nenni!
d5c3_ttonO7eHKD9Yv2PZF5ItKY@500x375.jpg
 

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonsoir Hmmm être! (oui je sais, c'est assez moyen ... mais moi ça me fait sourire vaguement :p)

T'aurais pas une idée de code VBA "wordique"
Je n'ai suivi votre échange que d'assez loin et j'avoue ne pas arriver à bien comprendre ce que la macro devrait faire ... peut-être le code complet m'éclairera-t-il avec le (les ?) fichier(s) concerné(s)?
 

stephsteph

XLDnaute Occasionnel
Re : souci macro VBA word 2000 sur 2007

Bonjour Staple 1600 et Modeste.

Si la projet n'est pas clair je le reprend ci-après.
Entre nous je ne comprend pas bien vos échanges (sauf qu'ils sont très mâles).
Le projet devait (par rapport à une VBA précédente qui utilisait un process très différent):
- mettre en italique des mots dans un fichier code... c'est résolu sauf que je souhaitais changer le séparatueur de mots (depuis "pi" vers "|")
- mettre en deux colonnes un texte entre deux séparateurs (dans la dernière version entre $1$ et $2$), avec Staple on est arrivé jusqu'à un code qui fait la première occurence de texte entre les 2 séparateurs, mais pas les suivantes
- il y avait d'autres manipulations de formatage de texte dans le projet précédent (cf. code ci-après), mais je les ferai manuellement (comme la suppression de $1$ et $2$ qui restent après la macro en 2 colonnes)
- le code précédent partait (si je me souviens bien) d'une série de pages html (des miliers) pour les formatter.
Ici (en 15 ans, les fichiers txt ont pu accepter des tailles très importantes et maintenant je pars d'un fichier en txt (généré par une macro Excel sur des fichiers xls) qui pèse 25 Mo et je le copie dans Word 2007.
C'est sur ce fichier word que je ferai tournai la ou les macros (ici fruits-pour-macro-VBA.docm).

Merci de votre aide (en binôme...)

A+ Steph

Donc voici le vieux code:

Code:
Option Base 0
Sub Integration()
Dim NomR, NomF(3000) As String
Dim iMax As Integer
    Message = "Entrez le chemin sur lequel se trouvent les fichiers HTM"    ' Définit le message.
    Title = "Saisie du répertoire de travail"    ' Définit le titre.
    NomR = "D:\_Data\TransfertsTemp\"    ' Définit la valeur par défaut.
    NomR = InputBox(Message, Title, NomR)
    If NomR = "" Then Exit Sub
    If Len(Trim(Dir(NomR + "1-Cumul.doc"))) = 0 Then
        MsgBox "Il faut que le fichier 1-Cumul.doc soit sur ce répertoire!"
        Exit Sub
    End If
    Selection.HomeKey Unit:=wdStory
    Selection.EndKey Unit:=wdStory, Extend:=wdExtend
    Selection.Delete
    NomF(0) = Dir(NomR & "*.htm")
    Selection.TypeText Text:=NomF(0)
    Selection.TypeParagraph
    i = 0
    Do While True
        NomF(0) = Dir
        If NomF(0) = "" Then Exit Do
        Selection.TypeText Text:=NomF(0)
        Selection.TypeParagraph
        i = i + 1
    Loop
    iMax = i
    Selection.HomeKey Unit:=wdStory
    Selection.EndKey Unit:=wdStory, Extend:=wdExtend
    Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphes", _
        SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _
        FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _
        :=wdFrench
    Selection.HomeKey Unit:=wdStory
    Selection.Delete
    i = 0
    Do While i < iMax + 1
        Selection.HomeKey Unit:=wdStory
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        NomF(i) = Selection.Text
        Selection.HomeKey Unit:=wdStory
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        Selection.Delete
        i = i + 1
    Loop
    i = 0
    Do While i < iMax + 1
'        Selection.TypeText Text:=NomF(i)
'        Selection.Style = ActiveDocument.Styles("Titre 1")
'        Selection.EndKey Unit:=wdLine
'        Selection.TypeParagraph
        Documents.Open FileName:=NomR + NomF(i), ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto
        
        ActiveDocument.SaveAs FileName:=NomR + "Page.doc", FileFormat:=wdFormatDocument, _
            LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
            :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
            SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
            False
        ActiveDocument.Background.Fill.Visible = msoFalse
        
        Selection.WholeStory
        With Selection.Font
            .Underline = wdUnderlineNone
            .UnderlineColor = wdColorAutomatic
            .StrikeThrough = False
            .DoubleStrikeThrough = False
            .Outline = False
            .Emboss = False
            .Shadow = False
            .Hidden = False
            .SmallCaps = False
            .AllCaps = False
            .Color = wdColorAutomatic
            .Engrave = False
            .Superscript = False
            .Subscript = False
            .Spacing = 0
            .Scaling = 100
            .Position = 0
            .Kerning = 0
            .Animation = wdAnimationNone
        End With
        Selection.HomeKey Unit:=wdStory
        Selection.MoveDown Unit:=wdLine, Count:=2, Extend:=wdExtend
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "^l"
            .Replacement.Text = "^p"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        Selection.HomeKey Unit:=wdStory
        Selection.Style = ActiveDocument.Styles("Titre 1")
' mise en page
        With ActiveDocument.PageSetup
            .LineNumbering.Active = False
            .Orientation = wdOrientPortrait
            .TopMargin = CentimetersToPoints(1)
            .BottomMargin = CentimetersToPoints(1)
            .LeftMargin = CentimetersToPoints(1)
            .RightMargin = CentimetersToPoints(1)
            .Gutter = CentimetersToPoints(0)
            .HeaderDistance = CentimetersToPoints(0.8)
            .FooterDistance = CentimetersToPoints(0.8)
            .PageWidth = CentimetersToPoints(21)
            .PageHeight = CentimetersToPoints(29.7)
            .FirstPageTray = wdPrinterDefaultBin
            .OtherPagesTray = wdPrinterDefaultBin
            .SectionStart = wdSectionNewPage
            .OddAndEvenPagesHeaderFooter = False
            .DifferentFirstPageHeaderFooter = False
            .VerticalAlignment = wdAlignVerticalTop
            .SuppressEndnotes = False
            .MirrorMargins = False
            .TwoPagesOnOne = False
            .GutterPos = wdGutterPosLeft
        End With

' fin de mise en page
        
' sélectionne entre 2 mots
        
  With ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = CentimetersToPoints(0.8)
        .BottomMargin = CentimetersToPoints(0.8)
        .LeftMargin = CentimetersToPoints(1.5)
        .RightMargin = CentimetersToPoints(0.5)
        .Gutter = CentimetersToPoints(0)
        .HeaderDistance = CentimetersToPoints(0.7)
        .FooterDistance = CentimetersToPoints(0.7)
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = True
        .TwoPagesOnOne = False
        .GutterPos = wdGutterPosLeft
    End With
    With Selection.ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)
        .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 12
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpaceSingle
        .Alignment = wdAlignParagraphLeft
        .WidowControl = True
        .KeepWithNext = False
        .KeepTogether = False
        .PageBreakBefore = False
        .NoLineNumber = False
        .Hyphenation = True
        .FirstLineIndent = CentimetersToPoints(0)
        .OutlineLevel = wdOutlineLevelBodyText
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
    End With
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "(IDENT:)(*)($$)"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type <> wdPrintView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
        InsertBreak Type:=wdSectionBreakContinuous
    Selection.Start = Selection.Start + 1
    ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _
         Type:=wdSectionBreakContinuous
    With Selection.PageSetup.TextColumns
        .SetCount NumColumns:=2
        .EvenlySpaced = True
        .LineBetween = True
        .Width = CentimetersToPoints(9.3)
        .Spacing = CentimetersToPoints(0.4)
    End With
        
' fin subroutine 2 colonnes
        
        
        
        ActiveDocument.Save
        ActiveDocument.Close
        Selection.InsertFile FileName:=NomR + "Page.doc", Range:="", ConfirmConversions:= _
            False, Link:=False, Attachment:=False
        With Selection.ParagraphFormat
            .LeftIndent = CentimetersToPoints(0)
            .RightIndent = CentimetersToPoints(0)
            .SpaceBefore = 12
            .SpaceBeforeAuto = False
            .SpaceAfter = 3
            .SpaceAfterAuto = False
            .LineSpacingRule = wdLineSpaceSingle
            .Alignment = wdAlignParagraphLeft
            .WidowControl = True
            .KeepWithNext = True
            .KeepTogether = False
            .PageBreakBefore = True
            .NoLineNumber = False
            .Hyphenation = True
            .FirstLineIndent = CentimetersToPoints(0)
            .OutlineLevel = wdOutlineLevel1
            .CharacterUnitLeftIndent = 0
            .CharacterUnitRightIndent = 0
            .CharacterUnitFirstLineIndent = 0
            .LineUnitBefore = 0
            .LineUnitAfter = 0
        End With
        i = i + 1
    Loop
    ActiveDocument.Save
    If Len(Trim(Dir(NomR + "Page.doc"))) > 0 Then Kill (NomR + "Page.doc")
    With ActiveDocument.Styles("Titre 1")
        .AutomaticallyUpdate = True
        .BaseStyle = "Normal"
        .NextParagraphStyle = "Normal"
    End With
    With ActiveDocument.Styles("Titre 1").Font
        .Name = "Times New Roman"
        .Size = 18
        .Bold = True
        .Italic = True
        .Underline = wdUnderlineNone
        .UnderlineColor = wdColorAutomatic
        .StrikeThrough = False
        .DoubleStrikeThrough = False
        .Outline = False
        .Emboss = False
        .Shadow = False
        .Hidden = False
        .SmallCaps = False
        .AllCaps = True
        .Color = wdColorAutomatic
        .Engrave = False
        .Superscript = False
        .Subscript = False
        .Scaling = 100
        .Kerning = 14
        .Animation = wdAnimationNone
    End With
    With ActiveDocument.Styles("Titre 1").ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)
        .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 12
        .SpaceBeforeAuto = False
        .SpaceAfter = 3
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpaceSingle
        .Alignment = wdAlignParagraphCenter
        .WidowControl = True
        .KeepWithNext = True
        .KeepTogether = False
        .PageBreakBefore = True
        .NoLineNumber = False
        .Hyphenation = True
        .FirstLineIndent = CentimetersToPoints(0)
        .OutlineLevel = wdOutlineLevel1
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
    End With
    Selection.Style = ActiveDocument.Styles("Titre 1")
    Selection.HomeKey Unit:=wdStory
    With ActiveDocument
        .TablesOfContents.Add Range:=Selection.Range, RightAlignPageNumbers:= _
            True, UseHeadingStyles:=True, UpperHeadingLevel:=1, _
            LowerHeadingLevel:=1, IncludePageNumbers:=True, AddedStyles:="", _
            UseHyperlinks:=True, HidePageNumbersInWeb:=True
        .TablesOfContents(1).TabLeader = wdTabLeaderDots
        .TablesOfContents.Format = wdIndexIndent
    End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonsoir à tous


stephsteph

Entre nous je ne comprend pas bien vos échanges (sauf qu'ils sont très mâles).
C'est juste de l'humour distillé comme cela suite à cette petite phrase de ta part
Si tu me dis "oui" je mets le code complet lors du prochain post.

Bon revenons à ta question

1)Ton vieux code n'a pas les mêmes noms de fichiers que dans ton premier message.
Cela complique la compréhension de ta question.

2) Peux-tu joindre, stp, un extrait du résultat final à obtenir (juste quelques lignes réalisées manuellement) ?
(Une sorte d'avant/après : donc joindre deux petits fichiers avant.doc et après.doc ou même un seul *.doc avec en page 1 AVANT et en page 2 APRES )
 

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonsoir,

Décidément, l'ancien code ne m'aura pas aidé à comprendre ...
  • J'ai repris le fichier "fruits-pour-macro-Vba.docm" du message #5
  • Dans ce fichier, j'ai fait comme stephsteph l'indiquait au message #10: "j'ai remplacé dans mon texte <2> par $0$ et </2> par $1$"
    Pour ma part, je les ai surlignés respectivement en vert et jaune (mais c'était juste pour m'aider à y voir clair ... enfin essayer :rolleyes:)
  • ... et puis (avec ce que j'ai compris) j'ai essayé de trouver un système pour mettre en 2 colonnes -avec ligne séparatrice- le texte compris entre $0$ et $1$. J'ai mis en commentaire les largeurs de colonnes et l'espacement entre celles-ci, puisqu'elles ne correspondent pas à la position des marges, sur ma machine.
Était-ce bien ce qu'il fallait faire? Rien, dans le texte lui-même ne permet de le déterminer :(
Si c'était bien là la demande, tester le fichier joint en vérifiant, avant exécution, si les $0$ et $1$ sont correctement positionnés, puis, après exécution, si le résultat est conforme aux attentes.

Attention: ce code ne saurait fonctionner correctement que s'il y a chaque fois une paire de $0$ et $1$ correctement assortis!! La rédaction ne saurait être tenue pour responsable et bla bla bla ...

Bonne nuit
 

Pièces jointes

  • Test fruits (Modeste).zip
    28.4 KB · Affichages: 97

stephsteph

XLDnaute Occasionnel
Re : souci macro VBA word 2000 sur 2007

Bonjour à tous les deux!

1000 excuses, question communication je repasserai.
J'aurais dû mettre un émotikon de blague après mes "mâles".

Bon pour la macro, Modeste, tu as très bien compris et c'est parfait.

Donc sur ta lancée j'ai voulu faire un exercice similaire pour le formattage des titres, en adaptant ta macro colonnes.
Mais j'ai encore de gros progrès à faire :

voici le code:

Code:
    Sub titres()
    Application.ScreenUpdating = False
    Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "$3$"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.Find.Execute Replace:=wdReplaceOne
    With Selection
        Do While .Find.Found = True
            .Find.Execute
            .Find.Execute Replace:=wdReplaceOne
        Loop
    End With
    Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "$2$"
        .Replacement.Text = "^m"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.Find.Execute Replace:=wdReplaceOne
    With Selection
        Do While .Find.Found = True
'       With ActiveDocument.Styles("Titre 1").Font
'       With .Selection.Font
'       With .PageSetup.TextColumns
    Selection.Font.Size = 18
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    Selection.Font.Bold = wdToggle
    Selection.Font.Italic = wdToggle
    Selection.Font.UnderlineColor = wdColorAutomatic
    Selection.Font.Underline = wdUnderlineSingle
            End With
            .Find.Execute
            .Find.Execute Replace:=wdReplaceOne
        Loop
    End With
    Application.ScreenUpdating = True
End Sub

Comme tu le vois j'ai essayé plusieurs formulations pour le with d'après des googelisations sur Internet mais cela ne marche pas (il ne veut pas mettre mes titres en 18 gras, italique, souligné, etc.).


Remarque : dans ton fichier zippé il faut (de mémoire) changer <1> par $2$ et </1> par $3$ si tu veux tester.
 

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonjour stephsteph, l'homme invisible :rolleyes:,

stephsteph, il aurait tout de même été plus sympathique (comme te le soufflais notre agrafe) de joindre un bout de fichier actualisé (c'est-à-dire un fichier où tu aurais fait toi-même le remplacement des <1> par $2$ et autres). Non pas que la chose fatigue nos menottes perclues d'arthrite ou nos yeux chassieux, mais plus pour le principe: "c'est le demandeur qui fait l'effort de fournir un matériel adapté"

Si j'ai bien compris, encore une fois et qu'il s'agit de mettre en gras le texte entre tes "balises", teste ce qui suit (ce devrait être plus simple -et donc plus court- que la demande précédente)
VB:
Sub majuscules()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Bold = True
    With Selection.Find
        .Text = "$2$*$3$"
        .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
End Sub
Il ne te restera plus, ensuite, qu'à supprimer toutes les occurences de $2$ et $3$ dans tout le document.

Il est peut-être possible de faire plus simple, pour les deux codes proposés, mais je n'ai pas mieux en magasin!
 

stephsteph

XLDnaute Occasionnel
Re : souci macro VBA word 2000 sur 2007

Bonjour Modeste,

Merci et c'est très simple.
Je voudrais tout de même chercher pourquoi mon code ne marchait pas.
Je vais essayer en utilisant le moteur mais avec "remplacer" cette fois.
Entre parenthèses Modeste, pourquoi (question de béotienne) ce code simple ne pouvait pas être utilisé pour la macro avec 2 colonnes?

Pour le fichier attaché tu as raison et j'y avais pensé mais j'avais oublié qu'il fallait un zip (docm est impossible sur ce forum en attaché) et l'autre jour je n'avais pas de fichier zip et pas de possibilité d'en faire sur le PC utilisé.

Donc mes plates excuses sans hésiter.

L'appétit venant en mangeant un sous-projet que j'avais abandonné depuis longtemps m'est revenu à l'esprit.

Originellement tu as vu que la vieille macro passait par des fichiers html ce qui avait l'avantage de pouvoir rapatrier les illustrations.
Maintenant j'ai un très gros fichier txt que je copie dans Word.
Bien sûr je peux (lors de la macro VBA excel) demander, comme pour les $i$, d'ajouter du code... mais cela ne fait pas apparaître les illustrations une fois copié dans Word!!!

Donc voici la question (pour un champion comme on dit à la télé), serait il possible d'avoir une macro qui reconnaitrait un code entre 2 caractères (par exemple entre ££ ou || ou @@, mais pas $$ cette fois) qui permettrait d'aller chercher dans un sous-dossier une jpg avec un nom de fichier identique au code entre les 2 caractères précédents.
J'aurais alors un fichier (comme le fichier code.docm mentionné au début, pour les italiques) appelé par exemple illustrations.docm dans lequel figureraient tous les codes qui dans fruitsetc.docm pourraient être mentionnés entre les 2 fameux caractères.

Prenons un exemple simple... dans illustrations.docm, j'ai "avocat123" qui se trouve aussi à un endroit entre les 2 fameux caractères dans fruitsetc.docm.
La macro trouverait l'occurrence et irait chercher la jpg dans le sous-dossier pour l'afficher dans le doc Word à la place de l'occurrence entre les 2 caractères.

Voilà qu'en penses-tu? Est-que cela peux te titiller comme idée-projet?

Si oui, alors je te prépare les fichiers pour Mardi prochain.
Sinon, pas de souci, tu m'as déjà beaucoup aidé.

Ce WE je vais tester les 3 macros (italiques, 2 colonnes, et majuscules) en vraie grandeur et je te dis.

J'espère qu'il fait beau chez toi en Wallonie (?) comme ici à Paris (depuis seulement aujuourd'hui), sinon je t'envoie le soleil et la chaleur avec l'habituel vent d'Ouest.

Steph
 

Staple1600

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonsoir à tous

stephsteph
l'autre jour je n'avais pas de fichier zip et pas de possibilité d'en faire sur le PC utilisé.
Si le PC tourne sous XP
Clic-droit sur le fichier Excel fermé (dans l'explorateur Windows) puis choisir :
Envoyer vers Dossiers Compressés
Et tu obtiendras un fichier *.zip ;)

L'appétit venant en mangeant un sous-projet que j'avais abandonné depuis longtemps m'est revenu à l'esprit.
ce nouveau projet n'a plus rien à voir avec le sujet initial, aussi me permettrai-je cette suggestion:
Il serait plus simple de créer un nouveau fil pour cette nouvelle question (en mettant un lien vers celui-ci si besoin il y a)
Ceci afin qu'on ne se mélange pas les pinceaux ;)

Qu'en penses-tu ?
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Salut stephsteph, JM ... et puis tous les autres,

stephsteph à dit:
pourquoi (question de béotienne) ce code simple ne pouvait pas être utilisé pour la macro avec 2 colonnes?
Ma foi, l'explication en est fort simple, elle aussi: "parce que je n'ai pas trouvé de système qui permettait de faire simple" :eek: Pour la mise en colonnes, je me suis dit qu'il fallait à chaque début et fin de portion de texte, insérer un saut de section continu, puis mettre le texte entre ces deux sauts de section, en colonnes. Comme je ne suis pas non plus familier des macros sous Word, j'ai "bricolé" avec les moyens du bord!

Pour cette même raison, je ne vais certainement pas m'engager plus avant dans ce projet qui t'a ouvert l'appétit: j'aurais bien trop peur de créer une usine à gaz monstrueuse à force de "bricolages superposés" (et puis je fais attention à ma ligne, moi, Madame! ;) pas comme certain que je connais, qui vient de grimper à 19 tonnes!!)


encore stephsteph à dit:
Donc mes plates excuses sans hésiter
Il faut quand même que je te dise que j'ai suivi le fil, dès le début, notamment en raison de la bonhommie (c'est encore très mâââle, mais là je ne suis pas responsable :rolleyes: c'est la faute au dictionnaire!) avec laquelle tu acceptes les remarques et conseils! On en perd un peu l'habitude, ces derniers temps, ici! Merci donc, à toi aussi, pour ces instants de fraîcheur :)

Plein soleil, ici aussi (en Wallonie, oui)

Bonne continuation,
 

Staple1600

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Re

Modeste
Il faut quand même que je te dise que j'ai suivi le fil, dès le début, notamment en raison de la bonhommie (c'est encore très mâââle, mais là je ne suis pas responsable :rolleyes: c'est la faute au dictionnaire!) avec laquelle tu acceptes les remarques et conseils! On en perd un peu l'habitude, ces derniers temps, ici! Merci donc, à toi aussi, pour ces instants de fraîcheur :)
Tu as ma foi fort raison sur ce point ;)
Je me permets donc de joindre mon merci à ton merci pour l’aménité dont fait preuve stephsteph ;)

NB: Tout comme toi, je commence à sentir le gaz dans ce fil ;) mais ce n'est pas grave. ;)

Que penses-tu de ma suggestion d'ouvrir un autre fil pour cette histoire d'images ?
 

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Re (aussi)

je commence à sentir le gaz dans ce fil ;)
Ah mais non, s'il te plaît! Épargne-nous ces considérations nauséabondes :mad:


mais ce n'est pas grave. ;)
Tout de même, après avoir évoqué la fraîcheur diffusée dans ce coin du forum, ça jette un froid!


Que penses-tu de ma suggestion d'ouvrir un autre fil pour cette histoire d'images ?
Là, nous sommes d'accord :) Même si ça va demander à stephsteph un effort pour synthétiser, structurer et étayer sa nouvelle demande, parce que ça devient "costaud"!
 

stephsteph

XLDnaute Occasionnel
Re : souci macro VBA word 2000 sur 2007

Bonjour Modeste,

Merci de ta gentillesse.
Ce n’est pas de la bonhommie mais du respect pour les bénévoles de ce forum et tu le mérites bien.
En fait les macros me stressent bcp !
J’ouvre un nouveau fil pour la question de « gourmandise ».

Sur ce fil les tests ont bien marché, sauf :
- La mise en italique des mots clés depuis codes.docm (cela prend 3 heures 40 avec un processus double cœur) ! Possible de réduire le temps un peu ?
- Quelques remarques de Word en cours de processus de la mise en 2 colonnes (ta macro colonnes) du type « un problème s’est produit. Une fois terminé, cette action ne pourra pas être annulée, OK » et (3 fois en cours) document trop volumineux pour être enregistré, supprimer du texte avant enregistrement, OK ». En passant outre , c’est bon (et le fichier ne fait que 5Mo)
- Pour le formattage en majuscules (ta macro) j’ai ajouté bold et italics, c’est OK, mais si j’ajoute « Selection.Find.Replacement.ParagraphFormat.Alignment = wdAlignParagraphCenter » il met centré tout le texte (pas seulement le titre, si je désactive l’instruction, le titre reste à gauche, mais tout le reste est bon. Comment faire ?

Des idées pour un dernier petit coup de pousse ?
merci Steph
 

Modeste

XLDnaute Barbatruc
Re : souci macro VBA word 2000 sur 2007

Bonjour,

Ce que tu indiques ici confirme l'idée de "l'usine à gaz" ... surtout sur tes fichiers réels, qui ont l'air "costauds" et nombreux (de ce que j'ai cru comprendre!?)

Pour l'alignement des paragraphes, dans le fichier que tu avais déposé, il n'y a ... qu'un seul et unique paragraphe! L'alignement centré de tout le texte est donc inévitable :eek: Dans tes fichiers, je ne sais pas ce qu'il en est?
Une piste possible serait de rechercher d'abord les '$3$' et de les remplacer par '$3$^p', avant d'exécuter le code que j'avais proposé. Mais, une fois encore, c'est rajouter une couche de crème sur un gâteau qui tangue déjà!

Pour ce qui est du temps d'exécution (et sans parler de l'usine à gaz, déjà évoquée) tu peux essayer (sans garantie!) d'ajouter un Application.ScreenUpdating=False au début du code ... et son petit frère: Application.ScreenUpdating=True, cette fois, en fin de code.
 

Discussions similaires

Réponses
5
Affichages
223