Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 les machistes (utilisateurs de Mac OS peuvent ils tester ceci

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
@RyuAutodidacte m' a rappelé un lien vers un amis de l'autre monde concernant une classe pseudo dictionnaire pour MAC
malgré que j'apprécie beaucoup l'auteur (avec qui j'ai même collaboré sur l’accélérateur de requête entre autres ) ,je trouve que c'est un peu usine à gaz

j'ai donc fait les choses à ma façon
mais avant d'aller plus loin car des idées j'en ai plein ,si vous êtes un utilisateur sur MAC pouvez vous tester ce pseudo dictionnaire
sur Windows ça match il me faut confirmation sur MAC

Merci pour vos retours
 

Pièces jointes

  • classe dictionary pour Mac.xlsm
    18.3 KB · Affichages: 10
Dernière édition:

laurent950

XLDnaute Barbatruc
Re @patricktoulon

Je tiens à souligner l'impressionnante compétence démontrée dans le code VBA que tu as partagé. Tu as réussi à reproduire la fusion des fonctionnalités des objets Collection et Dictionary via ton module de classe en l’agrémentant de fonctionnalités complémentaires très intéressantes, ce qui est une approche créative et ingénieuse.

Ton code témoigne d'une grande maîtrise de la programmation. C'est une réalisation remarquable, et je suis impressionné par la manière dont tu as élaboré cette structure de données. En outre, ton explication a grandement contribué à ma compréhension de ce code qui semble si simple à la lecture, mais qui en est d’une grande complexité dans sa mise en œuvre.

Ton travail est une source d'inspiration, et je suis ravi de l'avoir exploré grâce à ton explication. Encore bravo pour cette réalisation exceptionnelle.

Merci Patrick

Laurent
 

patricktoulon

XLDnaute Barbatruc
re
merci ca va n'en rajoute pas
ce n'est que quelques lignes de code

tout ça pour te montrer (et je tiens à le souligner) que les proprety (let,set,get) ne sont pas indispensables
et là je le redis on s'en sert uniquement si des opérations de quelques sortes que se soit doivent être faite pour le return de la property elle même


pour tout te dire là ou je suis fort c'est de réfléchir a tout ce qui pourrait ne pas marcher
avant même une seule ligne de code

là ou d'autre se contente d'avancer en ne voyant que l'objectif et de patcher en cours de route avec des lignes de code supplémentaires car ils n'ont pas prévu ceci ou cela
moi j'ai une vue d'ensemble et je compartimente
si je n'ai pas tout dans la tête le module restera blanc
et beaucoup de sub de tests en tout genre car je sais pas tout et j'en oubli aussi

maintenant tu sais
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Hello @patricktoulon
J'ai une question sur ton reverse :
La clé censé être unique si tu fais un reverse alors que tu as 2 items de même valeur… ca va poser problème … ? car tu ca fera 2 clés identique … par la suite
tu as déjà fait des reverses avec le dictionnaire ? et dans quels cas ?
 

dysorthographie

XLDnaute Accro
Bonjour,
Module de classe dictionary
sur un dictionary la valeur et la clé ne son pas optionnel!
VB:
Public Function Add(k As String, i As Variant , Optional ByVal Overwrite_Item As Boolean = False)
    x = Application.IfError(Application.Match(k, Key, 0), 0)
    If Not CBool(x) Then
        a = UBound(Key) + 1: ReDim Preserve Key(1 To a): ReDim Preserve Item(1 To a): Key(a) = k
        If IsObject(i) Then Set Item(a) = i Else Item(a) = i
    Else
      If Overwrite_Item Then If IsObject(i) Then Set Item(x) = i Else Item(x) = i Else Err.Raise 457, "Dictionary", "Cette clé est déjà associée à un élément de cette collection"
    End If
End Function
Code:
Dim dico As dictionary
Sub dest()
    Dim k, it
    Set dico = New dictionary
    dico.Add "toto", "25" 'sur un dictionary la clé 1 et pas "1" est possible!
    dico.Add "toto", Range("A2"), True
    dico.Add "toto", "25"
End Sub

pour la suite je ne vois pas pourquoi tu bannis l'utilisation de collection et de property?
Diff:
dico.items(1)=dico.items(1)+1 'property'
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re Bonjour à tous

sur un dictionary la valeur et la clé ne son pas optionnel!
a ben ca c'est nouveau !!!
je peut te prouver quand tu veux que je peux remplir un dictionnaire (scripting) sans valeur avec uniquement les clés

mais déjà avant de poser des questions il faudrait prendre la next version pour que l'on parle de la même chose
le overwrite n'est plus un argument de la fonction Add mais une propriété dans la version 4
 

dysorthographie

XLDnaute Accro
J'ai fait un test avant
Désolé j'avais pris lecode du poste #37

Quand j'ai testé la dernière version n'était pas activé.

Si je teste la dernière version il y en aura une nouvelle avant que je pousse reprendre.

Mes objection ne sont pas sur le overwrite don je n'avais pas vu l'intérêt du reste.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
robert
et avec des items et la lecture de l'item
Code:
Sub test()
Set dico = CreateObject("scripting.dictionary")
dico("toto") = 25
dico("titi") = 33
dico("riri") = 41
dico("fifi") = 25
dico("loulou") = 12

k = dico.keys
For Each elem In dico
i = i + 1:
MsgBox elem & "--->" & dico(k(i - 1))
Next
End Sub

RYU
mais c'est là ou le truc il est formidable avec ma dernière version
c'est que oui le reverse va certainement faire des doublons dans les clé
mais des doublons paires(cle/items) non

le reverse et tout y cointi je ne pourrais pas le faire avec un object collection sans justement provoquer l'erreur

je vous le redonne la V4 sans collection elle encore un peu évoLU2
mais j' ai encore 2/3 choses a consolider

si vous arrivez a faire tout ca avec un vrai dico ou collection j'abandonne le vba
 

Pièces jointes

  • classe dictionary pour Mac V 4.xlsm
    34.1 KB · Affichages: 1

patricktoulon

XLDnaute Barbatruc
robert je l'ai expliqué ça au debut
si tu utilise le ".Add" du dico tu es obligé d'avoir les deux arguments

dans mon model je suis obligé d'utiliser une fonction Add donc j'ai overwrite qui lui donne le même comportement que le vrai dico sans add
 

RyuAutodidacte

XLDnaute Impliqué
J'ai commencé une version vendredi, mais je suis pas tout le temps dessus ( occupé aussi), mais j'avoue être une vrai tortue, de plus je maitrise pas les modules de classe
 

RyuAutodidacte

XLDnaute Impliqué
Sympa la démo
Du coup tu y a inclus ce que l'on devait coder avant pour la collection et le dictionnaire avec overwrite et cumulate …
je vais voir sur mon code si je peux l'inclure en option, du coup je ne télécharge pas ton fichier ne pas être influencé
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…