XL 2016 Travailler avec l'Objet Scripting.Dictionary

sargnonp

XLDnaute Nouveau
Bonjour le Forum,

J'ai un projet dans lequel je crée et j'utilise plusieurs objets Dictionary.
Je les ai créé avec
Dim DictXX as Object
et
Set DictXX = New Scripting.Dictionary
où XX = 01 à 12

et ils sont actuellement dans les modules là où j'en ai besoin.

Chacun de mes DICOs gere des infos particulières.
Je ne vais pas rentrer dans le détails ici.
Mais voici les 2 aspects de VBA que auxquels je suis confronté et pour lesquels je n'arrive pas à trouver de solutions :

1°) je voudrais réunir la création de tous les dicos dans un (nouvelle) module dédié.
Est ce qu'il serait possible de faire une boucle pour les créer du genre ...
for i = 1 to 12
Var01 = "Dict" & right("00" & i, 2)
Set Var01 = = New Scripting.Dictionary
next i

Mais je ne souhaite pas créer 12 fois le Dico Var01
mais les 12 Dicos dont le noms respectif serait Dict01, Dict02, Dict03 ... jusqu'à Dict12.

Est ce possible.
Si oui, je suis preneur d'une solution.

2°) L'objet Scripting.Dictionary est un objet dont la propriété .Name n'existe pas.
Alors comment puis récupérer le nom de nom dictionnaire lorsque je travaille avec ses items et ses clés ?
J'ai cherché pendant plusieur jours dernièrement pour créer un function qui me renverrait cette info
mais sans succès pour le moment.

Est ce possible.
Si oui, je suis preneur là aussi d'une solution.

Merci d'avance pour votre aide sur ces 2 questions.
Cdt
P.SARGNON
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Une première observation: si Set DictXX = New Scripting.Dictionary ne plante pas, c'est que la référence à 'Microsoft Scripting Runtime' est cochée. Dans ce cas c'est idiot de l'utiliser quand même en liaisons tardives à travers un DictXX As Object, déclarez le As Dictionary pour avoir les liaisons anticipées !
Réponse 1: Il est possible d'utiliser un tableau de Dictionary
Réponse 2: Non, mais un item d'un Dictionary peut contenir tout ce que peut contenir un Variant, y compris … un Dictionary, or cet Item pourra alors avoir une clé.
 

sargnonp

XLDnaute Nouveau
Bonjour.
Une première observation: si Set DictXX = New Scripting.Dictionary ne plante pas, c'est que la référence à 'Microsoft Scripting Dictionary' est cochée. Dans ce cas c'est idiot de l'utiliser quand même en liaisons tardives à travers un DictXX As Object, déclarez le As Dictionary pour avoir les liaisons anticipées !
Réponse 1: Il est possible d'utiliser un tableau de Dictionary
Réponse 2: Non, mais un item d'un Dictionary peut contenir tout ce que peut contenir un Variant, y compris … un Dictionary, or cet Item pourra alors avoir une clé.
Bonjour Dranred,
Merci pour ta reponse rapide et précise.
Concernant ta remarque du debut ... OUI c'est coché ... et je vais utilisé AS plutot que NEW
Ta Reponse 1 ... OK, je vais suivre ton conseil ... Dict(i) donc plutot que Dict&"i"
Ta Réponse 2 ... OK, compris ... bel astuce et si simple ... Merci
A une prochaine fois.
Bonne continuation et surtout bonnes fêtes de fin d'année à toutes et à tous si pas de news d'ici là. :=)))
Cdt
P.SARGNON
 

Dranreb

XLDnaute Barbatruc
Je n'ai pas dit d'utiliser As au lieu de New, au moment de l'exécution, j'ai dit d'utiliser Dictionary au lieu de Object à la déclaration.
Cela dit il est même possible de le déclarer As New Dictionary. Comme ça il sera initialisé automatiquement à sa 1ère utilisation.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof