begin process at 2012 02 14 15:18:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

trier une collection vba-excel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

trier une collection vba-excel

lundi 10 juillet 2006 à 12:24:42 | trier une collection vba-excel

larsene67

bon, on va essayer une approche différente de mon problème:
 soit la collection suivante:

(Dans class1:)
Public nom, prénom, age

(dans module1:)
Public Liste As New Collection
Dim machin As New Classe1

machin.nom = "CHRIST"
machin.prénom = "Jesus"
machin.age = 33
Liste.Add machin
Set machin = Nothing

machin.nom = "LUCAS"
machin.prénom = "GEORGES"
machin.age = 50
Liste.Add machin
Set machin = Nothing

machin.nom = "LUCAS"
machin.prénom = "Gérard"
machin.age = 50
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = 75
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = 73
Liste.Add machin
Set machin = Nothing

machin.nom = "DES BATIGNOLES"
machin.prénom = "Marie-thérese"
machin.age = 120
Liste.Add machin
Set machin = Nothing

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

--> form:
Veuillez choisir la selection d'age:
[] 33ans
[] 50ans
[] 73ans
[] 75ans
[] 120ans


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...)


Merci d'avance !!
lundi 10 juillet 2006 à 13:26:53 | Re : trier une collection vba-excel

jrivet

Membre Club
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>
lundi 10 juillet 2006 à 14:10:38 | Re : trier une collection vba-excel

FENETRES

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.

Méthodes de tri :
[ Lien ]

Fenêtres
lundi 10 juillet 2006 à 14:12:36 | Re : trier une collection vba-excel

larsene67

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....
lundi 10 juillet 2006 à 14:16:35 | Re : trier une collection vba-excel

larsene67

@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)

:(
lundi 10 juillet 2006 à 15:09:37 | Re : trier une collection vba-excel

jrivet

Membre Club
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 

Private Sub Form_Load() 
    Call P.Add_Personne("CHRIST", "Jesus", 33) 
    Call P.Add_Personne("LUCAS", "GEORGES", 50) 
    Call P.Add_Personne("LUCAS", "Gérard", 50) 
    Call P.Add_Personne("DES BATIGNOLES", "Marie-thérese", 75) 
    Call P.Add_Personne("DES BATIGNOLES", "Marie-thérese", 73) 
    Call P.Add_Personne("DES BATIGNOLES", "Marie-thérese", 120) 
End Sub 


Coloration syntaxique automatique [AFCK]
       

NOTE: J ai fait cela avec VB6 mais il devrait fonctionner sous VBA


@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>

lundi 10 juillet 2006 à 15:43:42 | Re : trier une collection vba-excel

larsene67

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 ;)

En tout cas merci beaucoup...
lundi 10 juillet 2006 à 16:40:05 | Re : trier une collection vba-excel

larsene67

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...

Ou bien?
lundi 10 juillet 2006 à 16:43:08 | Re : trier une collection vba-excel

jrivet

Membre Club
Epsylon9@gmail.com c est mon adresse pour l'envoi du fichier excel.

C est vrai que tes explication manquent un peu de clarete... j ai absolument rien compris.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>


Cette discussion est classée dans : prénom, age, add, machin, machinset


Répondre à ce message

Sujets en rapport avec ce message

TRI DANS UN LISTVIEW [ par reyman ] J'utilise un controle listview en mode "détails" avec 3 colonnes.Une pour le nom, la 2eme pour le prénom, la 3eme pour l'age.J'arrive a trier les donn bazar de mélange de collection, propriétés, conditions en vba-excel [ par larsene67 ] bon ,maintenant, je commence à patauger, si quelqu'un pouvait m'aider sur ce bout de code que je n'arrive pas à faire marcher:(suite de http://www.vbf présentation fichier txt [ par neg03 ] Bonjour,j'insère dans un fichier texte différentes données que je classe de cette façon :Nom   Prénom   Age   VilleLe probleme est que je ne sais pas création combobox [ par fred263 ] Bonjour,Voila je cherche a faire une combobox qui appellerai un fichier tableur (.ods) regroupant "nom, prénom, age" de personnesLe but est de sélecti gridview et Dtarow [ par ddove53 ] Bonjour,j'ai un datagridview et je veux ajouter dans ma colonne 1 des lignes en dur par exemple "toto" et "tata". Pour ce, je fais comme suit mais j'a Comment paramétrer une requête SQL avec 2 critères ? [ par Tursiop60 ] Bonsoir,Je travaille avec Visual Basic 2008 Express et vb.net.J'ai une base de donnée (Diet) avec une table (Clients) qui comporte plusieurs colonnes [BAR]Add ins en Excel 2007 [ par Pireplue ] J'ai crée une macro dans un classeur nommée "Augustin" que j'ai ensuite suvegardé en *.xla. Le fait de valider "Augustin" dans les Add-Ins d'Exel insè synchroniser dataset avec une BD(apres alter table add column) [ par dimabab ] bjr je modifie la structure de ma table lors d'un traitement .j' ajoute une nouvelle colonne .ca marche au niveau de ma base mais au niveau de dataset Datagrid avec cas à coché [ par zwiki ] bonjour les développeurs voila j'ai pu réaliser ce code qui permet d'ajouter une colonne de case à coché dans un datagrid mais le problème que cette Listview [ par scromania ] bonjour, J'utilise une listview je parviens à insérer dans la 1ere colonne Listview.items.add("valeur") Par contre pour un subitems je ne vois pas


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,293 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales