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:

Dranreb

XLDnaute Barbatruc
Encore une fois, dans l'explorateur d'objet, bibliothèque Scripting, classe Dictionary, c'est la méthode Item qui est signalée par une grosse icône cyan avec effet de relief et bordures noires épaisses et biseautées comme étant la propriété par défaut. C'est pour ça qu'on peut ne pas la préciser. Mais on le peut, aussi, ça a le même effet.
Et ceci marche donc avec mon Dictionary aussi bien qu'avec celui de Scripting :
VB:
MsgBox DicoD.Item("toto")
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
mais je crois comprendre le problème qui fait que nous nous comprenons pas
quand on regarde divers tutos sur le scripting.dictionary (et il y en a à foison)
dans certains on parle
d'item et valeur
et dans d'autre on parle de
clé et item

et quand je parle d'imiter le dico c'est dans son utilisation après tu emploie les termes que tu veux


re

oui ryu
un dico c'est dico("
clé")="item"(en mode overwrite)
ou
dico.add
cle,item (ou valeur selon certains tutos )

une collection c'est
collect.add
item,clé,position clé est en 2d position
quand tu fait msgbox collect(
item") ca ne fonctionne pas

une collection a 3 arguments (item,clé,position )

un dico n'en a que 2
dans n'importe quel cas que e soit avec ma classe celle de dranreb ou quidam
msgbox dico.truc("toto") doit me donné la 2d donnée quelle qu'elle soit
truc étant la property ou fonction pouvant faire la passerelle
 

Dranreb

XLDnaute Barbatruc
Je ne vois pas l'intérêt d'écrire un autre truc que Item puisque c'est lui qui fait le job, qu"on le précise ou non.
Cela dit, il existe un moyen de définir la propriété par défaut d'une classe perso mais ce n'est pas très simple, il faut exporter le module et aller le bricoler avec WordPad. Je vais peut être écrire une Sub qui fait ça. Mais de toute façon je ne sais pas si ça marche sur MAC.
 

RyuAutodidacte

XLDnaute Impliqué
Patrick
Avec une collection on fait la même chose qu'un dictionnaire …
la différence réside que dans le dictionnaire il y a des méthodes qui n'existe pas dans la collection … d'ou le fait que pour une collection on doit écrire le code correspondant pour obtenir le même résultat (méthodes) que le Dictionnaire
Après que ca soit Clé/Item ou Item/Clé on s'en fout comme les let/get ou function (le principal c'est que cela convienne)
le résultat est là et ca marche très bien et je ne suis pas sur que ca soit plus ou moins rapide selon la façon de l'écrire.

Par contre, je te l'accorde, c'est la 1ère fois que j'essaie de faire un module de classe et utiliser une fonction dans un module de classe simplifie l'écriture (après c'est une question d'habitude)
quand tu fait msgbox collect(item") ca ne fonctionne pas
Ca se passe comment qd tu as plusieurs item identiques non cumulés qd tu fais :
collect(item") (pour avoir la clé je suppose …)

PS ; sinon j'ai bien avancé


J'ai édité mon message pour le corriger @Dranreb @patricktoulon
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour,
on peut accéder aux dictionnaire par dico.Item(Key) qui est la valeur par défaut dico(Key) donc vue que l'idée est de proposer une classe Dictionnary pour MAC je ne voie pas pourquoi les détenteur de MAC s'en peigneraient!
 

Dranreb

XLDnaute Barbatruc
La différence porte dans la directive "Attribute Item.VB_UserMemId = 0" ajoutée au fichier du module par voie externe, et à ma Sub TestDico qui fonctionne chez moi sans qu'il ne soit plus absolument nécessaire de préciser Item dans l'instruction :
VB:
MsgBox "END —> " & DicoD("END")
Mais personnellement je continuerai à le préciser. Quelque part, je déteste les membres par défaut de classes. Ça doit être fait exprès pour empêcher les gens de comprendre ce qu'ils programment, je suppose …
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…