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

Macros et VBA Excel Discussion :

Création des méthodes d'une classe personnalisée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut Création des méthodes d'une classe personnalisée
    Bonjour le forum,

    Je me suis fabriqué une classe personnalisée dans un module de classes, et j'aurais besoin de lui donner des méthodes. Je n'ai trouvé nulle part comment faire ni dans l'aide de VBA, ni sur ce forum. Quelqu'un saurait-il m'expliquer comment :
    • Créer les méthodes propres à une classe ?
    • Définir les méthodes "classiques" (comme l'affectation, la comparaison, le print, etc.) pour cette classe ?

    Merci d'avance !

    PS : et un grand merci à Pierre Fauconnier pour son tutoriel "Création et utilisation de classes personnalisées en VB 6.0 et VBA". Vivement la partie 2 !

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Pour creer des methodes, tu crees des procedures dans le module de classe, des fonctions si la methode doit retourner un resultat.
    Par contre, si j'ai compris ta question sur les methodes "classiques", je ne crois pas qu'il soit possible de modifier un operateur ou une fonction deja existante.

    Pleinement d'accord avec toi pour :
    Vivement la partie 2 !
    Cordialement,

    PGZ

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut
    Merci pgz !

    Et au temps pour moi, j'ai effectivement trouvé ma réponse dans Office et les modules de classes pour les méthodes.

    Ce que je voulais dire par "définir les méthodes classiques", c'était en fait savoir comment faire de la surcharge de méthodes classiques, i.e. comment faire par exemple pour dire MonObjet2 = MonObjet1, en définissant dans la classe la méthode surchargée "=", qui copierait en fait toutes les propriétés une par une. Là encore, j'ai trouvé ma réponse sur Access : Modules de classes : il semble que VBA ne gère pas la surcharge de méthodes.

    La question qui reste donc est : y a-t-il un moyen de de copier un objet dans un autre (de faire une affectation en fait), autre que de créer par exemple une méthode Affecter qu'on écrirait MonObjet2 = MonObjet1.Affecter ?

  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 171
    Billets dans le blog
    2
    Par défaut
    Bonjour martinmacfly, Bonjour pgz,

    un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MonObjet2 = MonObjet1
    ne fonctionne pas ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut
    Bonjour tototiti,

    Set marche très bien, mais le problème de Set, c'est qu'il ne crée pas une copie de mon objet, il fabrique seulement une nouvelle référence vers mon objet. Du coup, en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MonObjet2 = MonObjet1
    ... si je modifie ensuite MonObjet2, MonObjet1 sera aussi modifié, ce que je veux justement éviter...

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    A mon avis tu dois creer une methode copy pour ce type d'objet. Je ne crois pas qu'il y ai moyen d'y couper...

    Cordialement,

    PGZ

Discussions similaires

  1. [PHP 5.3] [POO] Création des variables d'une classe
    Par pierrot10 dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2010, 00h43
  2. Réponses: 4
    Dernier message: 22/09/2008, 15h33
  3. Réponses: 14
    Dernier message: 08/04/2008, 16h42
  4. Réponses: 7
    Dernier message: 28/12/2007, 23h08
  5. Création dynamique de méthode sur une classe ?
    Par elitost dans le forum Général Java
    Réponses: 9
    Dernier message: 18/10/2005, 14h47

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