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/...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
GL
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.
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 !
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 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 !
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 !!
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 !
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 !