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

ListBox / Tableau

8 réponses
Avatar
michel.arnoux
Bonjour,
Je me pose des questions sur le choix de ListBox ou Tableau en termes
de rapidit=E9 d'=E9xecution, encombrement m=E9moire et facilit=E9
d'exploitation ....

Pour le tri, l'utilisation de la propri=E9t=E9 Sorted sur ListBox permet
de trier alphab=E9tiquement =E0 partir du premier caract=E8re =E0 gauche, il
n'y a pas =E0 ma connaissance de motif (par exemple sur un champ date jj/
mm/aaaa, prendre d'abord aaaa, puis mm, puis jj).
Ou alors ne pas utiliser la propri=E9t=E9 Sorted et faire le Tri sur la
ListBox, comme sur un tableau mais peut on swapper par exemple ..

Pour la mise =E0 jour ou modification, peut on lire, sur ListBox, un
article, le modifier et le r=E9inscrire ? par effacer puis r=E9ajout ?
comment ?

Pour faire une recherche rapide sur ListBox (sorted) peut on op=E9rer
par dichotomie, comme pour les Tableaux ? (je n'ai pas encore essayer
sur ListBox, mais je pense que cela doit =EAtre possible).

Merci et bonne journ=E9e

8 réponses

Avatar
LE TROLL
Bonjour,

Je préfère les listes aux tableaux, dans la mesure ou l'objetList est
incorporé de base, tandis que le tableau ce rajoute, et il y a quelques
année j'ai eu de gros problèmes avec les objets additifs et leur mise à jour
d'OCX et DLL, de ce fait je tente de ne jamais les utiliser...

La liste est limitée a environ 32.000 enregistrements, sinon pour
l'affichage, elle est plus rapide encore si on la met invisible au moment
d'une gros chargement (5, 10.000)...

Dans la listes en fait, on prépare son entrée dans une variable, on met
tout en forme, puis on envoie, et dans le sens contraire on récupère dans
l'ordre d'exploitation de la liste pour travailler sur les octets de la
variable qui contient la ligne de données, par exemple ta date en d =
"mm/jj/aaaa", tu fais:
dim v as string
v = mid(d,4,3) & mid(d,1,3) & mid(d,6,4)
v = v & etc...
list1.additem v

Pour caller les chiffres, il faut prendre une police proportionnelle type
"couRier new", et l'instruction format(x,"0.00")

Le tri (sorted), ne s'utilise que dans des cas particuliers, mais il
interdit ensuite de rajouter à un endroit déterminé... on peut toutefois
jongler avec plusieurs listes

LIRE, MODIF, RAJOUT
Dim v
Dim i As Long
For i = 0 To List1.ListCount - 1
If List1.List(i) = "2" Then ' test
v = List1.List(1) ' passe dans variable la ligne list
List1.RemoveItem i ' supprime la ligne list
v = v * 4
List1.AddItem v, i ' réinsère à la bonne place (i)
Exit For
End If
Next i

*** swaper*** c'est quoi ???

Oui, la dichotomie fonctionne, avec list1.listcount comme base du nombre
d'enregistrements de la liste, mais... je ne sais pas ce que tu veux mettre
dans ta liste, cependant une recherche en boucle va très vite aussi sur une
liste pas trop gourmande, par exemple 30.000 enregistrement en boucle, ça
sort en 5 à 10 seconde (liste invisible)...

ouf!

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
a écrit dans le message de news:

Bonjour,
Je me pose des questions sur le choix de ListBox ou Tableau en termes
de rapidité d'éxecution, encombrement mémoire et facilité
d'exploitation ....

Pour le tri, l'utilisation de la propriété Sorted sur ListBox permet
de trier alphabétiquement à partir du premier caractère à gauche, il
n'y a pas à ma connaissance de motif (par exemple sur un champ date jj/
mm/aaaa, prendre d'abord aaaa, puis mm, puis jj).
Ou alors ne pas utiliser la propriété Sorted et faire le Tri sur la
ListBox, comme sur un tableau mais peut on swapper par exemple ..

Pour la mise à jour ou modification, peut on lire, sur ListBox, un
article, le modifier et le réinscrire ? par effacer puis réajout ?
comment ?

Pour faire une recherche rapide sur ListBox (sorted) peut on opérer
par dichotomie, comme pour les Tableaux ? (je n'ai pas encore essayer
sur ListBox, mais je pense que cela doit être possible).

Merci et bonne journée
Avatar
jean-marc
wrote in message
news:
Bonjour,



Hello,

Je me pose des questions sur le choix de ListBox ou Tableau en termes
de rapidité d'éxecution, encombrement mémoire et facilité
d'exploitation ....



Il fuat systématiquement utiliser un tableau,
et ce pour une raison très simple:
La base de la programmation organisée, c'est d'avoir une
séparation CLAIRE entre le code et la présentation.
On ne doit JAMAIS mixer le fonctionnel et l'interface.

