Icône de la ressource

Collection Module Classe Patricktoulon (le dictionnaire pour MacOS et Windows) 1.0

patricktoulon

XLDnaute Barbatruc
patricktoulon a soumis une nouvelle ressource:

Collection Module Classe Patricktoulon (le dictionnaire pour MacOS et Windows) - un dictionnaire pas comme les autres

à tous
dans la famille module classe je demande le dictionnaire 😁
aujourd'hui je vous présente un module classe qui va être utiliser comme un dictionnaire
ayant trouvé divers exemples sur la toile et testé est scruté leur code
je me suis rendu compte que ce n’était pas forcement accessible a tous selon le niveau

je vous ai fait donc ma version (unique) puisque à ce jour je n'ai rien trouvé de similaire
a savoir tout les exemple trouvés...

En savoir plus sur cette ressource...
 

SAMUAL_2023

XLDnaute Nouveau
Salut Patrick j'espère que tu vas bien et tout le monde chez excel-down bien bonjour!

J'ai une question concernant l'utilisation de Module classe pour reconfigurer un peu l'utilisation des propriétés d'un quelconque formulaire :
StartUpPosition + Top/Left + Width/Height du formulaire.
Si on exécute via une méthode de classe qui fait appel à ces propriétés dans une boîte de dialogue de type UserForm ou via un Module Standard faisant une liaison entre (Classe>Module Standard>Formulaire) un Message d'erreur de type "Erreur d'exécusion: '438' Propriétés ou méthode non gérée par cet objet" s'affiche au niveau de l'appel de la variable objet qui est assugnée à un objet du genre (Dim MyForm As MSForms.UserForm)...
Comment peut-on remèdier à cela...
Et Merci
Example:
-------------------------------------------------------------------------
Au niveau du Module Classe : cslForms

Option Explicit

'Methodes :
Public Sub oUFormPosition(ByRef oForm As _ MSForms.UserForm)

Set oForm = VBAProject.UserForm1

With oForm
.StartUpPosition = 1
.Top = 85.25
.Left = 215.75
End With
End Sub

Public Sub oUFormDimension(ByRef oForm As MSForms.UserFirm)

Set oForm = VBProject.UserForm1

With oForm
.Width = 200.25
.Height = 150.50
.InsideWidth = 180.25
.InsideHeight = 140.50
End With
End Sub
---------------------------------------------------------------------------------------------------
Au niveau du Formulaire: UserForm1

Option Explicit

Dim clsForm As cslForms

Private Sub UserForm_Activate()

Set clsForm = New VBA project.cslForms
Call clsForm.oUFormPosition(Me) '<= C'est là que cela
'coince erreur 438
Set clsForm = Nothing
End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour
j'ai du mal a voir le soucis
le module classe se suffit a lui même
que tu l'utilise dans un module standard ou form , ca ne devrait pas causer de problème
 

p'tit vieux

