Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : trier une collection vba-excel [ Langages dérivés / VBA ] (larsene67)

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é 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 Programmation 3D [ par papse ] Bonjour à tous vous verez un un code ci-dessous que je veux exécuter sur VB 2008 mais ya messsage d'erreur qui me dit que : MeshGeometry3D t Probleme DATASET suivant resultat requete sql [ par kowalska ] bonjour a tous, voila je recupére une liste de ma class métier par rapport a ma requete. Tous se passe pour le mieux sauf que j'ai recupere la dernie fichier texte [ par neg03 ] Bonjour,je possède un fichier texte déja près formaté de la manière suivante :Fichier n°1           Le  03/01/2008Nom  Prénom  Ville  AgeDupond  Jacqu Appel d'une fontion VBscript [ par Maroxye ] Bonjour à vous tous,Désolé, je ne trouve pas la section correspondante à ma question qui parle de VB.net mais aussi de JAVASCRIPTVoilà, j'ai une table


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.