Pour ceux que ça intéresse sur les Collections

Le
GL
Bonjour,

VBA ne permet pas d'insérer dans une collection un type
personnalisé (pour des raisons seulement en partie justifiables)

Type Personne
Nom as String
Prenom as String
End Type
Dim P as Personne
maCollection.Add P => plante

Donc on ne peut pas avoir un vecteur de Personne (sauf un tableau
mais ce n'est pas l'objet). On peut toujours définir une variable
qui permette d'écrire pour la 3è personne :
VecteurPersonne.Nom(3) / VecteurPersonne.Prenom(3)
Mais pas : VecteurPersonne(3).Nom / VecteurPersonne(3).Prenom

Sauf à construire une classe spécifique pour le type de donnée Personne.
Mais à priori pas de classe générale pour tout type structure (dont les
champs restent toujours des types de base de VBA).

Or : 1) on peut insérer une collection dans une collection
2) Collection("Champ") est une syntaxe fournie.
Donc modulo une petite variation de syntaxe par rapport aux structures,
on peut créer une classe générale pour tout type personnalisé qui
permette d'écrire :
VecteurPersonne(3)("Nom") / VecteurPersonne(3)("Prenom")

Ou comment, à force de mettre des syntaxes d'objet partout, VBA nous
ramène à la bonne vieille syntaxe des langages /normaux/

Cordialement.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
GL
Le #26177602
Le 04/06/2014 18:01, GL a écrit :
Bonjour,

Ou comment, à force de mettre des syntaxes d'objet partout, VBA nous
ramène à la bonne vieille syntaxe des langages /normaux/...



Et du coup ça a l'avantage que l'affectation :

Structure("Champ") = Range("A1:B10")

se passe de Set... puisque
Collection.Add Range("A1:B10")
et Collection.Add "Mon Texte"
ont la même syntaxe. ou Comment, à force de mettre des syntaxes d'objet
partout... on s'en passe allègrement !

Bonne soirée.
GL
Le #26177702
Le 04/06/2014 20:18, GL a écrit :
Le 04/06/2014 18:01, GL a écrit :
Bonjour,

Ou comment, à force de mettre des syntaxes d'objet partout, VBA nous
ramène à la bonne vieille syntaxe des langages /normaux/...



Et du coup ça a l'avantage que l'affectation :

Structure("Champ") = Range("A1:B10")

se passe de Set... puisque
Collection.Add Range("A1:B10")
et Collection.Add "Mon Texte"
ont la même syntaxe. ou Comment, à force de mettre des syntaxes d'objet
partout... on s'en passe allègrement !



Et on peut écrire :

Variable(i,j,k)("Champ") = Valeur
Variable(i)(j)(k)("Champ") = Valeur
Variable(i,j,k,"Champ") = Valeur

On a un tableau multidimensionnel structuré dont on n'a pas
à se préoccuper des bornes (pas de besoin de Redim).

Excellent ! Ce petit truc des Collections !!
Publicité
Poster une réponse
Anonyme