p'tit vieux
XLDnaute Occasionnel
Bonjour BONHEUR ET SANTE POUR 2024 à tous,
A l'instar de @patricktoulon j'avais écrit une classe qui "améliore" la classe de base Scripting.Dictionary.
Sur la base de ce que j'avais écrit pour mes besoins spécifiques, je l'ai refaite en retirant toutes les fonctions et autres qui n'étaient que pour mon application.
N.B.: Entre autre, j'ai retiré le traitement automatique des clés de type Range avec par conséquence des accès directes à des propriétés (adresses etc.). Si cela intéresse on peut voir.
A propos de cette classe "clsBaseDico" …
Contrairement à Patrick, je n'ai pas voulu garder les mécanismes de l'original aussi (et donc les inconvénients), par exemple, on ne peut plus "accidentellement" ajouter un élément.
Généralités:
En cas d'erreur toutes les Propriétés, Fonctions etc. renvoient un événement d'erreur (Err.Raise) qui est à traiter (ou pas à votre choix) par le code appelant.
Si ce n'est pas précisé, les propriétés sont en lecture et écriture
La classe clsBaseDico contient les propriétés et fonctions suivantes:
Eléments identiques à Dictionary:
A vous de voir !
A vos remarques.
Merci
A l'instar de @patricktoulon j'avais écrit une classe qui "améliore" la classe de base Scripting.Dictionary.
Sur la base de ce que j'avais écrit pour mes besoins spécifiques, je l'ai refaite en retirant toutes les fonctions et autres qui n'étaient que pour mon application.
N.B.: Entre autre, j'ai retiré le traitement automatique des clés de type Range avec par conséquence des accès directes à des propriétés (adresses etc.). Si cela intéresse on peut voir.
A propos de cette classe "clsBaseDico" …
Contrairement à Patrick, je n'ai pas voulu garder les mécanismes de l'original aussi (et donc les inconvénients), par exemple, on ne peut plus "accidentellement" ajouter un élément.
Généralités:
En cas d'erreur toutes les Propriétés, Fonctions etc. renvoient un événement d'erreur (Err.Raise) qui est à traiter (ou pas à votre choix) par le code appelant.
Si ce n'est pas précisé, les propriétés sont en lecture et écriture
La classe clsBaseDico contient les propriétés et fonctions suivantes:
Eléments identiques à Dictionary:
- CompareMode: vbTextCompare (= 1), vbBinaryCompare (= 0) ou DatabaseCompare (= 2). Par défaut -> vbTextCompare
- Syntaxe: Set clsBaseDico.CompareMode = vbTextCompare
- Count: En lecture seule. Indique le nombre d'enregistrement dans la collection
- Item: Lit ou écrit l'Item d'une clé (Key)
- Syntaxe: Set maVar = clsBaseDico.Item(aKey) ou Set maVar = clsBaseDico(aKey)
Set clsBaseDico.Item(aKey) = maVar
- Add: Ajoute un Item. Contrôle si il existe si oui déclenche un évènement erreur (Err.Raise).
- Syntaxe: clsBaseDico.Add aKey, aItem
aItem: Il peut être de n'importe quel type.
aKey: de type Alphanumérique.
- ChangeKey = Key : Idem que Key MAIS c'est fonction et non pas une propriété
- Syntaxe: Set maVar = clsBaseDico.ChangeKey(OldKey, NewKey)
maVar reçoit le NOUVEAU KeyS mise à jour - Tableau(n) -
- ItemS: En lecture seule. Retourne un tableau(n) de tous les Items du Dictionnaire.
- Syntaxe de lecture: For I= 0 to clsBaseDico.ItemS
OU For Each aItem In clsBaseDico.ItemS
- KeyS: En lecture seule. Retourne un tableau(n) de tous les clés (Key) du Dictionnaire.
- Syntaxe de lecture: For I= 0 to clsBaseDico.KeyS
OU For Each aKey In clsBaseDico.KeyS
- Remove: Retire un élément définit par sa clé
- Syntaxe: clsBaseDico.Remove aKey
- RemoveAll: VIDE TOUTE la classe. ATTENTION! L'instance de la classe existe toujours.
Autres Eléments à Dictionary:- SubCount: Sous compteur ou autre pour utilisation à votre convenance.
- Syntaxe: Set maVar = clsBaseDico.SubCount
Set clsBaseDico.SubCount = maVar
- Sort: Retourne le ou les tableaux Keys et ItemS trié.
- Syntaxe: maVar = clsBaseDico.Sort(aGetWhat). Par défaut KeyS1D -> Tableau(n) des KeyS
Le tableau trié est retourné d'après les demandes suivantes:
KeyS1D -> KeyS 1D => T(n) (by default)
ItemS1D -> Valeurs 1D => T(n)
KeyS2D -> Keys 2D => T(n,1)
ItemS2D -> Items 2D => T(n,1)
KeysItemS -> Keys and Items 2D => T(n,1) = Key , T(n,2) = Item
ItemSKeyS -> Items and Keys 2D => T(n,1) = Item, T(n,2) = Key
Public Enum GetWhat_enum
KeyS1D = 1
ItemS1D = 2
KeyS2D = 12
ItemS2D = 22
KeysItemS = 32
ItemSKeyS = 42
End Enum
- Transpose: Comme son nom l'indique . Remplace le WorksheetFunction.Transpose(aArray)
Convertir un tableau (aArray) 1D en 2D -> T(x,1). Si Xin2nd = True -> T(1,x)
Convertir un tableau (aArray) 2D en 2D -> T(y, x). Xin2nd = True n'a pas d'effet
Si Xin2nd= True pour T(n) inverse X en Y
- Syntaxe: maVar = clsBaseDico.Transpose(aArray,[Xin2nd]). Exemple: maVar = clsBaseDico.Transpose(clsBaseDico.KeyS, True) -> maVar(1,n KeyS)
Rien d'extraordinaire mais peut servir de base à des besoins spécifiques. A vous de voir !
A vos remarques.
Merci