Bonjour à tous,
je suis débutant et c'est ma première macro en vba.
Voilà, j'aimerais changer un texte dans plusieurs documents. Le problème, c'est que tous mes textes se trouvent dans des cadres textes qui peuvent être groupés ensemble. Voici où j'en suis aujourd'hui.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub ScanDossier() On Error Resume Next Dim sh, f, fold Set sh = CreateObject("Shell.Application") Set f = sh.BrowseForFolder(0, "", 592) fold = f.Items.Item.Path If Err.Number <> 0 Then Exit Sub TraiteDossier fold End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub TraiteDossier(fold) Dim f, fs Set fs = CreateObject("Scripting.FileSystemObject") For Each f In fs.getFolder(fold).Files If Right(f.Name, 5) = ".docx" Then traiteFic (f) Next For Each f In fs.getFolder(fold).Subfolders TraiteDossier f.fullpath Next End SubMon problème se situe sur la procédure traiteFic().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub traiteFic(f) Documents.Open FileName:=f For Each S In ActiveDocument.Shapes For Each it In S.Item Set myRange = it.Range With myRange.Find .Text = "angle" .Replacement.Text = "secteur angulaire" End With Selection.Find.Execute Replace:=wdReplaceAll ActiveDocument.Close wdSaveChanges Next it Next S End Sub
J'aimerais pouvoir parcourir toutes les frames et tous les cadres textes pour remplacer tous les mots angle par secteur angulaire
D'avance merci.
Partager