merci
sa fonctionne
mais sa m'affiche que les 3 premiers ligne de AM
et après ma listbox est vide.
merci
merci
sa fonctionne
mais sa m'affiche que les 3 premiers ligne de AM
et après ma listbox est vide.
merci
là, tu m'étonnes, je viens de tester sans problème, dis-moi sur quelle ligne le code bloque (exécutes-le en pas en pas)
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Sa me mes en jaune :
et en bas sa me sélectionne END SUB.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Private Sub ComboBox1_Change()
Voici le code entier :
J'ai un Combox et uns listbox.
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 Private Sub UserForm_Initialize() Set f = Sheets("DTEL") Set d = CreateObject("Scripting.Dictionary") TblBd = f.Range("A3:AN" & f.UsedRange.Rows.Count) ReDim Tb(1 To UBound(TblBd, 1)) For i = 1 To UBound(Tb, 1) Tb(i) = TblBd(i, 39) Next i For Each c In Tb: d(c) = "": Next c Me.ComboBox1.List = d.keys ' Me.ComboBox1 = ActiveSheet.[A1] End Sub Private Sub ComboBox1_Change() ListBox1.Clear j = 0 For i = LBound(TblBd, 1) To UBound(TblBd, 1) If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _ Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then ListBox1.AddItem ListBox1.List(j, 0) = TblBd(i, 2) ListBox1.List(j, 1) = TblBd(i, 9) ListBox1.List(j, 2) = TblBd(i, 40) ListBox1.List(j, 3) = TblBd(i, 37) j = j + 1 End If End Sub
ton code Initialize complet, sachant que j'ai, pour l'instant dans un module standard (le tien)A tester
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Option Explicit Dim Sh As Worksheet, Dcel As Range, i As Long Sub AFFICHER() Userform1.Show vbModeless Sheets("DTEL").Activate 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 Private Sub UserForm_Initialize() Dim Tb Set Sh = Sheets("DTEL") With Me.ComboBox1 For i = 3 To Sh.Range("B" & Sh.Rows.Count).End(xlUp).Row .AddItem Sh.Range("B" & i) Next i End With With Me.ComboBox2 For i = 3 To Sh.Range("AK" & Sh.Rows.Count).End(xlUp).Row .AddItem Sh.Range("AK" & i) Next i End With Set Dcel = Sheets("DONNEES").Range("A" & Sheets("DONNEES").Rows.Count).End(xlUp) TB13.List = Sheets("DONNEES").Range("A2", Dcel) TB11.List = Sheets("DONNEES").Range("A2", Dcel) Set Dcel = Sheets("CP").Range("A" & Sheets("CP").Rows.Count).End(xlUp) TB5.List = Sheets("CP").Range("A2", Dcel) Set Dcel = Sheets("CATEG").Range("A" & Sheets("CATEG").Rows.Count).End(xlUp) TB39 = Sheets("CATEG").Range("A2", Dcel) End Sub
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
et tu vois le boulot, toute cette partiequ'est-ce que ça veut dire ?
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 ... For i = 2 To Sheets("DONNEES").Range("A65536").End(xlUp).Row TB13 = Sheets("DONNEES").Range("A" & i) If TB13.ListIndex = -1 Then TB13.AddItem Sheets("DONNEES").Range("A" & i) Next i TB13 = "" For i = 2 To Sheets("DONNEES").Range("A65536").End(xlUp).Row TB11 = Sheets("DONNEES").Range("A" & i) If TB11.ListIndex = -1 Then TB11.AddItem Sheets("DONNEES").Range("A" & i) Next i TB11 = "" For i = 2 To Sheets("CP").Range("A65536").End(xlUp).Row TB5 = Sheets("CP").Range("A" & i) If TB5.ListIndex = -1 Then TB5.AddItem Sheets("CP").Range("A" & i) Next i TB5 = "" For i = 2 To Sheets("CATEG").Range("A65536").End(xlUp).Row TB39 = Sheets("CATEG").Range("A" & i) If TB39.ListIndex = -1 Then TB39.AddItem Sheets("CATEG").Range("A" & i) Next i TB39 = "" ....
tu alimentes plusieurs combo avec les mêmes données, ensuite tu parles de comparaison avec listindex, enfin toute la partie est incompréhensible
alors expliques et je corrige, et pour l'instant je me mets sur STOP
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
je n'ai plus le temps, vérifies ton fichier et éxécutes ta macro "Initialize" pas à pas et regardes au fur et à mesure les valeurs de "UBound(Tb, 1)" entre autres
à demain si tu le veux bien
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
ok merci je vais essayer de regarde.
surement a demain!
merci a toi
donc ce n'est pas mon code qui est mauvais, c'est l'évènement "Change" qu'il faut voir, plus rien à voir mais je vais y regarder
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
je viens d'ouvrir ton fichier et il n'y a rien dans AN, comment veux-tu que ça fonctionne au regard de cette ligneet de celle-ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part TblBd = f.Range("A2:AN" & f.Range("A" & f.Rows.Count).End(xlUp).Row)allez ! je me sauve !
Code : Sélectionner tout - Visualiser dans une fenêtre à part ListBox1.List(j, 2) = TblBd(i, 40)
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
normal, si tu as pris le tous premier fichier c'est plus le bon lol
c'est celui ci maintenant.
Quand je prend la 1er ligne sa s'affiche bien dans listbox
mais pas les autres lignes, et sa sarrette a la linge 4 j'ai l'impression.
Sa doit pas etre grand chose...
tu as oublié un Next
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 Private Sub ComboBox1_Change() ListBox1.Clear j = 0 For i = LBound(TblBd, 1) To UBound(TblBd, 1) If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _ Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then ListBox1.AddItem ListBox1.List(j, 0) = TblBd(i, 2) ListBox1.List(j, 1) = TblBd(i, 9) ListBox1.List(j, 2) = TblBd(i, 40) ListBox1.List(j, 3) = TblBd(i, 37) j = j + 1 End If Next i End Sub
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Autant pour moi
Sa me sélectionne maintenant la ligne en jaune:
Code : Sélectionner tout - Visualiser dans une fenêtre à part For i = LBound(TblBd, 1) To UBound(TblBd, 1)
Ne t'en fait pas, on continue, je viens d'améliorer encore un peu, si tu as bien mis dan le module, ce que je t'ai suggéré, testes encore l'ouverture de ton usf avec ce 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 Private Sub UserForm_Initialize() Dim Tb Set Sh = Sheets("DTEL") Set Dcel = Sh.Range("B" & Sh.Rows.Count).End(xlUp) Me.ComboBox1.List = Sh.Range("B3", Dcel) Set Dcel = Sh.Range("AK" & Sh.Rows.Count).End(xlUp) Me.ComboBox2.List = Sh.Range("AK3", Dcel) Set Dcel = Sheets("DONNEES").Range("A" & Sheets("DONNEES").Rows.Count).End(xlUp) TB13.List = Sheets("DONNEES").Range("A2", Dcel) TB11.List = Sheets("DONNEES").Range("A2", Dcel) Set Dcel = Sheets("CP").Range("A" & Sheets("CP").Rows.Count).End(xlUp) TB5.List = Sheets("CP").Range("A2", Dcel) Set Dcel = Sheets("CATEG").Range("A" & Sheets("CATEG").Rows.Count).End(xlUp) TB39 = Sheets("CATEG").Range("A2", Dcel) End Sub
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Merci,
Erreur ici :
code entier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub UserForm_Initialize() Dim Tb Set Sh = Sheets("DTEL")
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583 Option Explicit Dim Ws As Worksheet Private Sub ComboBox4_Change() Dim Ligne As Long Dim i As Integer, Tb If Me.ComboBox4.ListIndex = -1 Then Exit Sub Ligne = Me.ComboBox1.ListIndex + 3 For i = 1 To 44 Me.Controls("TB" & i) = Ws.Cells(Ligne, i) Next i End Sub Private Sub CHOIX_CLIENT_Click() If CHOIX_CLIENT = True Then CHOIX_CLIENT.Caption = "OUI" TB44 = "OUI" Else CHOIX_CLIENT.Caption = "NON" TB44 = "NON" End If End Sub Private Sub CommandButton5_Click() Unload Me ' Vide et ferme l'Userform ( formulaire) Userform1.Show 'Affiche le formulaire End Sub Private Sub CommandButton6_Click() End Sub Private Sub Label16_Click() End Sub Private Sub Label41_Click() End Sub Private Sub Label44_Click() End Sub Private Sub SUPPRIMER_Click() 'Supprimer la ligne sélectionnée Dim L As Long If Me.ComboBox1.ListIndex = -1 Then Exit Sub L = Me.ComboBox1.ListIndex + 2 Ws.Rows(L).Delete End Sub Private Sub TB13_Change() End Sub Private Sub TB25_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TB25.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TB25) If Valeur = 2 Or Valeur = 5 Then TB25 = TB25 & "/" End Sub Private Sub TB27_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TB27.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TB27) If Valeur = 2 Or Valeur = 5 Then TB27 = TB27 & "/" End Sub Private Sub TB29_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TB29.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TB29) If Valeur = 2 Or Valeur = 5 Then TB29 = TB29 & "/" End Sub Private Sub TB36_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TB36.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TB36) If Valeur = 2 Or Valeur = 5 Then TB36 = TB36 & "/" End Sub Private Sub TB40_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TB40.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TB40) If Valeur = 2 Or Valeur = 5 Then TB40 = TB40 & "/" End Sub Private Sub TB44_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TB44.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TB44) If Valeur = 2 Or Valeur = 5 Then TB44 = TB44 & "/" End Sub Private Sub TB45_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TB45.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TB45) If Valeur = 2 Or Valeur = 5 Then TB45 = TB45 & "/" End Sub Private Sub TB6_Change() 'exemple pour format NUMERO DE TELEPHONE xx xx xx xx xx Dim Valeur As Byte TB6.MaxLength = 14 'nb caracteres maxi dans textbox Valeur = Len(TB6) If Valeur = 2 Or Valeur = 5 Or Valeur = 8 Or Valeur = 11 Then TB6 = TB6 & " " End Sub Private Sub TB7_Change() 'exemple pour format NUMERO DE TELEPHONE xx xx xx xx xx Dim Valeur As Byte TB7.MaxLength = 14 'nb caracteres maxi dans textbox Valeur = Len(TB7) If Valeur = 2 Or Valeur = 5 Or Valeur = 8 Or Valeur = 11 Then TB7 = TB7 & " " End Sub Private Sub TELEPHONE_Click() If TELEPHONE = True Then TB30 = "OUI" Else TB30 = "NON" End If End Sub Private Sub FACE_Click() If FACE = True Then TB31 = "OUI" Else TB31 = "NON" End If End Sub Private Sub MAIL_Click() If MAIL = True Then TB32 = "OUI" Else TB32 = "NON" End If End Sub Private Sub REPONDEUR_Click() If REPONDEUR = True Then TB33 = "OUI" Else TB33 = "NON" End If End Sub Private Sub MESSAGERIE_Click() If MESSAGERIE = True Then TB34 = "OUI" Else TB34 = "NON" End If End Sub Private Sub ATT_REPONSE_Click() If ATT_REPONSE = True Then TB35 = "OUI" Else TB35 = "NON" End If End Sub Private Sub PARTICULIER_Click() If PARTICULIER = True Then TB8 = "PARTICULIER" Else TB8 = "" End If End Sub Private Sub PROFESSIONNEL_Click() If PROFESSIONNEL = True Then TB8 = "PROFESSIONNEL" Else TB8 = "" End If End Sub Private Sub CHOIX_EXPRESS_Click() If CHOIX_EXPRESS = True Then CHOIX_EXPRESS.Caption = "OUI" TB9 = "OUI" Else CHOIX_EXPRESS.Caption = "NON" TB9 = "NON" End If End Sub Private Sub CommandButton1_Click() Unload Me End Sub Private Sub CHOIX_SACOCHE_Click() If CHOIX_SACOCHE = True Then TB17 = "OUI" Else TB17 = "NON" End If End Sub Private Sub CHOIX_CABLE_Click() If CHOIX_CABLE = True Then TB16 = "OUI" Else TB16 = "NON" End If End Sub Private Sub CHOIX_ALIM_Click() If CHOIX_ALIM = True Then TB15 = "OUI" Else TB15 = "NON" End If End Sub Private Sub CHOIX_LICENCE_Click() If CHOIX_LICENCE = True Then CHOIX_LICENCE.Caption = "OUI" TB10 = "OUI" Else CHOIX_LICENCE.Caption = "NON" TB10 = "NON" End If End Sub Private Sub CommandButton3_Click() CommandButton3.Visible = False CommandButton4.Visible = True ComboBox1.Visible = False TB2.Visible = True TB37 = Range("A1") + 1 End Sub Private Sub CommandButton4_Click() Dim L As Integer If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbNo Then Exit Sub 'si non on sort Sh = Sheets("DTEL") With Sh Set Dcel = .Range("A" & .Rows.Count).End(xlUp)(2, 1) For i = 1 To 44 Dcel(L, i) = Me.Controls("TB" & i) Next i End With ' Affiche une boîte de message MsgBox ("Nouvelle FICHE inséréE dans DETL") End Sub End If ' Affiche une boîte de message MsgBox ("Nouvelle FICHE inséréE dans DETL") 'Vous informant que le présent contact est insérer dans votre tableau Excel. Unload Me ' Vide et ferme l'Userform ( formulaire) Userform1.Show 'Affiche le formulaire End Sub Private Sub TB5_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'à la sortie de la liste déroulante Dim r As Range 'déclare la variable r (Recherche) Dim x As Byte 'déclare la variable x (incrément de textbox) Set r = Sheets("CP").Columns(1).Find(Me.TB5.Value, , xlValues, xlWhole) 'définit la recherche r (recherche la valeur de la TextBox10 dans la colonne 1 de l'onglet "données") If Not r Is Nothing Then 'condition si il existe au moint une occurrence trouvée TB4.Value = r.Offset(0, x + 1) End If 'fi de la condition End Sub Private Sub TextBox19_Change() 'exemple pour format DATE xx/xx/xxxx Dim Valeur As Byte TextBox19.MaxLength = 10 'nb caracteres maxi dans textbox Valeur = Len(TextBox19) If Valeur = 2 Or Valeur = 5 Then TextBox19 = TextBox19 & "/" End Sub Private Sub TextBox1_Change() End Sub Private Sub TextBox3_Change() End Sub Private Sub UserForm_Initialize() Dim Tb Set Sh = Sheets("DTEL") Set Dcel = Sh.Range("B" & Sh.Rows.Count).End(xlUp) Me.ComboBox1.List = Sh.Range("B3", Dcel) Set Dcel = Sh.Range("AK" & Sh.Rows.Count).End(xlUp) Me.ComboBox2.List = Sh.Range("AK3", Dcel) Set Dcel = Sheets("DONNEES").Range("A" & Sheets("DONNEES").Rows.Count).End(xlUp) TB13.List = Sheets("DONNEES").Range("A2", Dcel) TB11.List = Sheets("DONNEES").Range("A2", Dcel) Set Dcel = Sheets("CP").Range("A" & Sheets("CP").Rows.Count).End(xlUp) TB5.List = Sheets("CP").Range("A2", Dcel) Set Dcel = Sheets("CATEG").Range("A" & Sheets("CATEG").Rows.Count).End(xlUp) TB39 = Sheets("CATEG").Range("A2", Dcel) End Sub For i = 1 To 44 'on lance une boucle de valeur mini 1 et maxi 8 Me.Controls("TB" & i).Visible = True 'affiche les données dans les textbox Next i TB2.Visible = True For i = 2 To Sheets("DONNEES").Range("A65536").End(xlUp).Row TB13 = Sheets("DONNEES").Range("A" & i) If TB13.ListIndex = -1 Then TB13.AddItem Sheets("DONNEES").Range("A" & i) Next i TB13 = "" For i = 2 To Sheets("DONNEES").Range("A65536").End(xlUp).Row TB11 = Sheets("DONNEES").Range("A" & i) If TB11.ListIndex = -1 Then TB11.AddItem Sheets("DONNEES").Range("A" & i) Next i TB11 = "" For i = 2 To Sheets("CP").Range("A65536").End(xlUp).Row TB5 = Sheets("CP").Range("A" & i) If TB5.ListIndex = -1 Then TB5.AddItem Sheets("CP").Range("A" & i) Next i TB5 = "" For i = 2 To Sheets("CATEG").Range("A65536").End(xlUp).Row TB39 = Sheets("CATEG").Range("A" & i) If TB39.ListIndex = -1 Then TB39.AddItem Sheets("CATEG").Range("A" & i) Next i TB39 = "" End Sub Private Sub CommandButton2_Click() If MsgBox("Etes-vous certain de vouloir modifier cette FICHE ?", vbYesNo, "Demande de confirmation") = vbYes Then Dim Ligne As Long Dim i As Integer, Tb If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'On sort si pas de sélection Ligne = Me.ComboBox1.ListIndex + 3 For i = 1 To 44 If Me.Controls("TB" & i).Visible = True Then Ws.Cells(Ligne, i) = Me.Controls("TB" & i) End If Next i End If MsgBox ("FICHE modifiée") End Sub Private Sub ComboBox2_Change() Dim Ligne As Long Dim i As Integer, Tb If Me.ComboBox2.ListIndex = -1 Then Exit Sub Ligne = Me.ComboBox2.ListIndex + 3 ComboBox1 = Ws.Cells(Ligne, 2) For i = 1 To 44 Me.Controls("TB" & i) = Ws.Cells(Ligne, i) Next i If TB8.Value = "PARCITULIER" Then PARTICULIER.Value = True Else PARTICULIER.Value = False End If If TB8.Value = "PROFESSIONNEL" Then PROFESSIONNEL.Value = True Else PROFESSIONNEL.Value = False End If If TB9.Value = "OUI" Then CHOIX_EXPRESS.Value = True Else CHOIX_EXPRESS.Value = False End If If TB44.Value = "OUI" Then CHOIX_CLIENT.Value = True Else CHOIX_CLIENT.Value = False End If If TB10.Value = "OUI" Then CHOIX_LICENCE.Value = True Else CHOIX_LICENCE.Value = False End If If TB15.Value = "OUI" Then CHOIX_ALIM.Value = True Else CHOIX_ALIM.Value = False End If If TB16.Value = "OUI" Then CHOIX_CABLE.Value = True Else CHOIX_CABLE.Value = False End If If TB17.Value = "OUI" Then CHOIX_SACOCHE.Value = True Else CHOIX_SACOCHE.Value = False End If If TB30.Value = "OUI" Then TELEPHONE.Value = True Else TELEPHONE.Value = False End If If TB31.Value = "OUI" Then FACE.Value = True Else FACE.Value = False End If If TB32.Value = "OUI" Then MAIL.Value = True Else MAIL.Value = False End If If TB33.Value = "OUI" Then REPONDEUR.Value = True Else REPONDEUR.Value = False End If If TB34.Value = "OUI" Then MESSAGERIE.Value = True Else MESSAGERIE.Value = False End If If TB35.Value = "OUI" Then ATT_REPONSE.Value = True Else ATT_REPONSE.Value = False End If End Sub Private Sub ComboBox1_Change() Dim Ligne As Long Dim i As Integer, Tb If Me.ComboBox1.ListIndex = -1 Then Exit Sub Ligne = Me.ComboBox1.ListIndex + 3 For i = 1 To 44 Me.Controls("TB" & i) = Ws.Cells(Ligne, i) Next i If TB8.Value = "PARCITULIER" Then PARTICULIER.Value = True Else PARTICULIER.Value = False End If If TB8.Value = "PROFESSIONNEL" Then PROFESSIONNEL.Value = True Else PROFESSIONNEL.Value = False End If If TB9.Value = "OUI" Then CHOIX_EXPRESS.Value = True Else CHOIX_EXPRESS.Value = False End If If TB44.Value = "OUI" Then CHOIX_CLIENT.Value = True Else CHOIX_CLIENT.Value = False End If If TB10.Value = "OUI" Then CHOIX_LICENCE.Value = True Else CHOIX_LICENCE.Value = False End If If TB15.Value = "OUI" Then CHOIX_ALIM.Value = True Else CHOIX_ALIM.Value = False End If If TB16.Value = "OUI" Then CHOIX_CABLE.Value = True Else CHOIX_CABLE.Value = False End If If TB17.Value = "OUI" Then CHOIX_SACOCHE.Value = True Else CHOIX_SACOCHE.Value = False End If If TB30.Value = "OUI" Then TELEPHONE.Value = True Else TELEPHONE.Value = False End If If TB31.Value = "OUI" Then FACE.Value = True Else FACE.Value = False End If If TB32.Value = "OUI" Then MAIL.Value = True Else MAIL.Value = False End If If TB33.Value = "OUI" Then REPONDEUR.Value = True Else REPONDEUR.Value = False End If If TB34.Value = "OUI" Then MESSAGERIE.Value = True Else MESSAGERIE.Value = False End If If TB35.Value = "OUI" Then ATT_REPONSE.Value = True Else ATT_REPONSE.Value = False End If End Sub
Bonjour, essayes, vite fait
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 Private Sub UserForm_Initialize() Set f = Sheets("DTEL") Set d = CreateObject("Scripting.Dictionary") TblBd = f.Range("A2:AN" & f.Range("AM" & f.Rows.Count).End(xlUp).Row) ReDim Tb(1 To UBound(TblBd, 1)) For i = 1 To UBound(Tb, 1) Tb(i) = TblBd(i, 39) Next i d("*") = "" For i = 1 To UBound(Tb) For Each c In Tb: d(c) = "": Next c Next i Me.ComboBox1.List = d.keys ' Me.ComboBox1 = ActiveSheet.[A1] End Sub
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
bonjour,
ce qui donne:
Erreur de compilation
sub ou fuction non définie
je vois que dans cette ligne :
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 Private Sub UserForm_Initialize() Set f = Sheets("DTEL") Set d = CreateObject("Scripting.Dictionary") TblBd f.Range("A2:AN" & f.Range("AM" & f.Rows.Count).End(xlUp).Row) ReDim Tb(1 To UBound(TblBd, 1)) For i = 1 To UBound(Tb, 1) Tb(i) = TblBd(i, 39) Next i d("*") = "" For i = 1 To UBound(Tb) For Each c In Tb: d(c) = "": Next c Next i Me.ComboBox1.List = d.keys ' Me.ComboBox1 = ActiveSheet.[A1] End Sub Private Sub ComboBox1_click() ListBox1.Clear j = 0 For i = LBound(TblBd) To UBound(TblBd) If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _ Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then ListBox1.AddItem ListBox1.List(j, 0) = TblBd(i, 2) ListBox1.List(j, 1) = TblBd(i, 9) ListBox1.List(j, 2) = TblBd(i, 40) ListBox1.List(j, 3) = TblBd(i, 37) j = j + 1 End If Next i End Sub
Je vois A2;AN
Code : Sélectionner tout - Visualiser dans une fenêtre à part TblBd f.Range("A2:AN" & f.Range("AM" & f.Rows.Count).End(xlUp).Row)
C'est normal ?
Sachant que la lite est dans la colonne AM.
je ne comprends plus, renvoies un fichier à jour avec mes modifs
de toutes façon quand je vois cette lignetu m'expliquera ou est ta Combob0x2, que je ne vois pas dans cet Usf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _ Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
eh oui, la fatigue me gagne, dans le module, c'étaitet tu peux enlever le "Dim Tb"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Option Explicit Public Sh As Worksheet, Dcel As Range, i As Long Sub AFFICHER() Userform1.Show vbModeless Sheets("DTEL").Activate End Sub
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
erreur ici :
seul des commtaires peuvent apparaitre apres end sub
erreur en jaune : For i = 1 To 44 et Private Sub UserForm_Initialize()
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 Private Sub UserForm_Initialize() Dim Tb Set Sh = Sheets("DTEL") Set Dcel = Sh.Range("B" & Sh.Rows.Count).End(xlUp) Me.ComboBox1.List = Sh.Range("B3", Dcel) Set Dcel = Sh.Range("AK" & Sh.Rows.Count).End(xlUp) Me.ComboBox2.List = Sh.Range("AK3", Dcel) Set Dcel = Sheets("DONNEES").Range("A" & Sheets("DONNEES").Rows.Count).End(xlUp) TB13.List = Sheets("DONNEES").Range("A2", Dcel) TB11.List = Sheets("DONNEES").Range("A2", Dcel) Set Dcel = Sheets("CP").Range("A" & Sheets("CP").Rows.Count).End(xlUp) TB5.List = Sheets("CP").Range("A2", Dcel) Set Dcel = Sheets("CATEG").Range("A" & Sheets("CATEG").Rows.Count).End(xlUp) TB39 = Sheets("CATEG").Range("A2", Dcel) End Sub For i = 1 To 44 'on lance une boucle de valeur mini 1 et maxi 8 Me.Controls("TB" & i).Visible = True 'affiche les données dans les textbox Next i TB2.Visible = True
Je me posais aussi la question,
je n'est pas de combox2
Comme c'est un code que j'ai reprit c'est pour sa.
Je supprime c'est ligne ?
Partager