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![]()
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![]()
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/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
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
Bonjour,
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 !
_
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 ^^
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
Dans ma 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
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![]()
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
Classe cMere
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
Utilisation des classes
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
Si tu aimes la lecture, va voir mon tuto sur les 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
"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...
---------------
Partager