OVH Cloud OVH Cloud

Validation

6 réponses
Avatar
David Laulan
Comment utiliser une barre defilante du formulaire qui reprend par exemple
les codes sans doublons?

6 réponses

Avatar
JB
Bonjour,

Liste en colonne A.

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp))
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.ComboBox1.List = MonDico.items
End Sub

http://cjoint.com/?mErlfBHNqb


JB



Comment utiliser une barre defilante du formulaire qui reprend par exemple
les codes sans doublons?


Avatar
François
Bonjour JB,

En "fouillant dans ton classeur envoyé en Cjoint, j'ai découvert l'optionnel
module pour le tri qui fonctionne à merveille.

J'ai du mal à comprendre comment cela arrive à fonctionner - la preuve est
pourtant là !

Pourrais-tu nous démystifier un peu ta création ?

Cordialement

François

"JB" a écrit dans le message de news:

Bonjour,

Liste en colonne A.

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp))
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.ComboBox1.List = MonDico.items
End Sub

http://cjoint.com/?mErlfBHNqb


JB



Comment utiliser une barre defilante du formulaire qui reprend par exemple
les codes sans doublons?


Avatar
JB
Bonsoir,

Est-ce + clair?

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp)) ' élimination
des doublons
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
temp = MonDico.items ' le tableau temp() reçoit les
éléments de MonDico
Call Tri(temp, LBound(temp), UBound(temp)) ' tri de temp()
Me.ComboBox1.List = temp ' éléments
dans combobox1
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub

http://boisgontierj.free.fr/pages_site/SansDoublonsDictionnary.htm

Cordialement JB


Bonjour JB,

En "fouillant dans ton classeur envoyé en Cjoint, j'ai découvert l'op tionnel
module pour le tri qui fonctionne à merveille.

J'ai du mal à comprendre comment cela arrive à fonctionner - la preuv e est
pourtant là !

Pourrais-tu nous démystifier un peu ta création ?

Cordialement

François

"JB" a écrit dans le message de news:

Bonjour,

Liste en colonne A.

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp))
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.ComboBox1.List = MonDico.items
End Sub

http://cjoint.com/?mErlfBHNqb


JB



Comment utiliser une barre defilante du formulaire qui reprend par exem ple
les codes sans doublons?




Avatar
François
Bonsoir,

En fait, ce que je ne saisis pas trop, c'est la partie :
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)

Je ne comprends pas bien le principe et l'imbrication des 3 Do Loop ...

Mais ce n'est plus l'heure de "causer" de cela !

Meilleurs voeux à toi et à ceux qui te sont chers pour 2007.

Et reconnaissance à toi pour tout ce que tu nous apportes ...

Meilleurs voux à tous les contributeurs du MFPE

François

"JB" a écrit dans le message de news:

Bonsoir,

Est-ce + clair?

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp)) ' élimination
des doublons
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
temp = MonDico.items ' le tableau temp() reçoit les
éléments de MonDico
Call Tri(temp, LBound(temp), UBound(temp)) ' tri de temp()
Me.ComboBox1.List = temp ' éléments
dans combobox1
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub

http://boisgontierj.free.fr/pages_site/SansDoublonsDictionnary.htm

Cordialement JB


Bonjour JB,

En "fouillant dans ton classeur envoyé en Cjoint, j'ai découvert
l'optionnel
module pour le tri qui fonctionne à merveille.

J'ai du mal à comprendre comment cela arrive à fonctionner - la preuve est
pourtant là !

Pourrais-tu nous démystifier un peu ta création ?

Cordialement

François

"JB" a écrit dans le message de news:

Bonjour,

Liste en colonne A.

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp))
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.ComboBox1.List = MonDico.items
End Sub

http://cjoint.com/?mErlfBHNqb


JB



Comment utiliser une barre defilante du formulaire qui reprend par
exemple
les codes sans doublons?




Avatar
JB
Bonjour,

Le principe du tri Quick-Sort est le suivant:

On répartit la suite de nombres à trier de telle sorte que tous les
éléments inférieurs à un élément de référence (36 sur
l'exemple) soient à gauche de celui-ci et que tous ceux qui lui sont
supérieurs à sa droite.

[70 61 16 48 29 18 59 36 3 70 3 22 39 30 58 10] <- Avant
¦
Elément médian de référence
¦
[3 30 16 22 29 18] 36 [70 59 48 39 59 61 58 70] <- Après

¦ ¦
Eléments<36 Eléments>36

Tous les éléments de l'ensemble de droite sont supérieurs à ceux de
l'ensemble de gauche. En procédant de la même façon sur les 2
sous-ensembles générés, on obtient 4 sous-ensembles ordonnés entre
eux.Lorsque la taille des ensembles devient égale à 1,les nombres
sont triés.

Choix de l'élément de référence:

Pour obtenir des sous-ensembles de tailles équilibrées,il faut que
l'élément de référence ne soit ni trop petit,ni trop grand.

-La méthode classique consiste à choisir l'élément de référence
parmi 3 éléments:Ceux de gauche,du milieu et de droite.
-Nous observons qu'en choisissant l'élément de référence au
milieu de la liste à traiter, le temps de tri est le même.

Remarques:
-Si la liste est déja triée,le temps de tri n'augmente pas lorsque
l'élément de référence est choisi au milieu,ce qui n'est pas le cas
lorsqu'il est choisi à gauche.
-Le programme proposé est récursif.

http://boisgontierj.free.fr/pages_site/TriQuickSort.htm

Cordialement JB



Bonsoir,

En fait, ce que je ne saisis pas trop, c'est la partie :
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)

Je ne comprends pas bien le principe et l'imbrication des 3 Do Loop ...

Mais ce n'est plus l'heure de "causer" de cela !

Meilleurs voeux à toi et à ceux qui te sont chers pour 2007.

Et reconnaissance à toi pour tout ce que tu nous apportes ...

Meilleurs voux à tous les contributeurs du MFPE

François

"JB" a écrit dans le message de news:

Bonsoir,

Est-ce + clair?

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp)) ' élimination
des doublons
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
temp = MonDico.items ' le tableau temp() reçoit les
éléments de MonDico
Call Tri(temp, LBound(temp), UBound(temp)) ' tri de temp()
Me.ComboBox1.List = temp ' éléments
dans combobox1
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub

http://boisgontierj.free.fr/pages_site/SansDoublonsDictionnary.htm

Cordialement JB


Bonjour JB,

En "fouillant dans ton classeur envoyé en Cjoint, j'ai découvert
l'optionnel
module pour le tri qui fonctionne à merveille.

J'ai du mal à comprendre comment cela arrive à fonctionner - la pre uve est
pourtant là !

Pourrais-tu nous démystifier un peu ta création ?

Cordialement

François

"JB" a écrit dans le message de news:

Bonjour,

Liste en colonne A.

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp))
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.ComboBox1.List = MonDico.items
End Sub

http://cjoint.com/?mErlfBHNqb


JB



Comment utiliser une barre defilante du formulaire qui reprend par
exemple
les codes sans doublons?






Avatar
François
Merci beaucoup pour ces précisions,

c'est en effet beaucoup plus clair ...

L'occasion de se rappeler que, pour moi, la route sera encore longue ! ...

Remerciements

François

"JB" a écrit dans le message de news:

Bonjour,

Le principe du tri Quick-Sort est le suivant:

On répartit la suite de nombres à trier de telle sorte que tous les
éléments inférieurs à un élément de référence (36 sur
l'exemple) soient à gauche de celui-ci et que tous ceux qui lui sont
supérieurs à sa droite.

[70 61 16 48 29 18 59 36 3 70 3 22 39 30 58 10] <- Avant
¦
Elément médian de référence
¦
[3 30 16 22 29 18] 36 [70 59 48 39 59 61 58 70] <- Après

¦ ¦
Eléments<36 Eléments>36

Tous les éléments de l'ensemble de droite sont supérieurs à ceux de
l'ensemble de gauche. En procédant de la même façon sur les 2
sous-ensembles générés, on obtient 4 sous-ensembles ordonnés entre
eux.Lorsque la taille des ensembles devient égale à 1,les nombres
sont triés.

Choix de l'élément de référence:

Pour obtenir des sous-ensembles de tailles équilibrées,il faut que
l'élément de référence ne soit ni trop petit,ni trop grand.

-La méthode classique consiste à choisir l'élément de référence
parmi 3 éléments:Ceux de gauche,du milieu et de droite.
-Nous observons qu'en choisissant l'élément de référence au
milieu de la liste à traiter, le temps de tri est le même.

Remarques:
-Si la liste est déja triée,le temps de tri n'augmente pas lorsque
l'élément de référence est choisi au milieu,ce qui n'est pas le cas
lorsqu'il est choisi à gauche.
-Le programme proposé est récursif.

http://boisgontierj.free.fr/pages_site/TriQuickSort.htm

Cordialement JB



Bonsoir,

En fait, ce que je ne saisis pas trop, c'est la partie :
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)

Je ne comprends pas bien le principe et l'imbrication des 3 Do Loop ...

Mais ce n'est plus l'heure de "causer" de cela !

Meilleurs voeux à toi et à ceux qui te sont chers pour 2007.

Et reconnaissance à toi pour tout ce que tu nous apportes ...

Meilleurs voux à tous les contributeurs du MFPE

François

"JB" a écrit dans le message de news:

Bonsoir,

Est-ce + clair?

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp)) ' élimination
des doublons
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
temp = MonDico.items ' le tableau temp() reçoit les
éléments de MonDico
Call Tri(temp, LBound(temp), UBound(temp)) ' tri de temp()
Me.ComboBox1.List = temp ' éléments
dans combobox1
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub

http://boisgontierj.free.fr/pages_site/SansDoublonsDictionnary.htm

Cordialement JB


Bonjour JB,

En "fouillant dans ton classeur envoyé en Cjoint, j'ai découvert
l'optionnel
module pour le tri qui fonctionne à merveille.

J'ai du mal à comprendre comment cela arrive à fonctionner - la preuve
est
pourtant là !

Pourrais-tu nous démystifier un peu ta création ?

Cordialement

François

"JB" a écrit dans le message de news:

Bonjour,

Liste en colonne A.

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In Range([A2], [A65000].End(xlUp))
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.ComboBox1.List = MonDico.items
End Sub

http://cjoint.com/?mErlfBHNqb


JB



Comment utiliser une barre defilante du formulaire qui reprend par
exemple
les codes sans doublons?