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

VB 6 et antérieur Discussion :

[VB6] Appeler une procedure par son nom.


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [VB6] Appeler une procedure par son nom.
    Bonjour a tous,

    J'ai une base de donnée Access ou, pour chaque type de rapport existant, j'ai mis le nom d'une procedure existante, qui formatte le rapport choisis par l'utilisateur.

    A partir d'une application visual basic, je voudrais faire la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim rs as new adodb.recordset
    'code qui appelle un query pour recuperer dans le champs 1 le nom de la procedure a appeler.
     
    call rs.fields(1).value

    Ce que j'espere ici, c'est que mon programme va appeler la SUB dont le nom est contenu dans rs.fields(1).value

    Ca ne marche pas, je voudrais savoir si ce que j'essaie de faire est possible.
    Les procedures a appeler sont toutes dans un module, dans le meme projet VB.

    Je sais qu'il est possible de faire un gigantesque 'Select Case' pour decider quelle procedure appeler, mais j'aimerais pouvoir eviter cela si possible.

    Merci d'avance a quiconque trouverait la solution a mon probleme. Si je n'ai pas été assez clair ou ait manqué a une regle du forum, merci de m'avertir, je me corrigerai immédiatement.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Salut j'ai eu le meme sushi il y a quelques jours va voir ici

    http://www.developpez.net/forums/sho...d.php?t=150160

  3. #3
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Bonjour,
    A ma connaissance, ce n'est pas possible en Vb6.
    [Edit]Si c'est possible!!! Voir plus bas
    C'est la différence entre un langage orienté objet et un langage objet.
    [Edit]Il faut donc utiliser les objets !!

    Citation Envoyé par Aide Microsoft
    Passage de pointeurs de fonction à des procédures DLL et à des bibliothèques de types

    Les pointeurs de fonctions « de Basic vers Basic » ne sont pas gérés. Les pointeurs vers des fonctions Visual Basic ne peuvent pas être passés dans Visual Basic lui-même. Pour le moment, seuls sont gérés les pointeurs pointant faisant référence à une fonction DLL depuis Visual Basic.

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    et.... Call Byname ?....

    Edit : salut Alain !

  6. #6
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    autant pour moi
    à jmfmarques et AlainTech
    On en apprend tous les jours

    http://support.microsoft.com/kb/186143/fr

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Sub AppliRun()
    LaMacro = cells(2,2).formula
    Application.Run (LaMacro)
    End Sub

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour encore une fois.

    Callbyname répond effectivement a mes attentes, avec quand meme une petite limitation: le code des fonctions doit etre présent dans le formulaire appelant.

    Sans cela, il semble en effet que ce n'est pas possible.

    Merci pour votre aide

  9. #9
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Citation Envoyé par kenn
    le code des fonctions doit etre présent dans le formulaire appelant.
    Il ne me semble pas.
    Ex avec une feuille qui contient un bouton et un textbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    'Module de classe clsMesProc
    Option Explicit
     
    Public Sub Proc1()
       MsgBox "coucou1"
    End Sub
     
    Public Sub Proc2()
       MsgBox "coucou2"
    End Sub
     
    Public Sub Proc3()
       MsgBox "coucou4"
    End Sub
     
    Public Sub Proc4()
       MsgBox "coucou4"
    End Sub
    'Fin Module clsMesProc
     
    'code de la feuille
    Option Explicit
     
    Private Sub Command1_Click()
       Dim objMesProc As New clsMesProc
       Call CallByName(objMesProc, Text1.Text, VbMethod)
    End Sub
    J'execute les procédures que je saisie dans le textbox (ex: "Proc3" => affiche "Coucou3".
    Par contre, je te conseille de prévoir une méthode dans la classe qui teste l'existence de la procédure appelée avant l'appel ou de gérer les erreurs au moments de l'appel de callbyname si la procédure appelée n'existe pas.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/06/2012, 01h09
  2. Appeler une méthode par son nom sans utiliser eval
    Par rambc dans le forum Général Python
    Réponses: 5
    Dernier message: 30/10/2009, 16h05
  3. Appeler une variable par son nom
    Par averooès dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/04/2009, 22h11
  4. [POO] Appeler une fonction par son nom dans une variable
    Par whitespirit dans le forum Langage
    Réponses: 16
    Dernier message: 18/06/2008, 11h23
  5. [POI] Appeler une cellule par son nom
    Par Galak extra dans le forum Documents
    Réponses: 9
    Dernier message: 17/06/2008, 14h33

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