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

list view, listbox ou autre

7 réponses
Avatar
John-Pet
Bonjour à tous

j'ai un fichier .txt contenant des lignes de trois mots séparés par une
virgule

je voudrais afficher le tout dans une ?box avec des lignes et des
colonnes bien marquées ainsi qu'une ligne de titre
j'ai employé une listview pour faire cela
rien de doit etre modifié dans cette liste, par contre je rajoute des
lignes dans le fichier texte par un autre moyen et je voudrais les voir
apparaitres dans ma listview

quand je veux mettre a jour cette liste par du code je rajoute, toutes
les lignes du fichier texte, donc des doublons dans la listview

comment faire

merci et bonnes fêtes

--
Adresse mail : john-pet@wanadoo.fr
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

7 réponses

Avatar
tking
Après mûre réflexion, John-Pet a écrit :
Bonjour à tous

j'ai un fichier .txt contenant des lignes de trois mots séparés par une
virgule

je voudrais afficher le tout dans une ?box avec des lignes et des colonnes
bien marquées ainsi qu'une ligne de titre
j'ai employé une listview pour faire cela
rien de doit etre modifié dans cette liste, par contre je rajoute des lignes
dans le fichier texte par un autre moyen et je voudrais les voir apparaitres
dans ma listview

quand je veux mettre a jour cette liste par du code je rajoute, toutes les
lignes du fichier texte, donc des doublons dans la listview

comment faire

merci et bonnes fêtes



1er solution : Utiliser la fonction clear de listview, donc effacer la
liste et la re-remplir. ça peut paraitre lourd comme methode mais si tu
caches la listview au moment du remplissage l'operation est très
rapide. ça va aussi dépendre du nombre d'items.

Sinon faut faire une boucle qui contrôle que la nouvelle entrée n'est
pas déjà présente en comparant tous les items existants avec le nouvel,
donc un IF ... THEN dans un DO WHILE

Il y a déjà eu une discussion à ce sujet et des réponses tout a fait
convaincantes :)



Message ID : <#

Sujet : supprimer doublons dans listview

Date : Thu, 11 Oct 2007 21:03:42 +0200
Auteur : "Pascal"
Avatar
Jean-marc
John-Pet wrote:
Bonjour à tous

j'ai un fichier .txt contenant des lignes de trois mots séparés par
une virgule

je voudrais afficher le tout dans une ?box avec des lignes et des
colonnes bien marquées ainsi qu'une ligne de titre
j'ai employé une listview pour faire cela
rien de doit etre modifié dans cette liste, par contre je rajoute des
lignes dans le fichier texte par un autre moyen et je voudrais les
voir apparaitres dans ma listview

quand je veux mettre a jour cette liste par du code je rajoute, toutes
les lignes du fichier texte, donc des doublons dans la listview

comment faire

merci et bonnes fêtes



Hello,

en complément de la réponse précédente:
Pour n'ajouter que les lignes nouvelles et donc vérifier
qu'une entrée n'existe pas déjà, il existe des méthodes
extrèmement efficaces.
Tout ceci est présenté dans l'article générique sur les
structures de données, dans la FAQ:
http://faq.vb.free.fr/index.php?question7

Dans ton cas, une HasTable s'avèrerrait un excellent choix:
http://faq.vb.free.fr/index.php?question1

Evidemment, ceci n'a d'intérêt que pour de longs fichiers,
avec des milliers d'entrées.

Pour quelques dizaines d'entrées, une simple boucle suffit
évidemment. Et comme ça n'aurait pas de sens d'afficher une
liste comprenant plus que qq dizaines d'entrées, une méthode
brutale fera très probabelement l'affaire.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
John-Pet
Merci à vous deux pour ces réponses (que j'ai utilisé)

ma listview s'implemente toutes les heures avec l'ajout d'un
enregistrement par heure , puis j'efface la totalité de cette liste
toutes les 24h

ayant pas trouvé autre chose que la listview pour avoir des colonnes et
lignes , si il y a autre chose de plus simple je suis preneur

j'ai donc utilisé la méthode d'éffacer et de réecrire la totalité à
chaque changement

JP

--
Adresse mail :
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
Jean-marc
>John-Pet wrote:



Hello,

Merci à vous deux pour ces réponses (que j'ai utilisé)




Merci du retour !

ma listview s'implemente toutes les heures avec l'ajout d'un



<hs> implémente <> incrémente </hs>

enregistrement par heure , puis j'efface la totalité de cette liste
toutes les 24h



On est donc typiquement dans un cas ou le nombre de données à
traiter est très faible.

ayant pas trouvé autre chose que la listview pour avoir des colonnes
et lignes , si il y a autre chose de plus simple je suis preneur



Ben non, c'est parfait comme ça :-)

Si tu veux éviter de déployer le composant ListView, tu peux tout à fait
utiliser une TextBox avec police à empattement fixe (Courrier New par
exemple) et aligner correctement tes données en utilisant habilement la
fonction Space$() pour padder tes données avec les blancs nécessaires
pour un affichage bien aligné.

j'ai donc utilisé la méthode d'éffacer et de réecrire la totalité à
chaque changement



Ce qui était ici très clairement la meilleure solution !

A+


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Bonjour Jean-marc,
Jean-marc a écrit :
John-Pet wrote:



Hello,



[...]
Si tu veux éviter de déployer le composant ListView, tu peux tout à fait
utiliser une TextBox avec police à empattement fixe (Courrier New par
exemple) et aligner correctement tes données en utilisant habilement la
fonction Space$() pour padder tes données avec les blancs nécessaires
pour un affichage bien aligné.




Quelle drôle d'idée ... :-) Pour éviter de distribuer un composant,
j'aurais plutôt opté pour un ListBox avec tabulations, ici avec 3
tabulations (ie 4 colonnes) :

Private Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long

Private Const LB_SETTABSTOPS As Long = &H192


Private Sub Form_Load()
ReDim tTabuls(0 To 2) As Long
Dim i As Integer

tTabuls(0) = 60
tTabuls(1) = 90
tTabuls(2) = 120

' Efface / réinitialise d'éventuelles tabulations existantes
SendMessage List1.hwnd, LB_SETTABSTOPS, 0&, ByVal 0&
' Place les tabultations
SendMessage List1.hwnd, LB_SETTABSTOPS, 3&, tTabuls(0)

For i = 1 To 5
Me.List1.AddItem "aaaaa" & vbTab & _
"bbbbb" & vbTab & _
"ccccc" & vbTab & "ddddd"
Next i
End Sub


--
Meilleurs voeux à tous,

Jacques.
Avatar
Jean-marc
>Jacques93 wrote:
Bonjour Jean-marc,
Jean-marc a écrit :
John-Pet wrote:



Hello,



[...]
Si tu veux éviter de déployer le composant ListView, tu peux tout à
fait utiliser une TextBox avec police à empattement fixe (Courrier
New par exemple) et aligner correctement tes données en utilisant
habilement la fonction Space$() pour padder tes données avec les
blancs nécessaires pour un affichage bien aligné.






Salut Jacques,

Quelle drôle d'idée ... :-) Pour éviter de distribuer un composant,
j'aurais plutôt opté pour un ListBox avec tabulations, ici avec 3
tabulations (ie 4 colonnes) :


[...]

Très bonne idée bien sur !

Il se trouve que j'aime bien utiliser les textBox avec police à empattement
fixe et "tabulation"/"alignement" manuel, car c'est transposable ensuite
sur des environnements non graphiques ... Déformation professionnelle :-))

+----------------------------+
|Meilleurs Voeux 2008 à Tous |
+----------------------------+

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Jean-marc a écrit :

[...]

Il se trouve que j'aime bien utiliser les textBox avec police à empattement
fixe et "tabulation"/"alignement" manuel, car c'est transposable ensuite
sur des environnements non graphiques ... Déformation professionnelle :-))



J'ai fait le chemin inverse, relooker des applications Texte en mode
graphique, donc exit les polices fixes, look trop ringard :-(
sauf pour les éditions, parce que hein bon, faut pas exagérer,et à
l'époque sur des imprimantes matricielles, éditer en mode graphique ça
faisait un boucan infernal, et bouffait du ruban à tout va.

--
Cordialement,

Jacques.