Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compilation de code

9 réponses
Avatar
DT
Bonsoir à tous

Je n'arrive pas à compiler ces deux codes.
Une idée ?
Merci de votre aide
David

Private Sub Charge1()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[C2], f.[C65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo1.List = temp
End Sub

Private Sub Charge2()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[J2], f.[J65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo2.List = temp
End Sub

9 réponses

Avatar
jero
Salut,
Où est l'erreur ? La procédure Tri existe ?
Moi, ça fonctionne...
"DT" a écrit dans le message de news:

Bonsoir à tous

Je n'arrive pas à compiler ces deux codes.
Une idée ?
Merci de votre aide
David

Private Sub Charge1()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[C2], f.[C65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo1.List = temp
End Sub

Private Sub Charge2()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[J2], f.[J65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo2.List = temp
End Sub



Avatar
JB
Bonjour,

Set f = Sheets("Feuil1")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[C2], f.[C65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo1.List = temp

http://boisgontierjacques.free.fr/pages_site/formulairelistesansdoublons.ht m#Dictionnary


JB


On 2 fév, 21:54, "DT" wrote:
Bonsoir à tous

Je n'arrive pas à compiler ces deux codes.
Une idée ?
Merci de votre aide
David

Private Sub Charge1()
Set f = Feuil2
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[C2], f.[C65000].End(xlUp))
   If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  temp = MonDico.items
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.Combo1.List = temp
End Sub

Private Sub Charge2()
Set f = Feuil2
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[J2], f.[J65000].End(xlUp))
   If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  temp = MonDico.items
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.Combo2.List = temp
End Sub


Avatar
DT
Bonjour à vous 2

Je re formule ma question qui apparement n'a pas été comprise.

J'aimerais regrouper ces 2 codes (en réalité j'en ai 5) en un seul si cela
est possible.
Vous pouvez vous apercevoir que la différence viens des lignes :

>>For Each c In Range(f.[C2], f.[C65000].End(xlUp))
Me.Combo1.List = temp





J'aimerais les regrouper dans le genre :

Private Sub Regroupement()
Set f = Feuil2

Set MonDico = CreateObject("Scripting.Dictionary")

For Each c In Range(f.[C2], f.[C65000].End(xlUp))
For Each c In Range(f.[J2], f.[J65000].End(xlUp))

If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))

Me.Combo1.List = temp
Me.Combo2.List = temp

End Sub

Merci de votre aide
Avatar
Misange
Bonjour

DT a écrit :

For Each c In Range(f.[C2], f.[C65000].End(xlUp))
For Each c In Range(f.[J2], f.[J65000].End(xlUp))



le fait d'écrire la seconde ligne efface la valeur du 1° c
donc que veux tu faire ??

If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))

Me.Combo1.List = temp
Me.Combo2.List = temp



tu veux la même liste temporaire dans tes deux combo ? c'est ce que tu
fais là.

si tu veux remplir 5 combos avec 5 listes différentes venant de 5
colonnes différentes, le fait de balayer ta feuille ligne par ligne ne
te fais rien gagner en vitesse par rapport à les balayer par colonne.

Misange
Avatar
Daniel.C
Bonjjour.
A tout hasard, l'emploi de "Me" suppose que ta macro se trouve dans le
code de l'userform.
Daniel

Bonsoir à tous

Je n'arrive pas à compiler ces deux codes.
Une idée ?
Merci de votre aide
David

Private Sub Charge1()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[C2], f.[C65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo1.List = temp
End Sub

Private Sub Charge2()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[J2], f.[J65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo2.List = temp
End Sub


Avatar
Daniel.C
Oups. A côté de la plaque.
Daniel

Bonjjour.
A tout hasard, l'emploi de "Me" suppose que ta macro se trouve dans le code
de l'userform.
Daniel

Bonsoir à tous

Je n'arrive pas à compiler ces deux codes.
Une idée ?
Merci de votre aide
David

Private Sub Charge1()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[C2], f.[C65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo1.List = temp
End Sub

Private Sub Charge2()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[J2], f.[J65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo2.List = temp
End Sub




Avatar
Daniel.C
Essaie ce code. Il faut que les plages de connées soient régulièrement
espacées, et que les combos aient un nom générique (ComboBox1, ComBox2
etc.), sinon, ça commplique.

Private Sub Charge1()
Set f = Feuil2
Set Mondico = CreateObject("Scripting.Dictionary")
For i = 1 To 5
Mondico.RemoveAll
For Each c In Range(f.[C2], f.[C65000].End(xlUp)).Offset(, i - 1)
If c.Value <> "" Then Mondico.Item(c.Value) = c.Value
Next c
temp = Mondico.items
Call tri(temp, LBound(temp), UBound(temp))
Me.Controls("Combobox" & i).List = temp
Next i
Set Mondico = Nothing
End Sub

Daniel

Bonjour à vous 2

Je re formule ma question qui apparement n'a pas été comprise.

J'aimerais regrouper ces 2 codes (en réalité j'en ai 5) en un seul si cela
est possible.
Vous pouvez vous apercevoir que la différence viens des lignes :

>>For Each c In Range(f.[C2], f.[C65000].End(xlUp))
Me.Combo1.List = temp





J'aimerais les regrouper dans le genre :

Private Sub Regroupement()
Set f = Feuil2

Set MonDico = CreateObject("Scripting.Dictionary")

For Each c In Range(f.[C2], f.[C65000].End(xlUp))
For Each c In Range(f.[J2], f.[J65000].End(xlUp))

If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))

Me.Combo1.List = temp
Me.Combo2.List = temp

End Sub

Merci de votre aide


Avatar
michdenis
Bonjour,

Une autre approche très rapide pour remplir plusieurs
combobox avec des données sur une feuille de calcul.

L'utilisation ADO (Activex Data Object)
On doit ajoute à partir du menu de la fenêtre de l'éditeur de code,
outils / référence /
cocher : "Activex Data Object 2.8 Library Objects"

Voici un exemple :
http://cjoint.com/?cdlGsaxbfL



"DT" a écrit dans le message de groupe de discussion :

Bonsoir à tous

Je n'arrive pas à compiler ces deux codes.
Une idée ?
Merci de votre aide
David

Private Sub Charge1()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[C2], f.[C65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo1.List = temp
End Sub

Private Sub Charge2()
Set f = Feuil2
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[J2], f.[J65000].End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combo2.List = temp
End Sub
Avatar
DT
Bonjour et merci beaucoup à tous. Le code de Daniel me convient bien en
adaptant mes colonnes.