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 :


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
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 ...


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 :

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
L'erreur est de type :

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.