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 Access Discussion :

Héritage, possible ou non?


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Héritage, possible ou non?
    Bonjour,

    Est-il possible de réaliser des classes qui hérites d'autres classes?
    Si oui avez vous des exemple de code à me fournir merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA, C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    14 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Developpeur VBA, C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 14 274
    Points : 33 426
    Points
    33 426
    Par défaut
    bonjour,
    le vba n'est pas un langage objet parce qu'il ne répond ni à la notion de polymorphisme, ni à celle d'héritage.

    Toutefois, tu peux utiliser des structures de structure de données.

    Voir le très bon article de Michel Blavin à ce sujet :
    http://sinarf.developpez.com/access/vbaclass/
    Cycle de vie d'un bon programme :
    1/ ca fonctionne 2/ ca s'optimise 3/ ca se refactorise

    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016 et Access 2019

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 1 751
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,
    Citation Envoyé par jpcheck Voir le message
    le vba n'est pas un langage objet parce qu'il ne répond ni à la notion de polymorphisme, ni à celle d'héritage.
    Effectivement pas d'héritage, en revanche le polymorphisme est facile à mettre en oeuvre au moyen d'interface et d'implémentation d'interface (cf. mot-clé Implements).

    Pour en savoir plus, il y a cette discussion:
    Polymorphisme avec VBA: implémentation d'interface

    Bonne journée !
    _

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponse, j'essaie de voir ce que cela donne avec le tuto et si d'autres personnes ont des idées ou des exemples de code n'hésitez pas ^^

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    J'ai résolu mon problème en faisant ceci:

    - Je créer une classe "mère"
    - Je créer un classe "fils" dans laquelle je créer une instance de la classe mère et je recréer chaque procédure en incluant l'appel à celle de la classe mère.

    Ex:

    méthode de la classe mère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Property Get CHARGER_TOUS() As RecordSet
            Dim Table As String
            Dim cmd As New ADODB.Command
            Dim ReturnValue As New ADODB.RecordSet
            cmd.CommandText = "MATABLE_CHARGER_TOUS"
            cmd.CommandType = adCmdStoredProc
            cmd.ActiveConnection = CurrentProject.Connection
            Set CHARGER_TOUS = cmd.Execute()
      End Property
    Dans ma classe mère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim MaTableBase As New MaTableBase
     Property Get CHARGER_TOUS() As RecordSet
            Set CHARGER_TOUS = MaTableBase.CHARGER_TOUS
      End Property

    Merci encore pour vos réponses

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    18 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 18 274
    Points : 52 942
    Points
    52 942
    Billets dans le blog
    123
    Par défaut
    Bonjour

    La technique que tu as mise en œuvre n'est pas à proprement parler un "héritage".

    Ici, ce que tu as mis en place, c'est de pouvoir, au travers de la fille, récupérer les valeurs d'une propriété de la mère (pas de mettre une propriété similaire à disposition de la fille)...

    Il est, dans le cas que tu fournis ici, plus simple de mettre à disposition de la fille un objet Parent qui pointe vers la mère (c'est moins fastidieux que de répéter toutes les procédures)

    Classe cFille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private MParent As cMere
     
    Property Get Parent() As cMere
        Set Parent = MParent
    End Property
     
    Sub init(Parent As cMere)
        Set MParent = Parent
    End Sub
    Classe cMere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private mNom As String
     
    Property Get Nom() As String
        Nom = mNom
    End Property
     
    Sub init(Nom As String)
        mNom = Nom
    End Sub
    Utilisation des classes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
        Dim Mere As New cMere
        Dim Fille As New cFille
     
        Mere.init "Maman"
        Fille.init Mere
        MsgBox Fille.Parent.Nom
    End Sub
    Si tu aimes la lecture, va voir mon tuto sur les classes
    "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...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Piratage possible ou non avec des infors d'une form ?
    Par roudoudouduo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 16/10/2006, 20h45
  2. Fonction qui retourne un tableau ou 2 variables ? possible ou non
    Par jiojio dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 05/06/2006, 15h00
  3. workflow, MS exchange et VB (possible ou non?)
    Par caravaneseth dans le forum Général VBA
    Réponses: 1
    Dernier message: 30/04/2006, 18h26
  4. [vb.net] datagridview imbriqués, possible ou non?
    Par graphicsxp dans le forum Windows Forms
    Réponses: 8
    Dernier message: 08/02/2006, 17h46
  5. Réponses: 4
    Dernier message: 12/10/2005, 16h13

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