Pour le tri, l'utilisation de la propriété Sorted sur ListBox permet
de trier alphabétiquement à partir du premier caractère à gauche, il
n'y a pas à ma connaissance de motif (par exemple sur un champ date jj/
mm/aaaa, prendre d'abord aaaa, puis mm, puis jj).
Ou alors ne pas utiliser la propriété Sorted et faire le Tri sur la
ListBox, comme sur un tableau mais peut on swapper par exemple ..



Il y a un article très complet et très documenté
sur le sujet dans la FAQ VB:

"Comment trier des données en VB ? Quelles sont les différentes méthodes de
tri ?"
http://faq.vb.free.fr/index.php?question1


On y explique notamment les différentes
fonctions utilsiables. On y explique aussi pourquoi
utiliser Liboix (sorte) est une MAUVAISE idée.


Pour la mise à jour ou modification, peut on lire, sur ListBox, un
article, le modifier et le réinscrire ? par effacer puis réajout ?
comment ?




Mieux vaut le faire dans un tableau et rafraichir.
La modification d'un article dans la listbox n'est par
contre pas un problème.

Pour faire une recherche rapide sur ListBox (sorted) peut on opérer
par dichotomie, comme pour les Tableaux ? (je n'ai pas encore essayer
sur ListBox, mais je pense que cela doit être possible).



La meilleure méthode est d'utiliser la méthode
décrite dans la FAQ (tout nouvel article):

"Comment rechercher rapidement un élément dans une ListBox ou un ComboBox ?"
http://faq.vb.free.fr/index.php?question5

C'est simple et ultra rapide.

Bonne prog!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
jean-marc
"LE TROLL" <le wrote in message
news:
Bonjour,

Je préfère les listes aux tableaux, dans la mesure ou l'objetList est
incorporé de base, tandis que le tableau ce rajoute, et il y a quelques
année j'ai eu de gros problèmes avec les objets additifs et leur mise à
jour d'OCX et DLL, de ce fait je tente de ne jamais les utiliser...



Option Explicit
Private Const TAILLE_TABLEAU As Long = 5

Private Sub Form_Load()
Dim Tableau(TAILLE_TABLEAU) As String
Dim i As Long
Dim message As String

Tableau(1) = "LE"
Tableau(2) = "TROLL"
Tableau(3) = "DIT"
Tableau(4) = "DES"
Tableau(5) = "BETISES"

For i = 1 To TAILLE_TABLEAU
message = message & Tableau(i) & " "
Next i
MsgBox Trim$(message)
End Sub


--
jean-marc
Avatar
LE TROLL
Ah ah :o)

Un tableau, tu prends bien par exemple: DataGrid ???

Et... dataGrid marche je présume comme les autres (calendar par
exemple), avec un programme commun dll ou ocx, non ???

Eh bien je peux te dire que je suis passé d'xpf à xpp, et que calendar +
les graphiques, ça ne voulait plus rien savoir, car le monsieur il m'avait
remplacé mes dll et ocx, et que j'avais un mal de chien à les retrouver, et
que donc j'ai décidé de faire mon propre calendrier, et de dessiner en
position relative directement sur la feuille au pixel mes graphiques, et que
depuis c'est du béton !

Alors j'apprécie fortement qu'on me disent quand je me plante, mais
encore faut-il me dire où et pourquoi ???

Dans cette attente cher ami, je te propose la lecture d'un petit roman
ici:

http://stores.lulu.com/store.php?fAcctID‰2472

Cordialement.

Joe.
--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"jean-marc" a écrit dans le message de news:
45f93c19$0$13852$

"LE TROLL" <le wrote in message
news:
Bonjour,

Je préfère les listes aux tableaux, dans la mesure ou l'objetList est
incorporé de base, tandis que le tableau ce rajoute, et il y a quelques
année j'ai eu de gros problèmes avec les objets additifs et leur mise à
jour d'OCX et DLL, de ce fait je tente de ne jamais les utiliser...



Option Explicit
Private Const TAILLE_TABLEAU As Long = 5

Private Sub Form_Load()
Dim Tableau(TAILLE_TABLEAU) As String
Dim i As Long
Dim message As String

Tableau(1) = "LE"
Tableau(2) = "TROLL"
Tableau(3) = "DIT"
Tableau(4) = "DES"
Tableau(5) = "BETISES"

For i = 1 To TAILLE_TABLEAU
message = message & Tableau(i) & " "
Next i
MsgBox Trim$(message)
End Sub


--
jean-marc



Avatar
LE TROLL
Heu, addendum, tu fais un tableau de variables (numériques généralement),
mais là je suis de ton avis, seulement après, il faudra bien les mettre dans
un objet tes variables, et sûrement que les variables tu tableau devront se
marier avec un ou deux libellés texte, donc dans une liste par exemple...
Dans ma réponse je n'ai pas traité la gestion de variables indicées, ben
non, j'ai seulement traité la gestion de datas dans une liste, leur
provenance est une autre histoire que tu complètes très bien...
Un quiproquo en somme...
--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"jean-marc" a écrit dans le message de news:
45f93c19$0$13852$

