Bonjour à tous,

J'essaye de piloter Word depuis Excel. L'idée c'est de faire une macro Excel qui va ouvrir un fichier Word et ensuite rechercher des mots pour les mettre dans un tableau.

Voici le code que je suis en train de tester :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Function getWordQuestions() As String()
 
    Dim tableau() As String
    Dim index As Integer
    index = 0
 
    'récuperation du fichier word:
    Dim docPath As String
    docPath = getFilePath()
 
    'ouverture du fichier
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
 
    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Open(docPath, ReadOnly:=True)
 
    Set docContent = WordDoc.Content
 
    With docContent.Find
        .ClearFormatting
        .Font.Size = 11
        .Style = "NUMBER AND NAME OF VARIABLE"
        .Format = True
        .Forward = True
        While .Execute
            MsgBox docContent.Text
            If Len(docContent.Text) > 2 Then
                ReDim Preserve tableau(index + 1) As String
                tableau(index) = docContent.Text
                index = index + 1
            End If
        Wend
    End With
 
    WordDoc.Close (wdDoNotSaveChanges)
    WordApp.Quit
 
    getWordQuestions = tableau
 
End Function
Le code marche bien, mais j'ai un soucis lors qu'il trouve le texte C10 & C15. En effet la boucle While .execute n'arrive pas à passer au mot suivant. Si dans mon document Word j'ai les mots suivants :
S.40
S.45
S.60
S.100& S.105
C.10 & C.15
C.20

Je vois bien les MsgBox des 3 premiers mots, mais une fois le texte C10 & C15 trouvé, je n’arrête pas de voir le MsgBox "C.10 & C.15", dans une boucle infini. Je n'arrive jamais à voir C20.

Avez-vous une idée de pourquoi cela est en train d'arriver ?

Je vous remercie d'avance,
Marc