[RESOLU] VBA, POO, Collections, et IHM

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

  • Essai POO pour XLD.xls
    38 KB · Affichages: 90
Dernière édition:

Dranreb

XLDnaute Barbatruc
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
À +
 

Orodreth

XLDnaute Impliqué
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,
 

Dranreb

XLDnaute Barbatruc
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.
À +
 

Orodreth

XLDnaute Impliqué
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.

@+
 

tototiti2008

XLDnaute Barbatruc
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 ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 371
Messages
2 087 705
Membres
103 647
dernier inscrit
BIKS