Bonjour tout le monde,
J'ai ce code qui me génère l'erreur suivante :
erreur d'automation : l'objet invoqué s'est déconnecté de ses clients
Mon problème vient de la variable "dater" initialiser au format date.
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 Sub rempljourn() option explicit dim dater as date dim nom as string dim nom1 as string dim fin as integer dim fin1 as integer dim sem as integer dim ann as integer dim jr as integer dim num as integer Dim num1 As Integer dim num2 as integer dim num3 as integer Dim a As Integer Dim b As Integer Dim c As Integer If menu.Listjourn.ListIndex = -1 Then MsgBox "VEUILLEZ SELECTIONNER UNE JOURNEE !! ", vbCritical Exit Sub End If dater1 = Format(menu.Listjourn.List(menu.Listjourn.ListIndex, 0), "dd/mm/yyyy") ann = 2019 'Year(dater1) 'année de la date nom = "trav" & ann 'nom de la feuille à remplir nom1 = "cycl" & ann 'nom de la feuille cycle fin = Sheets(nom).Range("c3").Value + 7 'ligne a saisir fin1 = Sheets(nom).Range("c3").Value + 6 'numero ligne fin de saisi horaire If fin1 = 6 Then fin1 = 7 'sem = Semaine(dater1) 'numero de semaine 'jr = Weekday(dater1, vbMonday) 'numero jour de la semaine Load saisjourn With saisjourn.listsais.ColumnHeaders .Clear .Add , , "NUM AGENT" .Add , , "AGENT" .Add , , "HEURE DEBUT" .Add , , "HEURE FIN" .Add , , "PAUSE DEBUT" .Add , , "PAUSE FIN" .Add , , "HEURES TRAVAIL" .Add , , "HEURES SUP" .Add , , "NUM LIGN" .Add , , "NUM SEMAINE" .Add , , "COMMENTAIRES" End With For a = 5 To 102 num = Sheets("listagent").Range("a" & a).Value 'numero agent If Sheets("listagent").Range("b" & a).Value = "" Then Exit For For b = 7 To fin1 'recherche si la journée est déjà saisi If num = Sheets(nom).Range("a" & a).Value Then 'recherche l'agent dans la liste des journées saisi de l'année sélectionnée If dater1 = Sheets(nom).Range("c" & b).Value Then 'recherche si la date correspond à la journée saisi With saisjourn.listsais .ListItems.Add Sheets(nom).Range("a" & b).Value 'numero agent With .ListItems(saisjourn.listsais.ListItems.Count) .ListSubItems.Add = Sheets(nom).Range("b" & b).Value '1 nom prenom agent .ListSubItems.Add = Sheets(nom).Range("d" & b).Value '2 heure debut travail .ListSubItems.Add = Sheets(nom).Range("e" & b).Value '3 heure fin travail .ListSubItems.Add = Sheets(nom).Range("f" & b).Value '4 heure debut pause .ListSubItems.Add = Sheets(nom).Range("g" & b).Value '5 heure fin pause .ListSubItems.Add = Sheets(nom).Range("i" & b).Value '6 nombre heures travaillees .ListSubItems.Add = Sheets(nom).Range("j" & b).Value '7 nombre heures sup .ListSubItems.Add = b '8 numero de ligne a modifier .ListSubItems.Add = sem '9 numero de la semaine .ListSubItems.Add = Sheets(nom).Range("l" & b).Value '10 commentaires End With End With Else If a = fin1 Then 'saisi depuis liste agent For c = 7 To 104 'recherche du type de semaine dans le cycle If num = Sheets(nom1).Range("a" & c).Value Then 'décide nouvelle ligne si journée pas trouver num2 = Right(Sheets(nom2).Range(Cells(c, sem + 2)).Value, 1) 'numero de la semaine de 1 a 4 num3 = (num2 * 4) - 2 'détermine la colonne de départ pour récupérer donnée With saisjourn.listsais .ListItems.Add Sheets("listagent").Range("a" & a).Value 'numero agent With .ListItems(saisjourn.listsais.ListItems.Count) .ListSubItems.Add = Sheets("listagent").Range("b").Value & " " & Sheets("listagent").Range("c" & a).Value '1 nom prenom agent .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3)).Value '2 heure debut travail .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3 + 1)).Value '3 heure fin travail .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3 + 2)).Value '4 heure debut pause .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3 + 3)).Value '5 heure fin pause .ListSubItems.Add = (saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(3).Text - saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(2).Text) - (saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(5).Text - saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(4).Text) '6 saisi nombre heures travaillees .ListSubItems.Add = 0 '7 saisi heure sup .ListSubItems.Add = fin '8 saisi sur nouvelle ligne End With End With fin = fin + 1 End If Next c End If End If End If Next b Next a saisjourn.Label7.Caption = "HEURE DEBUT" saisjourn.Label8.Caption = "HEURE FIN" saisjourn.Label9.Caption = "PAUSE DEBUT" saisjourn.Label10.Caption = "PAUSE FIN" saisjourn.Label11.Caption = "NOMBRE HEURES" saisjourn.Label12.Caption = "NOMBRE HEURES SUP" saisjourn.infodate.Caption = Format(dater1, "dd-mmm-yyyy") saisjourn.listsais.View = lvwReport saisjourn.Show vbModal fin1 = fin1 + 1 b = 0 For a = fin1 To fin Sheets(nom).Range("b" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(1).Text Sheets(nom).Range("c" & a).Value = saisjourn.infodate.Caption Sheets(nom).Range("d" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(2).Text Sheets(nom).Range("e" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(3).Text Sheets(nom).Range("f" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(4).Text Sheets(nom).Range("g" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(5).Text Sheets(nom).Range("h" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(6).Text Sheets(nom).Range("i" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(7).Text Sheets(nom).Range("k" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(10).Text b = b + 1 Next a If saisjourn.Optoui.Value = True Then For b = 7 To 372 dater = Day(Sheets(nom).Range("o" & b).Value) & "-" & Month(Sheets(nom).Range("o" & b).Value) & "-" & Year(Sheets(nom).Range("o" & b).Value) If dater = saisjourn.infodate.Caption = dater Then Sheets(nom).Range("p" & b).Value = "saisi" Exit For End If Next b End If Unload saisjourn End Sub
Ces essais ci dessous m'ont donné que le format de l'élément récupérer était bien une date et même si je change le format le problème n'est pas résolu.
Avez vous une suggestion ?
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151 option explicit dim dater as date dim nom as string dim nom1 as string dim fin as integer dim fin1 as integer dim sem as integer dim ann as integer dim jr as integer dim num as integer Dim num1 As Integer dim num2 as integer dim num3 as integer Dim a As Integer Dim b As Integer Dim c As Integer Sub rempljourn() If menu.Listjourn.ListIndex = -1 Then MsgBox "VEUILLEZ SELECTIONNER UNE JOURNEE !! ", vbCritical Exit Sub End If MsgBox menu.Listjourn.List(menu.Listjourn.ListIndex, 0) MsgBox IsDate(menu.Listjourn.List(menu.Listjourn.ListIndex, 0)) & " - " & Format(menu.Listjourn.List(menu.Listjourn.ListIndex, 0), "dd/mm/yyyy") 'MsgBox dater1 dater1 = Format(menu.Listjourn.List(menu.Listjourn.ListIndex, 0), "dd/mm/yyyy") ann = 2019 'Year(dater1) 'année de la date nom = "trav" & ann 'nom de la feuille à remplir nom1 = "cycl" & ann 'nom de la feuille cycle fin = Sheets(nom).Range("c3").Value + 7 'ligne a saisir fin1 = Sheets(nom).Range("c3").Value + 6 'numero ligne fin de saisi horaire If fin1 = 6 Then fin1 = 7 'sem = Semaine(dater1) 'numero de semaine 'jr = Weekday(dater1, vbMonday) 'numero jour de la semaine Load saisjourn ' With saisjourn.listsais.ColumnHeaders ' .Clear ' .Add , , "NUM AGENT" ' .Add , , "AGENT" ' .Add , , "HEURE DEBUT" ' .Add , , "HEURE FIN" ' .Add , , "PAUSE DEBUT" ' .Add , , "PAUSE FIN" ' .Add , , "HEURES TRAVAIL" ' .Add , , "HEURES SUP" ' .Add , , "NUM LIGN" ' .Add , , "NUM SEMAINE" ' .Add , , "COMMENTAIRES" ' End With ' For a = 5 To 102 ' num = Sheets("listagent").Range("a" & a).Value 'numero agent ' If Sheets("listagent").Range("b" & a).Value = "" Then Exit For ' For b = 7 To fin1 'recherche si la journée est déjà saisi ' If num = Sheets(nom).Range("a" & a).Value Then 'recherche l'agent dans la liste des journées saisi de l'année sélectionnée ' If dater1 = Sheets(nom).Range("c" & b).Value Then 'recherche si la date correspond à la journée saisi ' With saisjourn.listsais ' .ListItems.Add Sheets(nom).Range("a" & b).Value 'numero agent ' With .ListItems(saisjourn.listsais.ListItems.Count) ' .ListSubItems.Add = Sheets(nom).Range("b" & b).Value '1 nom prenom agent ' .ListSubItems.Add = Sheets(nom).Range("d" & b).Value '2 heure debut travail ' .ListSubItems.Add = Sheets(nom).Range("e" & b).Value '3 heure fin travail ' .ListSubItems.Add = Sheets(nom).Range("f" & b).Value '4 heure debut pause ' .ListSubItems.Add = Sheets(nom).Range("g" & b).Value '5 heure fin pause ' .ListSubItems.Add = Sheets(nom).Range("i" & b).Value '6 nombre heures travaillees ' .ListSubItems.Add = Sheets(nom).Range("j" & b).Value '7 nombre heures sup ' .ListSubItems.Add = b '8 numero de ligne a modifier ' .ListSubItems.Add = sem '9 numero de la semaine ' .ListSubItems.Add = Sheets(nom).Range("l" & b).Value '10 commentaires ' End With ' End With ' Else ' If a = fin1 Then 'saisi depuis liste agent ' For c = 7 To 104 'recherche du type de semaine dans le cycle ' If num = Sheets(nom1).Range("a" & c).Value Then 'décide nouvelle ligne si journée pas trouver ' num2 = Right(Sheets(nom2).Range(Cells(c, sem + 2)).Value, 1) 'numero de la semaine de 1 a 4 ' num3 = (num2 * 4) - 2 'détermine la colonne de départ pour récupérer donnée ' With saisjourn.listsais ' .ListItems.Add Sheets("listagent").Range("a" & a).Value 'numero agent ' With .ListItems(saisjourn.listsais.ListItems.Count) ' .ListSubItems.Add = Sheets("listagent").Range("b").Value & " " & Sheets("listagent").Range("c" & a).Value '1 nom prenom agent ' .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3)).Value '2 heure debut travail ' .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3 + 1)).Value '3 heure fin travail ' .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3 + 2)).Value '4 heure debut pause ' .ListSubItems.Add = Sheets("listagent").Range(Cells(a, num3 + 3)).Value '5 heure fin pause ' .ListSubItems.Add = (saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(3).Text - saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(2).Text) - (saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(5).Text - saisjourn.listsais.ListItems(saisjourn.listsais.ListItems.Count).ListSubItems(4).Text) '6 saisi nombre heures travaillees ' .ListSubItems.Add = 0 '7 saisi heure sup ' .ListSubItems.Add = fin '8 saisi sur nouvelle ligne ' End With ' End With ' fin = fin + 1 ' End If ' Next c ' End If ' End If ' End If ' Next b ' Next a ' saisjourn.Label7.Caption = "HEURE DEBUT" ' saisjourn.Label8.Caption = "HEURE FIN" ' saisjourn.Label9.Caption = "PAUSE DEBUT" ' saisjourn.Label10.Caption = "PAUSE FIN" ' saisjourn.Label11.Caption = "NOMBRE HEURES" ' saisjourn.Label12.Caption = "NOMBRE HEURES SUP" ' saisjourn.infodate.Caption = Format(dater1, "dd-mmm-yyyy") 'saisjourn.listsais.View = lvwReport saisjourn.Show vbModal 'fin1 = fin1 + 1 'b = 0 'For a = fin1 To fin ' Sheets(nom).Range("b" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(1).Text ' Sheets(nom).Range("c" & a).Value = saisjourn.infodate.Caption ' Sheets(nom).Range("d" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(2).Text ' Sheets(nom).Range("e" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(3).Text ' Sheets(nom).Range("f" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(4).Text ' Sheets(nom).Range("g" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(5).Text ' Sheets(nom).Range("h" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(6).Text ' Sheets(nom).Range("i" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(7).Text ' Sheets(nom).Range("k" & a).Value = saisjourn.listsais.ListItems(b).ListSubItems(10).Text ' b = b + 1 'Next a 'If saisjourn.Optoui.Value = True Then ' For b = 7 To 372 ' dater = Day(Sheets(nom).Range("o" & b).Value) & "-" & Month(Sheets(nom).Range("o" & b).Value) & "-" & Year(Sheets(nom).Range("o" & b).Value) ' If dater = saisjourn.infodate.Caption = dater Then ' Sheets(nom).Range("p" & b).Value = "saisi" ' Exit For ' End If ' Next b 'End If Unload saisjourn End Sub
Partager