IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

[Tutoriel] Les classes personnalisées en VB(A)


Sujet :

VBA

  1. #21
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 947
    Points
    55 947
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    en un mot : bravo !
    Vraiment merci pour ce tuto clair et détaillé.
    Tout ce qu'il faut pour démarrer, étape par étape.

    eric
    Merci
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  2. #22
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous,

    Un grand merci à Pierre Fauconnier pour son tutoriel très intéressant et qui va me permettre d'améliorer mon code vba actuel

    Pour ceux qui,comme moi, bloquent à la partie IV-E-2-b-ii http://fauconnier.developpez.com/art.../#LIV-E-2-b-ii (pas modifiée pour l'insant )
    Je me permets de joindre le lien qui donne la réponse http://www.developpez.net/forums/d13...module-classe/

    Maintenant que j'ai fini la partie 1 je suis comme les autres, en attente de la suite

    Donc encore une fois merci de me (nous) permettre de continuer à m'(nous) améliorer

  3. #23
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 173
    Points : 127
    Points
    127
    Par défaut Grand bravo
    Bonjour à tous,

    les commentaires sont unanimes, je n'échappe pas à la règle, j'ai découvert ce tuto récemment, et je crois qu'il va modifier en profondeur ma façon de programmer.

    Du coup, on est tous impatients de voir la suite. Pour ceux (comme moi) qui n'ont pas la patience d'attendre et qui veullent essayer d'aller plus loin par eux mêmes, pourrais-tu nous donner quelques liens ou chapitres de livres pour chacune des parties que tu avais prévues à ta partie 2, à savoir :

    • Création d'un objet personnalisé au travers d'une classe d'accès aux données
    • Liaison d'un objet personnalisé à une source pour la lecture des données
    • Liaison d'un objet personnalisé à une source pour la modification des données du fichier source
    • Portabilité du jeu des classes
    • Utilisation de données d'une base Access dans un fichier Excel grâce aux classes personnalisées


    en effet, c'est assez difficile de voir de la bonne doc sur les objets en VBA.

    Merci

  4. #24
    Nouveau Candidat au Club
    Profil pro
    Lycéen
    Inscrit en
    Janvier 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Les parties 2 et 3 ?
    Bonjour,
    J'ai enfin trouvé le tuto qui me convenait pour appréhender la notion de classe avec VBA, merci pour le travail.
    J'ai vu que ça création datait déjà un peu ! Et donc, à tout hasard, auriez-vous travaillé sur les parties 2 et 3 ?
    J'ai vu dans le forum que c'était un projet.
    Sinon tant pis .
    Merci pour votre réponse.

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Bonjour à tous

    Merci beaucoup pour ce tuto qui m'a permis de comprendre comment on utilise les classes en vb.

    Néanmoins je n'ai pas réussi à comprendre comment répondre à mon besoin :
    Collection de Niveau1
    Classe Niveau1 contient un nom (string) et une collection d'objet de type Niveau2
    classe Niveau2 contient un nom (string) et une collection de string (niveau3)

    j'arrive à définir les 2 modules de classe
    Niveau1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private pName As String
    Private pNiveau2() As Niveau2Type
    Niveau2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private pName As String
    Private pNiveau3() as String
    mais quand j'essaie d'appeler les propriété définies dans la classe Niveau1 ca plante sur le let du Niveau2 même s'il ne contient rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Property Let module(NewModule As Niveau2Type)
        Debug.Print "in let module"
    End Property
    Il y a probablement un point que j'oublie mais même après de nombreuses recherches sur le net je ne m'en sort pas.


    Je ne suis pas sur de poster au bon endroit, ou bien les réponses sont prévus dans les parties 2 et 3 du tutoriel ??
    Merci d'avance

  6. #26
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 755
    Points : 28 606
    Points
    28 606
    Billets dans le blog
    53
    Par défaut
    Bonjour Pierre,
    Je viens enfin de prendre le temps de lire à fond ce tutoriel que j'avais déjà parcouru en vitesse il y a longtemps et malgré le fait que j'avais déjà écrit deux trois modules classe pour la création de multiples contrôles dans des formulaires, sa lecture et la réalisation étape par étape de son exemple m'a permis de découvrir d'autres facettes du module de classe.
    Merci pour ce magnifique travail et j'attends avec impatience la sortie de la 2ème partie.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #27
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Suite des classes personnalisées en VB
    bonjour,

    Je viens de découvrir la partie 1 du tuto concernant la création et utilisation des classes personnalisées en VB 6.0 et VBA (Partie 1) et j'aimerais savoir si les parties 2 & 3 ont été écrites ou non ?

    La partie 1 étant très intéressante et très claire, j'espère que les 2 autres ont enfin vu le jour pour que je puisse les consulter.

    bravo encore pour cet excellent tuto à Pierre Fauconnier

  8. #28
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Très bon tuto.

    Je n'utilisais pas vraiment les classes en VBA jusqu'à maintenant car je ne savais pas trop comment faire ; je vais pouvoir modifier beaucoup de choses grâce à tout ce que je viens d'apprendre. Merci.

    Je ne trouves les parties 2 et 3 sur le site, est-ce que je suis passé à côté ? Est-ce qu'elles sont toujours d'actualité ?

    Merci

  9. #29
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Octobre 2015
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Remerciements à Pierre Fauconnier
    Merci Pierre Fauconier pour ce travail extraordinaire que vous nous offrez !
    je découvre grâce à vous les modules de classe et, comme tout le monde je le vois bien, je suis très demandeur des parties 2 et 3 de ce tutoriel qui pour moi, autodidacte plein de lacunes, m'a permis de faire évoluer considérablement ma façon d'aborder le code VBA.
    Je vous remercie encore et espère malgré le temps qui a passé depuis la 1ére partie avoir la chance de pouvoir travailler sur la suite.
    Je suis aussi demandeur de modules de classe VBA libres pour pouvoir compléter ma formation en cas de non publication des parties 2 & 3 afin de faire évoluer mon code dans le bon sens.
    avec toute ma gratitude
    Bien cordialement
    Jean-Paul

  10. #30
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 947
    Points
    55 947
    Billets dans le blog
    131
    Par défaut
    Vos remerciements m'encouragent à la suite... Juste trouver le temps... (heu, mettre le temps à cela plutôt qu'à autre chose... )
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #31
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Ah, le père-noël n'est pas passé ici :-s
    Joyeux Noël à tous quand même :-)
    eric

  12. #32
    Membre habitué Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 178
    Points : 162
    Points
    162
    Par défaut Une propriété écriture seule
    Une propriété pourrait être en écriture seule, et donc définissable mais non lisible.
    Je ne vois pas d'exemple concret pour ce cas.
    Exemple : Un mot de passe

    Ton tuto sur les classes VBA est très interressant

  13. #33
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 947
    Points
    55 947
    Billets dans le blog
    131
    Par défaut
    Salut Francis,

    Citation Envoyé par francis60 Voir le message
    Exemple : Un mot de passe

    Ton tuto sur les classes VBA est très interressant
    Si tu utilises un objet myLogin issu d'une classe Login ayant deux propriétés (login et mdp) pour tester l'existence de la "paire de données" dans une DB, au niveau de la dal (data access layer, en programmation trois-tiers), je vois mal comment tu vas t'en tirer pour récupérer le mdp s'il est en lecture seule .

    Cela dit, merci pour ton appréciation de mon tutoriel.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #34
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 947
    Points
    55 947
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Ah, le père-noël n'est pas passé ici :-s
    Joyeux Noël à tous quand même :-)
    eric
    C'est quoi un père Noël...???

    Non, très sérieusement, je finalise la suite... ^^ ^^ ^^ ^^
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #35
    Membre à l'essai
    Homme Profil pro
    Médecin/Statisticien
    Inscrit en
    Juillet 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Médecin/Statisticien
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 16
    Points : 21
    Points
    21
    Par défaut
    Bonjour Pierre,

    Merci pour votre tutoriel, très accessible, clair et détaillé et qui vient combler un manque de documentation criant.

    Une suggestion/demande : J'ai constaté par moi même qu'il était possible de mettre des objets et des collections comme propriété d'une classe personnalisée d'objet. Peut-être pourriez vous développer ce point et indiquer comment faire ?

  16. #36
    Candidat au Club Avatar de jeromecools
    Homme Profil pro
    Geek
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 4
    Points
    4
    Par défaut Bravo et merci pour la partie 1
    Bonjour,

    Votre tuto est vraiment bien abordé, et je l'ai utilisé plusieurs fois pour me rappeler les bases objet en VBA.

    J'ai évidement hâte de lire la partie 2, sur l'utilisation de collection, etc...
    Donc, je met un petit message pour vous encourager à le faire et pour être informé dès qu'il sera publié

    A+

  17. #37
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Excellent !!
    Voilà un gros éclaircissement, très bon tuto pour un débutant comme moi, vivement la suite. Quoi, voilà déjà 2 ans que personne n'a laissé de commentaire. Il est pourtant toujours d'actualité.

  18. #38
    Candidat au Club
    Homme Profil pro
    Technicien bureau d'étude
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Technicien bureau d'étude
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Points : 3
    Points
    3
    Par défaut Clair et précis.. Excellent!!
    Bonjour,

    Votre tutoriel est très bien! Très clair et précis, de plus le fait de prendre un seul exemple qui évolue tout au long du tuto est une bonne idée, cela permet d'expérimenter, de revenir en arrière,... bref de bien comprendre les choses.
    Tout ce contenu m'a permis d’appréhender les choses différemment en VBA.

    Dans l'introduction vous parlez d'une seconde et troisième partie à ce tutoriel mais je ne les ai malheureusement pas trouvé? Ont elles retirées?
    Je serais particulièrement intéressé par la suite de ce cours.

    Cordialement.

    Jean Christophe

  19. #39
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 947
    Points
    55 947
    Billets dans le blog
    131
    Par défaut
    Salut.

    14 ans après, et sans avoir encore écrit les deux suites à ce tutoriel, je vous propose un billet permettant de créer simplement un objet lorsqu'il n'existe pas en VBA. J'ai créé un objet Date pour faciliter la manipulation des dates, et j'en parle dans ce billet... J'espère qu'il vous plaira
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #40
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 082
    Points : 1 603
    Points
    1 603
    Par défaut
    Citation Envoyé par philben Voir le message
    1. Sur une ou deux copie d'écran, j'ai remarqué que tu ne libérais par ta classe explicitement en fin de fonction. J'ai pris l'habitude de le faire systématiquement mais c'est peut-être du superflu ?
    Ce n'est pas faux de détruire explicitement les instances crées, mais ca peut devenir lourd.
    Je préfère faire confiance au garbage collector de VBA (même s'il est limité), dans la plupart des cas, une instance qui sort de la portée d'utilisation est automatiquement détruite.

    @Pierre Fauconnier:
    Ton tutoriel est une bonne introduction, tu as cependant oublié d'aborder le constructeur (Class_initialize) et le destructeur (Class_Terminate).
    je serais également allé plus loin, en introduisant les notions de classe à sémantique de valeur, sémantique d'entité, la notion de Factory, ainsi que ce qui fait le point fort des classes: L'héritage (si, si, ça existe en VBA).

    Concernant les sémantiques:
    Une classe, une fois instanciée, doit être directement utilisable.
    Dans le cas d'une class à sémantique de valeur (comme dans ton exemple: un contact), cela à du sens de créer une instance vierge, ainsi que modifier chacune de ses propriétés (ou presque).
    Par contre, une classe à sémantique d'entité n'obéit pas aux même règles, par exemple pour une classe Voiture, cela n'a pas de sens de modifier son modèle ou son N° de série (ces propriétés doivent être fixées une fois pour toute à la création).
    VBA n'offrant malheureusement pas de moyen simple d'enforcer un tel comportement, une solution consiste à déléguer l'instanciation et initialisation de l'objet à une fonction dite "Factory", ainsi qu'a un pseudo-constructeur.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        '// fonction "Factory"
    Public Function CreateVoiture(ByVal Constructeur As String, ByVal Modele As String) As Voiture
        Dim Voiture As Voiture
        Set Voiture = New Voiture
        Voiture.Create Constructeur, Modele
        Set CreateVoiture = Voiture
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        '// Class Voiture
    Private mConstructeur As String
    Private mModele As String
     
        '// Pseudo constructeur
    Friend Sub Create(ByVal Constructeur As String, ByVal Modele As String)
        mConstructeur = Constructeur
        mModele = Modele
    End Sub
     
    Public Property Get Constructeur() As String
        Constructeur = mConstructeur
    End Property
     
    Public Property Get Modele() As String
        Modele = mModele
    End Property
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        '// Fonction de test
    Public Sub Test()
        Dim Voiture As Voiture
        Set Voiture = CreateVoiture("Peugeot", "205")
     
        Debug.Print Voiture.Constructeur    '// Ok
        Voiture.Constructeur = "Renault"    '// Ko
    End Sub
    Concernant l'heritage:
    C'est une notion beaucoup plus complexe, et VBA ne permet d'hériter que des interfaces publiques.
    Cela permet Cependant d'introduire des variances de comportement car la classe héritante est substituable à la classe de base
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        '// Interface Animal
        '// Ne pas oublier de mettre la propriété Instancing à PublicNotCreatable
    Option Explicit
     
    Public Function Cris() As String
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        '// Class Chat
    Option Explicit
    Implements Animal
     
    Private Function Animal_Cris() As String
        Animal_Cris = Cris
    End Function
     
    Public Function Cris() As String
        Cris = "Miaou"
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        '// Class Chien
    Option Explicit
    Implements Animal
     
    Private Function Animal_Cris() As String
        Animal_Cris = Cris
    End Function
     
    Public Function Cris() As String
        Cris = "Wouf wouf"
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        '// Tests
    Public Sub Test()
        Dim Animal As Animal
        Set Animal = New Chat
        Debug.Print Animal.Cris    '// Affiche Miaou
     
        Dim Chien As Chien
        Set Chien = New Chien
        Debug.Print Chien.Cris    '// Affiche Wouf wouf
     
        Dim Chat As Chat
        Set Chat = New Chat
        Debug.Print Chat.Cris    '// Affiche Miaou
     
        Affiche Chien    '// Affiche Wouf Wouf
        Affiche Chat     '// Affiche Miaou
    End Sub
     
    Public Sub Affiche(ByRef Animal As Animal)
        Debug.Print Animal.Cris
    End Sub

Discussions similaires

  1. Tutoriel vidéo Unity 3D : Les classes
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 21/09/2014, 09h44
  2. Réponses: 0
    Dernier message: 13/08/2014, 22h31
  3. Questions sur les classes immuables (par rapport au tutoriel)
    Par Gugelhupf dans le forum Général Java
    Réponses: 7
    Dernier message: 04/08/2013, 15h35
  4. [Tutoriel] Les classes personnalisées en VB(A)
    Par Pierre Fauconnier dans le forum Vos contributions VB6
    Réponses: 0
    Dernier message: 20/05/2009, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo