Accueil > Forum > > > > trier une collection vba-excel
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
|
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
|
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
|
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
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|