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

Access Discussion :

partager un objet entre classes


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 46
    Points
    46
    Par défaut partager un objet entre classes
    Bonjour à tous,

    je vous explique mon pb : je suis un habitué de la POO mais novice en VBA. J'ai créé pour mon projet différentes classes,et j'aimerais que toutes ces classes puissent partager (acceder en lecture) à un même objet (dans mon cas un excel.application). Avec l'herotage ca aurait facile....

    J'ai essayer plusieurs choses :
    - creer mon excel.application dans le prog principal puis le passer en parametre à mes classes : c'est lourd et ca marche pas ^^
    - creer une classe MyExcel avec public appexcel as excel.application, que je créé et instancie dans le main : marche pas non plus
    Et puis d'autres très cons :-)

    Bref là je seche un peu , ca doit surement être évident mais je vois pas (à part p-e en déclarant un excel.application dans chacune de mes classes, mais bonjour la lourdeur...)

    merci de votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 46
    Points
    46
    Par défaut
    bon pour préciser un peu ma question voici un exemple :

    dans 1 module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim appexcel as excel.application
    dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim monFournisseur as fournisseur
    set monfournisseur = new fournisseur
    ...
     
    set appexcel = createobject("excel.application")
    a = appexcel.worksheets(1).cells(1,1)
    b = monfournisseur.getcell(1,1)
    dans ma classe fournisseur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function getcell(ligne,col as integer) as string
    getcell = appexcel.worksheets(1).cells(1,1)
    end function
    Avec ce code, il me met "objet requis" qd il rentre dans le getcell de la classe.

    help plz

  3. #3
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Sans avoir essayé ce que tu veux faire mais pour avoir déjà utiliser l'instanciation Excel, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function getcell(appexcel As Excel.Application, ligne,col as integer) as string

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tu peux aussi enoyer appexcel dans un attribut de la classe fournisseur via une property SET par exemple

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 46
    Points
    46
    Par défaut
    Merci pour la réponse.

    Malheureusement ca ne marche pas, car je ne peux pas appeler la fonction au niveau du main. j'ai une erreur de byref, et si je met byval, j'ai ensuitel 'erreur de objet requis.

    je commence à me demander si ce que je veux faire es possible, en tout cas avec 1 excel.application.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 46
    Points
    46
    Par défaut
    ah une autre reponse.

    J'avais pensé à cette solutuion, que je voulais éviter vu que j'ai 1 20aine de classe ^^
    Bon je vais me résoudre à utiliser cette solution mais j'ai peur de créer 20 instances excel. Yaurit moyen qu'ils récupèrent tous l'instance excal créé dans le main?

    Car pour faire ça il faudrait passer le appexcel en paramètre de tous les create des classes, et apparemment vb aime pas trop ça

Discussions similaires

  1. [Stratégie] Partager des objets entre servlets et classes
    Par Luke58 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/08/2009, 19h31
  2. Partage d'objet entre objet
    Par oxor3 dans le forum CORBA
    Réponses: 1
    Dernier message: 08/09/2006, 22h00
  3. [WinForms]Comment partager des objets entre threads ?
    Par AiSpirit dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 16/08/2006, 08h57
  4. [javaBean + JSP] comment partager un objet entre les page JSP
    Par subzero82 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 31/05/2006, 18h48

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