Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utiliser un module de classe déclaré dans un .xlsm

1 réponse
Avatar
Stéphane Santon
Bonjour,

Mon dernier programme VBA était sous Excel 2003 ! Ici un petit projet
ponctuel...

Je désire exporter des fragments de feuilles au format JSON.
J'ai trouvé cette bibiliothèque intéressante :
http://ramblings.mcpher.com/Home/excelquirks/classeslink/data-manipulation-classes/data-abstraction

C'est un fichier .xlsm . Dans la macro de mon classeur, je déclare :

Dim goSets As cDataSets

mais il me répond à l'exec : "Type défini par l'utilisateur non
défini".

Comment déclarer l'usage de cette librairie externe ?

Merci

--
Stéphane

Jeune Chambre Economique de Saintes *** http://www.jce-saintes.org
Agitateurs d'idées... accélérateurs de talents !

BTS Electrotechnique *** http://enselec.santonum.eu

1 réponse

Avatar
MichD
Bonjour,

Le fichier que j'ai récupéré est rempli de module de classe
et de module standard. Comme le code semble imbriquer
d'un module à l'autre, je vais répondre simplement à ta
question à savoir comment déclarer la variable pour pouvoir
l'utiliser.

Dans un module standard, écris cette petite procédure.
L'expression "New" est très importante, car c'est lui qui
cré l'instance de l'objet "cDataSets". Évidemment dans la
liste des modules de classe tu vois ce dernier "cDataSets"
mais quand tu fais la déclaration du module, c'est l'objet
"CdataSets" que tu créées.
À cet égard, les procédures "Get()" ou "Let()" font référence
à une propriété de l'objet "cDataSets". Lorsqu'il s'agit d'un
objet on utilise "Set" pour définir l'objet.

Quand tu écris une procédure dans un module de classe, tu
écris en fait la "méthode" (une action) qui est associée à l'objet
que tu as créé.

Pour accéder à ces "Propriétés" ou "Méthodes" de l'objet "cDataSets"
il s'agit de taper un point immédiatement après la variable objet
que tu as utilisée.

Si tu n'es pas trop familier avec les modules de classe, tu risques de
trouver
très ardu de faire une réplique de ces modules...Tu as plusieurs heures de
travail devant toi si ce n'est des jours de plaisir...!

N.B. Ce n'est pas une librairie (bibliothèque), mais un module de classe.

'------------------------------------------
Sub test()
Dim Md As New cDataSets
Md.create "Michd"
Md.init Range("A1:A10"), True
End Sub
'------------------------------------------


MichD
---------------------------------------------------------------