[RESOLU] VBA, POO, Collections, et IHM

  • Initiateur de la discussion Initiateur de la discussion Orodreth
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Orodreth

XLDnaute Impliqué
Bonjour à tous et à toutes,

Je suis en train de tester l'aspect Programmation Objet de la programmation en vba sur excel 2003.

Donc module de classe, etc ... La POO est un modèle très pertinent qui a déjà fait ses preuves.

Il y a quand même quelques facilités de Visual Studio que je ne retrouve pas ici, sur Excel.
En soi, normal, mais je dois quand même résoudre les problèmes qui vont avec.

Dans l'exemple, j'ai créé une classe Personne (qui gère un ID, le nom, le prénom, et l'âge de la personne), ainsi qu'une classe Personnes qui, elle, doit me servir de collection de personnes, avec la gestion qui va bien (Ajout, Modification, Suppression, Comptage, Listage, Recherche, ...)

Pour l'aspect purement objet, pas de soucis.
En revanche, je n'arrive pas à afficher la collection dans une listbox (4 colonnes).

Quelqu'un saurait m'expliquer sur ce coup ?

Merci d'avance,
Cordialement,
Orodreth
 

Pièces jointes

Dernière édition:
Re : VBA, POO, Collections, et IHM

Bonjour.
Je vous engage vivement à mettre Option Explicit en tête de vos modules et à recompiler le projet.
Je commence alors par tomber sur "Variable non déclarée": il s'agit de "Personne" dans la Property Get unePersonne de Personnes
À +
 
Re : VBA, POO, Collections, et IHM

Bonjour,

Merci, ce point est corrigé. Maintenant, ce classeur n'est qu'un test technique pour voir un peu comment ça marche.
Je n'attaquerai le vrai projet (de manière propre) qu'après.

Cordialement,
 
Re : VBA, POO, Collections, et IHM

Juste une info, à propos de Personne (la classe, évidemment, n'entrons pas dans le problème du cyclope, à qui Ulysse avait fait croire qu'il se nommait "Personne" !)
Lorsqu'une propriété est à la fois en lecture et écriture, et qu'il n'y a pas de précaution particulière à prendre pour la ranger ou la restituer, et s'il ne s'agit pas d'un tableau, il suffit de la déclarer Public sous son nom de propriété et il n'y a pas besoin de procédures Property.
À +
 
Re : VBA, POO, Collections, et IHM

Dans l'absolu oui.

Maintenant, dans les bonnes manières de faire en POO, il ne faut pas accéder directement à un attribut.
De plus, l'usage automatique des Property permet de mettre du code pour gérer l'accès à ces attributs, qui, certes, n'y est pas, mais peut s'avérer utile plus tard.

Donc autant préparer le terrain.

@+
 
Re : VBA, POO, Collections, et IHM

Bonsoir Orodreth, Bonsoir Dranreb, 🙂

Peut-être comme ça

Code:
'Rafraichir la liste d'affichage
Private Sub Refresh_List()
    lbl_Cpt_Enreg.Caption = "Nb enregistrements: " & CStr(Liste_Personne.CompterPersonnes)
    
    Dim p As Personne
    lst_Pers.Clear
    For Each p In Liste_Personne.ListerPersonnes
        lst_Pers.AddItem p.ID
        lst_Pers.List(lst_Pers.ListCount - 1, 1) = p.Nom
        lst_Pers.List(lst_Pers.ListCount - 1, 2) = p.Prenom
        lst_Pers.List(lst_Pers.ListCount - 1, 3) = p.Age
    Next p
End Sub

En tout cas merci de cet exemple, ça va bien m'aider pour ma classe 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour