Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et 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.

Réponse
 
Outils de la discussion
Vieux 12/08/2008, 06h42   #1 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 4
Par défaut Insérer un "record" dans une collection.

Bonjour,

J'essaie d'insérer une variable de type "record" dans une collection, mais j'obtiens l'erreur suivante:

Citation:
Seuls les types publics définis par l'utilisateur dans les modules objet publics peuvent être utilisés comme paramètres ou types renvoyés pour les procédures publiques des modules de classe ou comme champs des types publics définis par l'utilisateur
Voici le bout de code. Est-ce que l'opération est possible?

Code :
Option Base 1
Option Explicit
 
Private Type TestType
    NomId As String
    PolyId As String
    Info As String
End Type
 
Private Sub CommandButton1_Click()
 
  Dim TestRec As TestType
  Dim TestCol As New Collection
 
  TestRec.NomId = "test"
  TestRec.PolyId = "001"
  TestRec.Info = "10-jan-08"
  TestCol.Add TestRec
    
End Sub

Dernière modification par AlainTech ; 12/08/2008 à 08h35 Motif: Balises [quote] pour l'erreur
midgard30 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/08/2008, 08h13   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 116
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour et bienvenue sur nos forums.

Tu peux t'en sortir en créant un module de classe.
Dans VBA, menu Insertion/Module de classe
Dans la fenêtre de propriétés de ce module, tu donnes TestType comme propriété Name et tu colles ce code
Code :
Option Explicit
 
Public NomID As String
Public PolyID As String
Public Info As String
 
Tu vires le bloc Type...End Type et tu remplaces la ligne
Code :
  Dim TestRec As TestType
 
par
Code :
  Dim TestRec As New TestType
 
Voir mon tuto sur les classes pour plus de détails.
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/08/2008, 17h28   #3 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 4
Par défaut

Ça fonctionne, sauf que j'ai besoin de mettre le résultat de l'instruction Input à l'intérieur des variables (propriétés) de la classe et VB me donne l'erreur suivante:

Citation:
Variable required - can't assign to this expression
Voici le code complet:

Code :
 
Const g_TempFolder As String = "C:\temp"
Dim TestCol As New Collection
Dim TestRec As New clsTest
 
Open g_TempFolder & "\" & "test.csv" For Input As #1
 
Do While Not EOF(1)
  With TestRec
    Input #1, .NFIPlot, .PolyId, .SampleDate  '--> Input ne semble pas compatible avec les propriétés d'une classe.
    TestCol.Add TestRec, .PolyId
  End With
Loop
 
Close #1
 
Code du module de classe:

Code :
Option Explicit
 
Public NFIPlot As String
Public PolyId As String
Public SampleDate As String
midgard30 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide