Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2007, 14h59   #1
Futur Membre du Club
 
Inscription : avril 2005
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 57
Points : 15
Points : 15
Par défaut [VBA] Collection et Classes

Bonjour,

j'ai une petite appli en VBA qui explore un dossier et qui extrait les données contenues dans des fichiers csv.
Les fichiers csv, sont tous formatés de la meme maniere (5 colonnes et meme type de données dans chaque colonne).
Donc j'ai voulu stocké ces données dans des collections parce que je ne sais pas combien j'ai de fichiers, et combien de lignes il y a par fichier.
J'ai donc créé 2 modules de classe :
- fichier
Code :
1
2
Public name As String
Public raw_data As Collection
l'attribut raw_data est une collection qui doit contenir des instances d'enregistrement.

- enregistrement
Code :
1
2
3
4
5
Public attribut1 As String
Public attribut2 As Integer
Public attribut3 As String
Public attribut4  As Integer
Public attribut5  As Integer
Tout ca pour dire, que j'ai declaré une collection dans mon appli qui doit contenir des instances de fichier.
Et tout ca ne marche pas.
Mes questions sont les suivantes :
- ai-je le droit d'utiliser des collections dans des modules de classes ?
- ai-je le droit de remplir une collection de modules de classes ?
- ai-je le droit de faire des collection de collection ?

globalement pourquoi ça marche pas ?
funkadelic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 10h14   #2
Futur Membre du Club
 
Inscription : avril 2005
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 57
Points : 15
Points : 15
alors je vais m'aider moi meme...et les autres qui auraient ce meme genre de probleme.
J'ai reussi a remplir ma collection d'instances de module de classes avec la syntaxe suivante:

maCollection.Add Item: instanceClasse

Par contre, j'ai declaré ma collection dans le code du workbook; j'y ai donc accès avec ThisWorkbook.maCollection.
J'ai créé quelques formulaires.
Dans un 1er formulaire je rempli ma collection, je teste son contenu, tout va bien.
Et j'arrive toujours a y acceder quand je passe aux autres formulaires.
Je ne suis pas un expert de VBA donc j'aimerai savoir quelle est le meilleur moyen (le plus correct, le plus propre) pour declarer ma collection accessible dans le code de tous mes formulaires ?
funkadelic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 12h10   #3
Futur Membre du Club
 
Inscription : avril 2005
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 57
Points : 15
Points : 15
Desole je reposte un autre probleme sur le meme sujet.
Pour le moment tout va bien.
J'ai donc créé mes modules de classe.
J'ai créé ma collection, j'ai instancié mes classes et rempli ma collection.
Je me ballade aux travers de mes formulaires.
Mais je n'arrive pas a recuperer les elements de la collection
voila ce que j'ai fait:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Dim current_sample As sample (c'est ma classe)
 
If ThisWorkbook.maCollection.Count = 0 Then
        dsf = MsgBox("No data !", vbCritical)
Else
        MsgBox ("TAILLE : " & ThisWorkbook.maCollection.Count)
 
        For i = 1 To ThisWorkbook.maCollection.Count
            Set current_sample = ThisWorkbook.maCollection.Item(i)
            MsgBox current_sample.name
        Next i
...
end if
sur la ligne où je recupere un objet avec la methode Item, j'ai le message 424 "Object required"

Alors, comment faire pour recuperer les données d'une collection ?
funkadelic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h39.


 
 
 
 
Partenaires

Hébergement Web