Bonjour à tous,

J'aurai besoin de petit coup de pouce pour un problème qui jusqu'alors est resté insoluble pour moi.

Je m'explique: j'ai créée un document Word "standart" constitué de plusieurs tables à l'intérieur desquelles il y a soit des champs de type liste déroulante soit des champs texte.

Mon objectif est de récupérer une partie des informations contenues dans ces tables: toutes les valeurs choisies dans les listes déroulantes et une partie des champs texte. (et ce pour 70 documents en gros)

Pour le moment, j'utilise cette macro basique et pas très pratique pour ce que je souhaite faire (les copier coller sur excel me font une mise en page pas terrible et je ne sais pas a priori combien de copier coller je vais devoir faire) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Sub Macro1()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
    Set WordApp = CreateObject("word.application")
    WordApp.Visible = False
    Set WordDoc = WordApp.Documents.Open("Mondocument")
    WordDoc.Tables().Rows().Cells().Range.Copy
    Range("").PasteSpecial xlPasteValues
    WordDoc.Close
    WordApp.Quit
End Sub
J'ai donc cherché à faire une macro plus "évoluée" et surtout plus adaptée mais pour le moment le résultat n'est pas concluant, j'aurai donc aimé savoir ce qui ne fonctionne pas dans ce code dont je me suis inspiré et que j'ai cherché à adapter à mon usage:

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Sub ImportWord()
 
Dim Wd As Word.Application
Dim filename As String
Dim i As Byte
 
 'On affiche la boite de dialogue pour sélectionner le fichier
 
    filename = Application.GetOpenFilename("Fichier Word (*.docx*),*.docx*", 1, "Sélectionnez un document Word", "Ouvrir", False)
 
    'On vérifie qu'un fichier a été sélectionné
 
    If filename <> "" Then
        filename = LCase(filename)
        'et qu'il s'agit d'un document word
 
        If Right(filename, 3) = "doc" Or Right(filename, 4) = "docx" Then
 
            'Créer une instance de word
 
            Set Wd = New Word.Application
 
            With Wd
 
                'Empêche Word de s'afficher à l'ouverture
 
                .Visible = False
 
                'Ouverture du document
 
                .Documents.Open (filename)
 
                'Dévérouillage du document
 
                ActiveDocument.Protect Type:=wdNoProtection
 
                'Parcours de tous les champs de toutes les tables word du document
 
                Dim Tbl As Table
 
                Dim f As Field
 
                For Each Tbl In ActiveDocument.Tables
 
                        For Each f In ActiveDocument.Fields
 
                            'Nom du champs
 
                            Cells(1, f.Index).Value = .ActiveDocument.FormFields(f.Index).Name
 
                            'Valeur du champs si case à cocher
 
                                If f.Type = 71 Then
                                    Cells(2, f.Index).Value = .ActiveDocument.FormFields(f.Index).CheckBox.Value
 
                                Else 'autres champs
 
                                    Cells(2, f.Index).Value = f.Result.Text
                                End If
 
                        Next f
 
                Next Tbl
 
                'Ferme le document Word
 
                .Quit False
 
            End With
 
            'Destruction de l'objet word
 
            Set Wd = Nothing
 
        End If
 
    End If
 
End Sub