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][Débutant] Execute une commande à partir d'une chaine


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut [VB6][Débutant] Execute une commande à partir d'une chaine
    Bonjour à tous !

    Voilà je vous écris aujourd'hui car j'ai un petit soucis dans mon programme.
    Je vous explique vite fait :
    J'ai un tableau à 2 dimensions avec des chaines de caractère.
    Les 1ère colonnes contiennent des chaines que j'affiche avec un simple MsgBox, mais la 2ème colonne contient des "commandes" qui je veux éxécuter.

    Le problème, c'est comment je fais pour les executer vu que ce sont des "chaines".
    Il y a une fonction qui permet de faire executer ces chaines comme de simples inscructions ?

    Petit exemple afin d'être plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tab(1, 1) = "blabla"
    Tab(1, 2) = "Call MaFonction()"
    Tab(2, 1) = "blibli"
    Tab(2, 2) = "Call AutreFonction()"
    Voilà, j'espère que vous pourrez m'aider !

    Merci d'avance !

  2. #2
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tab(1, 1) = "blabla"
    Tab(1, 2) = "Call MaFonction()"
    Tab(2, 1) = "blibli"
    Tab(2, 2) = "Call AutreFonction()"
    si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tab(1, 1) = "blabla"
    Tab(1, 2) = "MaFonction()"
    Tab(2, 1) = "blibli"
    Tab(2, 2) = "AutreFonction()"
    call Tab(X, 2), ca marche pas ??

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    éval ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Cela me dis "Procédure attendue, et non une variable" :s

    J'ai testé avec le Eval... mais sans résultat.
    Je continue de testé

  5. #5
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    VBA? VB6? Autres?

    CallByName avec une recherche sur le forum en fonction de la réponse à ma question précédente.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Je travaille avec VB 6

    Pour le CallByName, c'est pour executer une methode d'un objet, mais moi ce ne sont pas des méthodes d'objets que je veux appeler, ce sont de simple fonction procédures que j'ai créé

  7. #7
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    CallByName fonctionne dans ce cas.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Je n'arrive pas à me servir du Eval. Je me suis servi de l'exemple de la FAQ.
    Je travaille en en VB6, j'ai donc activé le composant 'Microsoft Script Control' et j'ai utilisé le code qui est indiqué.
    Mais j'ai une erreur sur le New.... "Utilisation incorrecte du mot clé New...."

  9. #9
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Montre ton code

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    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
     
    Tab(1, 1) = "Blabla"
    Tab(1, 2) = "Call MaFonc()"
     
    ------------------------
     
    Dim r As New ScriptControl 
     
    Msgbox Tab(1, 1)
    r.language= "vbscript"
    Debug.Print r.Eval(Tab(1, 2))
     
    -------------------------
     
    Private sub MaFonc()
         Msgbox "test"
    End Sub

  11. #11
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Citation Envoyé par Bluespike62
    Je travaille avec VB 6

    Pour le CallByName, c'est pour executer une methode d'un objet, mais moi ce ne sont pas des méthodes d'objets que je veux appeler, ce sont de simple fonction procédures que j'ai créé
    En effet.

    Une forme est un objet. Donc place tes procédures sur une form. Déclarer-les publiques et exécute ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CallByName MaForm, "MaFonction", VbMethod

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CallByName Form1, Tab(1, 2), VbMethod
    "L'objet ne gère pas cette propriété ou cette méthode"

    Désolé je me sens un peu nul là :s

    Quand tu dis de placer mes procédure sur une form, tu entend quoi par là ?

  13. #13
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Citation Envoyé par Bluespike62
    Quand tu dis de placer mes procédure sur une form, tu entend quoi par là ?
    Que tes procédures ne soit pas stockées dans un module, qu'elle soit dans ta feuille. enfin je pense que c'est ce qu'il veut dire..

  14. #14
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Oui la procédure, dans ton exemple, doit se trouver sur Form1 et déclarée publique (Public) sinon elle reste inaccessible.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Hmmm.... ca marche !
    Enfin pas totalement, ca ne marche pas avec toutes mes procédures :s
    Pas possible d'utiliser les procédures avec des paramètres ?
    On dirait que c'est ça qui me donne l'erreur

  16. #16
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    La tu me poses une colle

    J'y réfléchis et si une idée m'éclaire, je t'en fait part.

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Bon, j'ai trouvé.

    On ne peut pas appeler directement une procédure avec ces paramètres.

    Pour que ca marche, il faut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Tab(1, 2) = "test"
     
    CallByName Form1, Tab(1, 2), VbMethod, "12"
     
    Public Sub test(num As Integer)               // Affichera 'test12'
    MsgBox "test" & num
    End Sub

  18. #18
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Joli

    Le quatrième paramètre de CallByname récupère en effet les paramètres de la fonction appelée.

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Allez hop, résolu ^^

    Merci à tous pour l'aide que vous m'avez apporté


    PS : J'aime vraiment pas le VB ^^

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/06/2012, 12h12
  2. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  3. Réponses: 2
    Dernier message: 08/03/2010, 15h43
  4. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  5. Réponses: 2
    Dernier message: 05/01/2009, 12h45

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