oui, car tu utilises la col AN dans la recherche, j'ai pris cette partieuniquement pour faire référence à ta colonne la plus remplie dans ton dernier fichierCode:....f.Range("AM" & f.Rows.Count....
Version imprimable
oui, car tu utilises la col AN dans la recherche, j'ai pris cette partieuniquement pour faire référence à ta colonne la plus remplie dans ton dernier fichierCode:....f.Range("AM" & f.Rows.Count....
D'accord.
Si ce code est ne fonctionne pas, peux être utiliser une autre solution?
Tu as vue mon message a la page 1, a la fin?
Pour en revenir à cette ligne que tu ne comprends pas, pour moins d'ambiguïté changes pourCode:TblBd = f.Range("A2:AN" & f.UsedRange.Rows.Count)
il faut que je me replonge dedans (il y a eu de l'eau sous le pont, depuis) mais pourquoi ça ne fonctionnerais pas ?Citation:
Si ce code est ne fonctionne pas, peux être utiliser une autre solution?
Tu as vue mon message a la page 1, a la fin?
Ce qui donne :
Erreur d'excution '13'
Incompatibilité de type.
Si je savais pourquoi sa marcherais pas :/Code:
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 Private Sub UserForm_Initialize() Set f = Sheets("DTEL") Set d = CreateObject("Scripting.Dictionary") TblBd = f.Range("A2:AN" & f.UsedRange.Rows.Count).Address 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
j'ai simplement oublié d'enlever ".Address", tu devrais le deviner (c'était pour un test)
Ha pardon....
J'essaye de comprendre en même temps, mais je comprend pas tous.
Alors la sa fonctionne, j'ai bien ma liste déroulante dans mon combox1( au passage peux ton commencer a afficher a partir de la ligne 4 ?
Maintenant si je choisie devis a faire ou n'importe j'ai un erreur ici :
Erreur d’exécution 13Code:For i = LBound(TblBd) To UBound(TblBd)
incompatibilité de type.
Code:
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 Private Sub UserForm_Initialize() Set f = Sheets("DTEL") Set d = CreateObject("Scripting.Dictionary") TblBd = f.Range("A2: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 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
Code:For i = LBound(TblBd,1) To UBound(TblBd,1)
Merci,
Erreur de compilation
for sans next.
Code:
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 Private Sub UserForm_Initialize() Set f = Sheets("DTEL") Set d = CreateObject("Scripting.Dictionary") TblBd = f.Range("A2: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 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_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
eh bien, quand je vois ça, je devais être fatiguélaisses-moi quelques minutes, je fais trop de choses à la fois et de plus j'érais sur mon portable (moins pratique que mon PC de bureau actuel)Code:
1
2
3
4
5 .... For i = 1 To UBound(Tb) For Each c In Tb: d(c) = "": Next c Next i ....
Mdr! Pas de soucie.
A toute! :)
j'espère que ça ira, mais ça ne supprime pas les lignes vides (normal pour l'instant)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 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
toujours pareil,
erreur de compilation
for sans Next
Code:
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
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)
Sa me mes en jaune :
et en bas sa me sélectionne END SUB.Code:Private Sub ComboBox1_Change()
Voici le code entier :
J'ai un Combox et uns listbox.Code:
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
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
tu as oublié un NextCode:
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
Autant pour moi
Sa me sélectionne maintenant la ligne en jaune:
Code:For i = LBound(TblBd, 1) To UBound(TblBd, 1)
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 UsfCode:
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
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 ?
comment veux-tu que je te réponde, il faut essayer de comprendre ce que tu fais, si tu ne comprends pas toi-même, n'étant pas devin.........Citation:
Comme c'est un code que j'ai reprit c'est pour sa.
Je supprime c'est ligne ?
De toutes façon, je pense que cet Usf ne sert à rien, rien ne t'empêche d'entrer des nouvelles données dans l'autre usf (si tu n'en a pas quinze) et les valider