Bonjour le forum !
Je suis en train de développer mon application pour mon travail. Le soucis c'est que depuis la fin de la matinée je bute sur mon code car une erreur c'est générée je ne sais trop comment... Le code marchait bien avant que j'ajoute mes différentes Variables que je transfères dans word.
Je vous poste le code de mon Userform ou ce trouve "le bug", l'UF s’appelle uf2, le fichier word Glossaire.docm et l'Excel Glossaire.xlsm :
Le code bloque à la ligne 103, ce qui est bizarre c'est que j'ai changé peu de code mais n'ayant qu'une tête de linote je ne sais qu'est ce qui peut faire tilter le code ...
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 Private Sub cancel_Click() Unload Me End Sub Private Sub liste_phase_Change() If liste_phase.ListIndex = 0 Then signet.Value = Sheets("Listing").Range("H3").Value & "_" End If If liste_phase.ListIndex = 1 Then signet.Value = Sheets("Listing").Range("H4").Value & "_" End If If liste_phase.ListIndex = 2 Then signet.Value = Sheets("Listing").Range("H5").Value & "_" End If If liste_phase.ListIndex = 3 Then signet.Value = Sheets("Listing").Range("H6").Value & "_" End If If liste_phase.ListIndex = 4 Then signet.Value = Sheets("Listing").Range("H7").Value & "_" End If If liste_phase.ListIndex = 5 Then signet.Value = Sheets("Listing").Range("H8").Value & "_" End If End Sub Private Sub ok_click() Application.ScreenUpdating = False 'Déclaration des variables Dim métier As String Dim phase As String Dim place As String Dim signet_edité As String Dim textFile As Object Dim Textline As String Dim textFileName As String Dim bloc_instruction As String Dim bloc_instruction2 As String Dim wdApp As Word.Application If puissance.Value = True Then métier = "Puissance" ElseIf signal.Value = True Then métier = "Signal" ElseIf optique.Value = True Then métier = "Optique" End If If métier = " " Then MsgBox ("Veuillez selectionner un métier.") GoTo test2 End If test2: If signet = " " Then MsgBox ("Veuillez générer le signet.") GoTo fin End If phase = liste_phase.Value signet_insérer = signet.Value bloc_instruction = nom_bloc_intruction.Value bloc_instruction2 = Replace(nom_bloc_intruction.Value, " ", "_") i = Range("B10").End(xlDown).Offset(1, 0).Row 'Déclarations des variables Excel qui doivent être transféré sur Word. YourVariable = bloc_instruction2 YourVariable2 = bloc_instruction YourVariable3 = signet.Value Cells(i, 1).EntireRow.Insert Cells(i, 2).Value = métier Cells(i, 3).Value = phase Cells(i, 4).Value = bloc_instruction Cells(i, 5).FormulaLocal = "=LIEN_HYPERTEXTE(""[""&'Listing'!$E$3&""]" & signet_insérer & bloc_instruction2 & """;""Lien"")" 'Set wdApp = CreateObject("Word.Application") 'wdApp.Documents.Open "W:\Système\Glossaire.docm" 'wdApp.Visible = True Dim WordDoc As Word.Document 'nécéssite d'activer la reference Microsoft word xx.x 0bject Library If WordDoc Is Nothing Then 'MsgBox "Le document est fermé" 'On Error Resume Next Set wdApp = GetObject(, "Word.Application") Set WordDoc = wdApp.Documents("W:\Système\Glossaire.docm") 'On Error GoTo 0 wdApp.Run "créer_bloc_instruction", [YourVariable], [YourVariable2], [YourVariable3] Else 'MsgBox "Le document est ouvert" wdApp.Run "créer_bloc_instruction", YourVariable ', YourVariable2, YourVariable3 'WordDoc.Close 'fermeture de l'application Word End If fin: Unload Me End Sub Private Sub signet_Change() 'signet.Text = signet_edité.Value End Sub Private Sub userForm_Initialize() With Me.liste_phase For i = 3 To 8 .AddItem Sheets("Listing").Cells(i, 7).Value Next End With With Me .startUpPosition = 2 .Left = Application.Width - Me.Width End With End Sub
Cet userform est présent dans mon fichier Excel. Et je vous poste maintenant le contenu de ma macro qui est exécute dans Word :
L'erreur est de type :
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 Sub créer_bloc_instruction(VariableFromXL As String, VariableFromXL2 As String, VariableFromXL3 As String) Dim a As String Dim b As String Dim c As String a = VariableFromXL b = VariableFromXL2 c = VariableFromXL3 MsgBox ("Variable 1 = " & VariableFromXL & " " & Chr(10) & "Variable 2 = " & VariableFromXL2 & Chr(10) & "Variable 3 = " & VariableFromXL3) Selection.GoTo what:=wdGoToBookmark, Name:="tableau_type" 'Selection du tableau 2 bordure_afficher Selection.Copy 'Copie (!) Selection.EndKey Unit:=wdStory 'Aller à la fin du document Selection.TypeParagraph 'Ajouter une ligne - pour séparer les tableaux Selection.Paste Selection.GoTo what:=wdGoToBookmark, Name:="tableau_type" bordure_cacher Activedocument.Tables(Activedocument.Tables.Count).Select Activedocument.Tables(Activedocument.Tables.Count).Cell(1, 1).Range.Text = b Activedocument.Tables(Activedocument.Tables.Count).Cell(1, 1).Range.Style = "titre 2" Activedocument.Tables(Activedocument.Tables.Count).Select With Activedocument.Bookmarks .Add Range:=Selection.Range, Name:=c & a .DefaultSorting = wdSortByName .ShowHidden = False End With End Sub
Variable objet ou variable de bloc With non définie
En espérant avoir été le plus claire possible....
EDIT: J'ai refait tourner le code sur mon pc après un reboot, je n'est pas encore compris mais il tourne parfaitement sans avoir touché une ligne de code... donc si vous avez des questions au sujet de mon code n'hésitez pas je reste à votre entière disposition.
EDIT2: Je n'arrive pas par contre à travailler avec le fichier word que j'ouvre et que est en arrière plan. Pourriez vous m'éclairez à ce sujet ? Je travail sur mon excel qui est le support de mon glossaire et l'utilisateur est amenée de temps à autre à remplir des tableaux dans le word. et j'aimerais simplement pouvoir passer soit excel en arrière plan ou excel. Et arriver à travailler sur mon document word ouvert et non une copie qu'il veut ouvrir en lecture seule. Je pensais avoir bien exprimer le test du document word, si ouvert alors mettre en premier plan sinon ouvrir word puis le document cilbe puis premier plan ....
Je vous remercie par avance.
Cordialement.
Malcomiix.
Partager