Bonjour
@Dranreb,
@patricktoulon
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
C'est cela la méthode pour arriver à faire ce que tu fais ?
la possibilité de définir la propriété par défaut d'une classe personnalisée en VBA, de manière à ce que vous n'ayez pas à spécifier le nom de la propriété lors de son utilisation.
1) Exportation du module : Tout d'abord, vous exportez le module de classe (qui contient votre classe personnalisée) depuis l'éditeur VBA. Cela générera un fichier texte (.cls) contenant le code de la classe.
2) Modification du code : Ensuite, vous ouvrez ce fichier texte dans un éditeur de texte, tel que WordPad. Vous pouvez ajouter une ligne dans le module pour spécifier quelle propriété doit être la propriété par défaut. Par exemple, si votre propriété est "Nom", vous pourriez ajouter une ligne comme celle-ci :
Attribute Nom.VB_UserMemId = 0
Cela indique que la propriété "Nom" doit être la propriété par défaut (VB_UserMemId = 0).
3) Sauvegarde des modifications : Après avoir fait cette modification, vous enregistrez le fichier texte.
4) Importation du module modifié : De retour dans l'éditeur VBA, vous importez le module modifié pour remplacer le module d'origine.
5) Utilisation de la propriété par défaut : Une fois que cela est fait, les utilisateurs de votre classe pourront accéder à la propriété par défaut sans avoir à spécifier son nom. Par exemple, si la propriété "Nom" est définie comme propriété par défaut, vous pourrez faire ceci :
Dim MaPersonne As New ClassePersonne
MaPersonne.Nom = "John Doe" ' Pas besoin de spécifier .Nom
MsgBox MaPersonne ' Cette ligne fonctionnera comme si vous aviez écrit MaPersonne.Nom
C'est cela
@Dranreb ?