XLDnaute Occasionnel
Bonjour Patrick
Je viens de "tomber" sur ta classe (T'inquiète, même pas mal.)
Marrant j'ai créé la même chose. que j'utilise dans mes codes depuis quelques temps déjà et que je voulais mettre en ligne
Bon il y a des différences fonctionnelles.
Exemple: - j'empêche les créations automatiques.
- un Set Item(aKey) pour modifier la valeur d'une clé
- un ChangeKey() pour changer le nom de la clé
- la possibilité d'avoir le tri en tableau 1D ou 2D
- Le tri peut se faire sur des adresses servant de clés.
… / …
Mais les grandes lignes sont les mêmes.
C'est ça les grands esprits 😂

J'ai fait la même chose avec Collection. Mais j'ai arrêté de l'utiliser car Dictionnaire est plus performant.
En résumé je ne sais pas si ca vaut la peine de mettre en ligne.
Peut-être faire une synthèse/compilation des 2 ?
Si ça t'intéresse je t'envoie le fichier.
Bonne fête à tous!
 
Dernière édition:

oguruma

XLDnaute Occasionnel
Bonjour,
après je dirai rien n'empêche d'avoir les deux versions, cela montre qu'une solution n'est pas unique pour arriver au même résultat.
La compilation pour produire une version unique je pense que ce serait un très bon partage.
aller à h-7 du basculement vers 2024 des joyeux moments de fin d'année
 

p'tit vieux

XLDnaute Occasionnel
Je suis aware 😊.
Par contre j'ai voulu créer un "enum" par défaut sur la KeyS (ou sur ItemS pareil) du dictionnaire ca ne marche pas. (Comme dans une Collection)
Exple syntaxe: For Each element in MonDico … blabla … Next element
Après plein de recherche je crains que ce soit impossible.
Si tu as une idée?
 

patricktoulon

XLDnaute Barbatruc
re
merci @p'tit vieux @oguruma
disons que ma version va à contre sens de toutes les autres
car il y en a quelques unes effectivement
j'ai une manière a moi et bien tordu et tordante d'utiliser les classes
le but etant dans cet exercice d'imiter l'utilisation de la librairie originale

j'ai fait a peu près de la même manière aussi une pseudo librairie XML
avec ses fonctions plus vraies que nature 🤣 🤣
je dois reconnaitre que je m'amuse avec ces trucs

bonne fin d'année a tous 🥂
 

p'tit vieux

XLDnaute Occasionnel
OK OKEEE :D
Je viens de jeter un œil sur ta classe.
Hors mis que tu t'es amusé à autoriser à refaire ce que fait le dictionnaire 🥳, 🤪 (on a fait joujou) sinon je ne vois pas ce qu'il y a de tordu à ajouter des fonctionnalités et permettre d'évacuer les inconvénients originaux (ajout automatique sans rien demander à personne -pas poli ça!- sujet à erreur. Par exemple).
A la base, mes classes sont toutes conçues dans un but précis. Ce dont j'ai besoin.
C'est le principe des classes non?
Alors non t'es pas "tordu" … Pas encore assez 🤣
Bonne fin d'année à toi aussi et à tous
 

Dranreb

XLDnaute Barbatruc
À tous, bonjour, et bonne année.
@SAMUAL_2023, Information:
Quand vous transmettez Me à une procédure depuis un module de classe, vous lui transmettez en fait un objet dont le type est le nom du module de classe.
Un UserForm est un module de classe muni d'une interface à la bibliothèque MSForms et bénéficiant d'une déclaration implicite lui assumant au moins un exemplaire par défaut. Par exemple si son nom de type est UserForm1, c'est comme s'il existait une Public UserForm1 As New UserForm1. Si la procédure invoquée doit pouvoir traiter des UserForm de types différents, il convient de l'y récupérer par ByVal UFm As Object.
 

patricktoulon

XLDnaute Barbatruc
re
Un UserForm est un module de classe muni d'une interface à la bibliothèque MSForms et bénéficiant d'une déclaration implicite lui assumant au moins un exemplaire par défaut
je n'aurais pas mieux dit

après je ne vois pas trop ce qu'un userform vient faire dans ce Topic
car là en l'occurence on parle bien de module classe
 

Dranreb

XLDnaute Barbatruc
Oui, désolé d'avoir ajouté du hors sujet à cette discussion. J'ai bien essayé de lui répondre par un message sur son profil pour ne pas polluer d'avantage, mais c'était trop long …
 

patricktoulon

XLDnaute Barbatruc
Je suis aware 😊.
Par contre j'ai voulu créer un "enum" par défaut sur la KeyS (ou sur ItemS pareil) du dictionnaire ca ne marche pas. (Comme dans une Collection)
Exple syntaxe: For Each element in MonDico … blabla … Next element
Après plein de recherche je crains que ce soit impossible.
Si tu as une idée?
c'est exactement ce que je fait dans ma classe
c'est le même code qu'avec la librairie sripting.runtime
 

Membres actuellement en ligne

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 655
dernier inscrit
fannycordi