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) :
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 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
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
Partager