Bonjour à tous
je souhaite accéder à des shapes qui sont dans un Word existant pour modifier leur contenu. Le problème c'est qu'on ne peut pas les renommer sous Word. J'ai donc fais une boucle For Each pour les trouver à partir de leur contenu

Voici mon code (simplifié):

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
17
18
19
20
21
22
23
24
25
26
27
28
Sub EditWord()
 
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim WordFile As String
 
    'Spécifie le chemin d'accès
    WordFile = MyDir & "\WordFile.docx"
    Set WordApp = CreateObject("Word.Application")
    'Affiche Word
    WordApp.Visible = True
    'Ouvre le document
    Set WordDoc = WordApp.Documents.Open(WordFile)
 
    .Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=2
     WordApp.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocumen
 
    Dim Sh As Shape
    With WordApp
    For Each Sh In .ActiveDocument.Shapes
        .ActiveDocument.Shapes(Sh.Name).Select
        If .Selection.Text = "blabla" Then
              .Selection.Text = "blablablabla"
        End If
    Next Sh
    End With
 
End sub
Le problème c'est que VB plante sur la ligne "For Each Sh In .ActiveDocument.Shapes" en affichant :"erreur d’exécution '13': incompatibilité de type"
J'ai recherché la solution sur plusieurs forums mais sans succès
Merci d'avance de votre aide