"LE TROLL" <le wrote in message
news:
Bonjour,

Je préfère les listes aux tableaux, dans la mesure ou l'objetList est
incorporé de base, tandis que le tableau ce rajoute, et il y a quelques
année j'ai eu de gros problèmes avec les objets additifs et leur mise à
jour d'OCX et DLL, de ce fait je tente de ne jamais les utiliser...



Option Explicit
Private Const TAILLE_TABLEAU As Long = 5

Private Sub Form_Load()
Dim Tableau(TAILLE_TABLEAU) As String
Dim i As Long
Dim message As String

Tableau(1) = "LE"
Tableau(2) = "TROLL"
Tableau(3) = "DIT"
Tableau(4) = "DES"
Tableau(5) = "BETISES"

For i = 1 To TAILLE_TABLEAU
message = message & Tableau(i) & " "
Next i
MsgBox Trim$(message)
End Sub


--
jean-marc



Avatar
jean-marc
"LE TROLL" <le wrote in message
news:%
Heu, addendum, tu fais un tableau de variables (numériques généralement),
mais là je suis de ton avis, seulement après, il faudra bien les mettre
dans un objet tes variables, et sûrement que les variables tu tableau
devront se marier avec un ou deux libellés texte, donc dans une liste par
exemple...
Dans ma réponse je n'ai pas traité la gestion de variables indicées, ben
non, j'ai seulement traité la gestion de datas dans une liste, leur
provenance est une autre histoire que tu complètes très bien...
Un quiproquo en somme...



Toutà fait, un simple quiproquo que
je soulignais humoriqtiquement :o)

En programmation (tous langages confondus),
le terme "Tableau" est le terme consacré
pour parler des "variables indicées".

Rien de grave, donc!

--
Jean-marc
Avatar
SAISAS
Bonjour,

je te propose une bonne raison d'utiliser des tableaux plutôt que des listes
pour trier tes données : il y a un bogue dans l'objet liste lorsque l'on
sélectionne par programme une zone hors des éléments visibles à l'affichage.

Tu risques donc des problèmes ...

"" a écrit :

Bonjour,
Je me pose des questions sur le choix de ListBox ou Tableau en termes
de rapidité d'éxecution, encombrement mémoire et facilité
d'exploitation ....

Pour le tri, l'utilisation de la propriété Sorted sur ListBox permet
de trier alphabétiquement à partir du premier caractère à gauche, il
n'y a pas à ma connaissance de motif (par exemple sur un champ date jj/
mm/aaaa, prendre d'abord aaaa, puis mm, puis jj).
Ou alors ne pas utiliser la propriété Sorted et faire le Tri sur la
ListBox, comme sur un tableau mais peut on swapper par exemple ..

Pour la mise à jour ou modification, peut on lire, sur ListBox, un
article, le modifier et le réinscrire ? par effacer puis réajout ?
comment ?

Pour faire une recherche rapide sur ListBox (sorted) peut on opérer
par dichotomie, comme pour les Tableaux ? (je n'ai pas encore essayer
sur ListBox, mais je pense que cela doit être possible).

Merci et bonne journée




Avatar
LE TROLL
Bonjour,

Le tri ce serait plutôt en variables, mais l'affichage ensuite en
liste...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"SAISAS" a écrit dans le message de news:

Bonjour,

je te propose une bonne raison d'utiliser des tableaux plutôt que des
listes
pour trier tes données : il y a un bogue dans l'objet liste lorsque l'on
sélectionne par programme une zone hors des éléments visibles à
l'affichage.

Tu risques donc des problèmes ...

"" a écrit :

Bonjour,
Je me pose des questions sur le choix de ListBox ou Tableau en termes
de rapidité d'éxecution, encombrement mémoire et facilité
d'exploitation ....

Pour le tri, l'utilisation de la propriété Sorted sur ListBox permet
de trier alphabétiquement à partir du premier caractère à gauche, il
n'y a pas à ma connaissance de motif (par exemple sur un champ date jj/
mm/aaaa, prendre d'abord aaaa, puis mm, puis jj).
Ou alors ne pas utiliser la propriété Sorted et faire le Tri sur la
ListBox, comme sur un tableau mais peut on swapper par exemple ..

Pour la mise à jour ou modification, peut on lire, sur ListBox, un
article, le modifier et le réinscrire ? par effacer puis réajout ?
comment ?

Pour faire une recherche rapide sur ListBox (sorted) peut on opérer
par dichotomie, comme pour les Tableaux ? (je n'ai pas encore essayer
sur ListBox, mais je pense que cela doit être possible).

Merci et bonne journée