Déclaration d'un tableau à plusieurs données

Bonjour,

Je voulais savoir si quand on déclarait un tableau DIm Tab01(4,4,4) avec les informations sont :

Texte pour toutes les données => As "String"

Numérique pour toutes les données => As "Integer"

Texte et Numérique pour certaines données => As "Variant"

Bonjour,

Comme pour une variable classique, un tableau peut être typé ou non typé.

Dim Tab01(4, 4, 4)

=> variant

Dim Tab01(4, 4, 4) As String

=>string

Dim Tab01(4, 4, 4) As Integer

=> etc

Toutes les dimensions du tableau sont de même type.

Une solution pour gérer des types de données différents est de créer une classe.

La programmation ensuite est bien plus facile

2 exemples en PJ : avec un tableau de personnes, et avec une collection de personnes.

Bouben

Bonsoir et merci de la réponse et des exemples,

Etant novice en VBA, je ne comprends pas tout.

Par contre, je ne connaissais pas le "Modules de classe" et quelle différence entre celui-ci et "Modules"

Bonjour,

Dans une sub j'ai du mal à comprendre l'utilisation de Set et dans votre exemple de New.

La sub est la suivante :

'instanciation d'une personne Set oPers = New clsPersonne oPers.Nom = "DUPONT" oPers.Departement = 21 oPers.DateNaissance = "01/01/1950" Set tbPers(1) = oPers Set oPers = Nothing

Je mets le fichier ci-dessous :

Bonsoir,

La variable oPers est un objet, de type "clsPersonne" (module de classe).

Les objets doivent être initialisés pour pouvoir ensuite être utilisés.

Par l'instruction "Set MonObjet = new XXXX", on crée une instance de la classe.

Cet objet est ensuite détruit par l'instruction "Set MonObjet = nothing".

Ceci est valables pour tous les objets.

Des informations complètes sont disponibles à l'adresse indiquée plus haut, plus spécialement dans la rubrique "II. Généralités".

Bouben

Bonjour et merci des réponses

Dans votre exemple "ClassePersonne.xlsm" j'ai besoin d'explication concernant le Tableau pour les éléments suivants :

Dim tbPers(1 To 10) As clsPersonne : Je suppose que c'est un tableau à 1 dimension avec 10 lignes !!!

Si je comprends bien, on ne peut mettre que 10 informations soit :

3 Personnes avec le Nom, Département, Date de Naissance

1 Personne avec le nom seulement

Bonjour JeanF,

Ce n'est exactement ça

Chaque personne créée est un objet, distinct, avec 3 propriétés.

Chaque personne est ensuite affectée au tableau. Le tableau a une seule dimension.

Tb(1) contient la première personne, avec les 3 informations

Tb(2) contient la deuxième personne, idem

Tb(10) peut contenir une dixième personne (mais non alimentée dans l'exemple)

Le tableau est déclaré pour 10 valeurs, il peut donc contenir 10 personnes.

 Dim tbPers(1 To 10) As clsPersonne

Ci-joint un second exemple, en allant un peu plus loin, avec l'utilisation d'une collection.

Dans la procédure "AjouterPersonne" :

  • création d'une personne
  • alimentation des propriétés de la personnes prenant les données passées en paramètres (chaque propriété de l'objet peut avoir un type différent : entier, date, booléen, ...)
  • ajout de la personne dans la collection

L'avantage d'une collection par rapport à un tableau :

  • le nombre d'éléments que contient une collection n'est pas prédéterminé : on peut ajouter autant d'objets que besoin
  • on peut accéder directement à un élément de la collection à partir de la clef
  • on peut parcourir la collection avec l'instruction "for each"

L'utilisation des collections et des modules de classe permet une programmation sympathique, lisible et fiable !

Bouben

Bonsoir,

Merci pour les informations et l'exemple

Bonjour @bouben,

Dans l'exemple 2 du fichier joint, comment est-il possible de connaître le nombre de collections dans le tableau ?

Bonsoir,

Tu mélanges un peu les termes ...

Dans l'exemple 2, il n'y pas de tableau, seulement une collection.

La propriété "count" de la collection permet de connaître le nombre d'éléments de la collection, c'est-à-dire le nombre de personnes.

Exemple, à la fin de la procédure :

MsgBox colPers.Count

Lorsque tu instancies ta collection

Set colPers = New Collection

La collection est créée, mais il n'y a aucun élément : colPers.Count = 0

Lorsque tu ajoutes un premier élément à la collection :

colPers.Add oPers, oPers.Nom 

Elle a maintenant 1 élément

Lorsque tu ajoutes un 2ème élément à la collection :

colPers.Add oPers, oPers.Nom 

Elle a maintenant 2 éléments

Une collection peut donc contenir un nombre indéfini d'éléments, le nombre d'éléments augmente au fur et à mesure que tu les ajoutes.

Bouben

Bonjour @bouben

Merci de la réponse,

Je pensais que ça faisait parti de tableau à 2 dimensions car l'exemple 1 était un tableau à 2 dimensions.

C'est pour ça que j'ai confondu

Là avec les explications, je comprends mieux

Merci pour les précisions

Rechercher des sujets similaires à "declaration tableau donnees"