Comment puis-je extraire une liste au chois des noms, ou prénom, ou ages pour pouvoir créer une form+listbox dynamique qui me permette de choisir les correspondances
(exemple:
on donne comme argument à une function "Liste" & "age", cela doit nous donner:
listeb(1)=33
listeb(2)=50
listeb(3)=73
listeb(4)=75
listeb(5)=120
JE NE DEMANDE PAS COMMENT FAIRE LA "FORM" (ca je sais), MAIS COMMENT TRIER LA COLLECTION "LISTE" pour en faire "listeb" en fonction d'arguments de choix de la propriété....
Ca fais une semaine que je patauge la dessus...
(voir mes précédentes questions toutes liées à ce problème...)
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 10 juil. 2006 à 13:26
Salut,
Je ne pense pas que en posant 4 fois la même question (juste pour qu elle soit dans les derniers messages du forum) soit la meilleure façon de procéder.
Si cela fait une semaine que tu essaie de faire quelque chose, peu être devrait tu penser à une autre solution .
Exemple: Une classe pouvant posséder une liste de classes Classe1 et possédant des fonctions permettant de te retourner une liste (de ce que tu veux).
@+, Julien Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>
FENETRES
Messages postés196Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention14 avril 2009 10 juil. 2006 à 14:10
La classe Collection de VB6 ne comprend ni méthode de tri ni critère de filtre. Il te faudra donc l'enrichir (cf. adresse ci-dessous) pour répondre à tes besoins.
larsene67
Messages postés18Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 8 novembre 2006 10 juil. 2006 à 14:12
Désolé pour la répétition, mais ce ne sont pas les mêmes questions, même si au final, cela concerne le même sujet.
Les 2 premières question m'ont appris des choses, et la dernière devait me permettre de trouver effectivement si il était possible d'effectuer ma manip d'une autre manière.
D'ailleurs, pourrais-tu développer un tout petit peu ton exemple, car je n'arrive pas à comprendre de quoi tu parles :(
Je reste encore assez débutant en vb, et j'ai un peu de mal avec son champ lexical....
larsene67
Messages postés18Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 8 novembre 2006 10 juil. 2006 à 14:16
@FENETRES:
c'est effectivement ce que j'ai essayé de faire, mais je bute sur des transferts d'items de collections, et de classes d'une sub à l'autre
(c'est pour ca que je métait un lien avec mes autres questions)
:(
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 10 juil. 2006 à 15:09
Salut,
Alors,
J'ai essayer de te faire un exemple. je n'ai pas eu le temps de le commenter (j'ai du taf quand même).
Essaie de regarder le fonctionnement peu être que cela pourra te donner des idées.
Alors.
Code D'un module de classe Appelé Personne
Option Explicit
Public Nom As String
Public Prenom As String
Public Age As Integer
Code D'un Module De classe Appelé Col_Personne
Option Explicit
Public Enum StyleListe
By_Age = 1
By_Nom = 2
By_Prenom = 3
End Enum
Private Tab_Personne As New Collection
Public Sub Add_Personne(Nom As String, Prenom As String, Age As Integer)
Dim Tmp_Personne As New Personne
With Tmp_Personne
.Nom = Nom
.Prenom = Prenom
.Age = Age
End With
Call Tab_Personne.Add(Tmp_Personne)
Set Tmp_Personne = Nothing
End Sub
Public Function GetList(Typ As StyleListe, ReturnList()) As Integer
ReDim ReturnList(Tab_Personne.Count - 1)
Dim i As Integer
Dim Tmp_C As Personne
i = 0
For Each Tmp_C In Tab_Personne
Select Case Typ
Case By_Age: ReturnList(i) = Tmp_C.Age
Case By_Nom: ReturnList(i) = Tmp_C.Nom
Case By_Prenom: ReturnList(i) = Tmp_C.Prenom
End Select
i = i + 1
Next
GetList = UBound (ReturnList)
End Function
Et enfin pour finir Code pour tester
Option Explicit
Dim P As New Col_Personne
Dim Col()
Dim i As Integer
Private Sub Command1_Click()
Call P.GetList(By_Age, Col)
Call FillList
End Sub
Private Sub FillList()
Call List1.Clear
For i = LBound(Col) To UBound(Col)
Call List1.AddItem(Col(i))
Next i
End Sub
Private Sub Command2_Click()
Call P.GetList(By_Prenom, Col)
Call FillList
End Sub
Private Sub Command3_Click()
Call P.GetList(By_Nom, Col)
Call FillList
End Sub
larsene67
Messages postés18Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 8 novembre 2006 10 juil. 2006 à 15:43
Euh....
En tout cas, merci beaucoup, mais je crois que je vais passer le reste de l'après-midi à comprendre tout ca,
donc j'en dirais plus plus tard.
Ceci n'est plus (ou en tout cas à cette heure-ci) de mon niveau, il va falloir que je me derrouille un peu les neurones ;)
larsene67
Messages postés18Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 8 novembre 2006 10 juil. 2006 à 16:40
Ok, je commence à comprendre ce que sont des classes ;)
En fait, ce que tu m'a donné ressemble assez à ce que j'avais fait, mis à part que je l'avais fait au travers de sub de module, et non de classes.
Toutefois, mon soucis reste encore:
Le resultat que j'essai d'obtenir à partir de la premiere collection est une autre collection dont j'utilise une des propriété pour mes optionbuttons, et les autres pour un traitement ultérieur en fonction de ceux cochés (en fait, un nettoyage du tableau excel dont sortent les infos de la premiere collection)
Cette deuxieme collection est dans mon code créé par une copie de la première, puis un nettoyage (enlevement de lignes) en fonction de conditions qui changent suivant les lancement de cette dernier sub.
C'est pourquoi j'essayais sans succès de passer cette condition à la sub qui doit me faire ce nettoyage.
Pfff...
En fait, plus j'essaie d'éxpliquer, plus j'ai l'impression que mes expliquations manquent de clarté.
Enfin, à défaut de pouvois envoyer le fichier excel complet, on va essayer de continuer comme ca ;)
En tout cas, je ne vois pas l'avantage que pourra me donner le traitement par classes pour mon traitement conditionnel...