Problème accessibilité d'objet en VBA dans un MVC

Bonjours,

Je travail en MVC pour crée mon application excel. Pour sa j'ai crée différent module de classe. qui constitue mon modèle. maintenant lorsque je tente d’accéder a mon contrôleur (module de classe plublic) le souci c'est que j'ai un attribue ClsActiveUser qui devrais normalement être l'utilisateur connecter.

Or je ne peut pas crée de getter et dessus sans qu'il me mette une erreur de compilation. Du coup je ne vois vraiment plus comment faire et j'ai vraiment besoin d'aide.

Je vous joins mon document excel dans l'éspoire que vous pussiez m'aider.

Bien que là je croie que mes souci vienne surtout du fait que vba et pas un vrai langage objet...

en ressource voici mon modèle.

cahier de bord Class diagram 03 06 2019

Bonsoir,

Votre "ClsActiveUser" est une instance de votre classe Utilisateur et est donc de type objet.

1- Vous devez donc utiliser une propriété "ActiveUser" avec Setter et Getter, le Setter pour assigner l'instance active de votre classe Utilisateur.

'==============================================='
'                   SETTER                      '
'==============================================='

Public Property Set ActiveUser(ByVal utilisateur As Object)
    Set ClsActiveUser = utilisateur
End Property

'==============================================='
'                   GETTER                      '
'==============================================='

Public Property Get ActiveUser() As Object
    Set ActiveUser = ClsActiveUser
End Property

2- Vous devez ajouter une clé à votre collection "ClsCollectionUtilisateur" afin de pouvoir assigner l'instance active de la classe Utilisateur, par exemple le login :

ClsCollectionUtilisateur.Add Key:=FeuilUtilisateur.Range(RangeLogin).value, Item:=user

Vous pourrez ensuite assigner votre instance active de votre classe Utilisateur ainsi :

    Dim ctrl As New CONTROLER
    Set ctrl.ActiveUser = ctrl.ClsCollectionUtilisateur(login)

Je vous remercie, vous m'avez déjà enlever une épine du pied ^^.

Cependant je reste bloquer à un autre endroit. En effet je souhaiterais utiliser les méthode des objets de modèle Depuis la collection contenue dans le Controleur. Or lorsque je fait

ThisWorkbook.leControler.ClsCollectionUtilisateur.Item(monitem).checkPassword (mdp)

Une erreur 5 ou 91 me sont renvoyer.

Si vous avez une idée de comment résoudre le souci ou comment le gérer différemment, je suis preneur ^^.

De même je n'arrive pas à définir un objet à partir d'une collection d'objet

Dim MonUtilisateur As Utilisateur
Set MonUtilisateur = New Utilisateur
Set MonUtilisateur = ThisWorkbook.leControler.ClsCollectionUtilisateur.Item(monitem)

Bonjour,

L'instruction ci-dessous fonctionne si 0 < monitem <= nombre d' utilisateurs

    Dim MonUtilisateur As utilisateur

    Set MonUtilisateur = ThisWorkbook.leControler.ClsCollectionUtilisateur(monitem)
    MonUtilisateur.CheckPassword

Cette instruction est inutile :

Set MonUtilisateur = New Utilisateur

puisqu'il s'agit de récupérer une instance de classe déjà existante.

Vous vous compliquez la vie en n'utilisant pas de clé pour la collection des instances de classe utilisateur car il vous faut récupérer l'indice de la collection correspondant à l'utilisateur loggé.

Super merci beaucoup =D

Vous m'avez vraiment était une grande aide, parce que il y a peut de documentation sur le VBA objet alors merci ^^

Bonjour,

Pour info, quelques précisions conceptuelles :

Une classe est un ensemble d'éléments possédant les mêmes propriétés, événements et méthodes (actions).

Toute classe Microsoft possède une structure définissant ces propriétés, événements et méthodes, cette structure étant stockée dans une bibliothèque. La majorité de ces classes est documentée dans l'éditeur VBA via l'explorateur d'objets.

Les classes définies par l'utilisateur (modules de classe) sont stockées dans le classeur afférent.

Une instance d'une classe est la personnalisation de cette structure pour un élément de cette classe, personnalisation permettant à l'exécution, de stocker dynamiquement (c'est à dire en mémoire) les propriétés, événements et méthodes spécifiques à cet élément.

Par définition, un objet VBA est l'instance d'une classe, qui est donc stockée dynamiquement.

Un exemple simple est l'assignation automatique à l'exécution de ces 2 objets VBA :

1- ThisWorkbook, première instance de la classe WorkBook, représentant le classeur où s'exécute le code

2- ActiveWorkbook, deuxième instance de la classe WorkBook représentant le classeur actif

Rechercher des sujets similaires à "probleme accessibilite objet vba mvc"