|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Futur Membre du Club
![]() Grégory MARTIN Inscription : mars 2010 Messages : 72 ![]() |
Bonjour,
Soit mon module de classe appelé Class1 : Code :
Code :
Bien entendu, il s'agit d'un projet plus complexe: si j'avais une Class2 je voudrais mettre des objets Class1 et Class2 dans une seule Collection et pouvoir faire une sorte de polymorphisme avec une default property (un peu comme toString() en java) qui me permettrait d'écrire les éléments de la collection dans un fichier plat. J'ignore si c'est possible Merci d'avance. |
||||
|
|
00
|
|
|
#2 |
|
Office & Excel ![]() ![]() ![]() |
Salut.
A ma connaissance, ce n'est pas possible en VBA (mais bien en VB6)... Tu pourrais toujours utiliser une propriété nommée de manière identique dans les deux classes. tu pourrais aussi utiliser une interface qui serait commun aux deux classes. Je t'invite à te reporter à cette discussion, et particulièrement au premier message qui expose justement ton cas...
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
00
|
|
|
#3 |
![]() ![]() ![]() |
Tu peux y parvenir, mais c'est compliqué.
Voici les étapes...
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
10
|
|
|
#4 |
|
Futur Membre du Club
![]() Grégory MARTIN Inscription : mars 2010 Messages : 72 ![]() |
|
|
|
00
|
|
|
#5 | ||
|
Futur Membre du Club
![]() Grégory MARTIN Inscription : mars 2010 Messages : 72 ![]() |
Encore une question:
Si j'ai les classes A,B,C qui implémentent toutes fonction1 et fonction2 et que je veux une collection contenant par exemple: A,B,C,B,A,C,A,A Je veux pouvoir faire: Code :
seulement voilà, A contient juste une propriété Text et les autres classes contiennent beaucoup plus d'attributs. L'implémentation des fonctions 1 et 2 diffèrent d'une classe à l'autre. Une interface qui reprendrait tous les attributs et propriétés de A,B,C m'obligerait à avoir toutes les propriétés de A,B,C dans chaque instance de A,B,C (vu l'absence de constructeurs) Donc pour A on aurait beaucoup de valeurs inutiles donc je n'aime pas. Autre idée: 1 liste qui contiendrait le type A,B ou C, puis aller voir dans la liste de A si c'est A, de B si c'est B, etc. Je n'aime pas cette solution ça me semble lourd. Faire une seule classe avec tous les attributs et faire plein de test ? Ça me semble encore plus laid que les deux 1ères propositions. Comment faire ? Choisir un langage avec de l'héritage, je suppose. |
||
|
|
00
|
|
|
#6 | |||||
![]() ![]() Inscription : septembre 2003 Messages : 4 300 ![]() |
Bjr,
Citation:
Le code suivant fonctionne : Code :
Il y a (au moins) une discussion sur le polymorphisme sur ce forum que tu devrais retrouver avec une recherche. Cela pourra peut-être t'aider.
__________________
Assistant de création/modification de rubans Office Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL Blog Office Mon Site DVP |
|||||
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Grégory MARTIN Inscription : mars 2010 Messages : 72 ![]() |
Bjr,
Oui, mais en ajoutant des instructions qui accèdent à des propriétés de mes classes pour mettre à jour un user-form, si je ne connais pas l'ordre de la succession d'objets A,B,C, alors je risque d'accéder à une propriété qui appartient à une autre classe et là ![]() On error resume next pour poursuivre... |
|
|
00
|
|
|
#8 | |||
![]() ![]() Inscription : septembre 2003 Messages : 4 300 ![]() |
Citation:
Code :
__________________
Assistant de création/modification de rubans Office Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL Blog Office Mon Site DVP |
|||
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Grégory MARTIN Inscription : mars 2010 Messages : 72 ![]() |
Merci pour votre aide.
|
|
|
00
|
|
|
#10 | |
|
Office & Excel ![]() ![]() ![]() |
Salut.
Arkham a parlé de polymorphisme, et tu pourrais effectivement y arriver avec la création d'une interface, celle-ci ne reprenant que les propriétés, fonctions ou méthodes communes aux différentes classes. Il faut que les signatures des fonctions soient les mêmes pour les différents objets. Il faudrait donc préciser ce que tu veux dire par Citation:
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
|
00
|
|
|
#11 | |
|
Futur Membre du Club
![]() Grégory MARTIN Inscription : mars 2010 Messages : 72 ![]() |
Citation:
Je veux dire que le code de fonction1 dans A peut différer de celui de fonction1 dans B, tout en ayant la même signature. |
|
|
|
00
|
|
|
#12 | ||||||||
|
Office & Excel ![]() ![]() ![]() |
Oui, le type de retour doit être identique, mais tu peux utiliser Variant ou Object, ce qui te laisse des possibilités.
Soit l'interface iInterface suivant Code :
Code :
Code :
Voici un code qui crée des objets bien distincts cClasse1 et cClasse2 et qui les chargent dans une collection. [EDIT] Après, le code boucle sur les objets de la collection (en supposant qu'ils sont tous de type iInterface, sinon, plantage) pour en exploiter les fonctions [/EDIT]. Code :
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
||||||||
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Grégory MARTIN Inscription : mars 2010 Messages : 72 ![]() |
Merci pour vos explications claires. Elles m'ont aiedées à mieux comprendre le fonctionnement de VBA.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com