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

VBA Discussion :

[VBA] Evaluation d'expression (PHP)


Sujet :

VBA

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    Par défaut [VBA] Evaluation d'expression (PHP)
    Salut za tous. Apapremment, notre ami vba ne veut pas de ce code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 0 To 3
     
    ' Appelle la procédure en fct de i
     
    Call "proc" & i
     
    Next i
    Certains crieront à l'infamie car Call ne prend pas de String en argument...oui mais alors comment appeler dynamiquement des fonctions Sub, un peu à la manière de PHP ?

    Thanis guys pour vos réponses!!!

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Où t'as vu ça ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    euh...Pas compris la réponse. En tout cas, ce que tu as écris ne fonctionne pas...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors, c'est parce que tu as pris LeMot pour un mot, pas pour une variable. Faut pas prendre le mot au pied de la lettre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LeMot = "J'ai pas compris ton problème..."
    Call LaProc(LeMot)
    Et dans la sub LaProc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub LaProc(QuoiLeMot)
         Msgbox QuoiLeMot
    End sub
    C'est mieux ?
    A moinse que tu parles de fonction... Que veux-tu faire ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Non, mon probleme n'est pas au niveau de l'argument.

    En fait j'ai plusieurs sub:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub routine_1
     
    End Sub
     
    Sub routine_2
     
    End Sub
     
    Sub routine_3
     
    End Sub
    Et je dois les appeler les unes après les autres. Je pourrais faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select Case nb
     
    Case 1
    Call routine_1
     
    Case 2
    Cass routine_2
     
    etc.
    End Select
    Mais j'ai simplifié le problème. Ce que jecehrche a faire, c'est un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 to 3
     
    Call routine_ & i
     
    Next i
    Il appellerait les routine dynamiquement, donc. En Action script, cela est possible en utilisant:

    tout simplement!
    Comment est-ce donc en VBA ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub RunLaProc()
    LaSub = "LaProc" & i
         Application.Run "'Classeur.xls'!" & LaSub
    End Sub

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    tiens, j'y arrivais pas avec l'exemple de ouskel, j'ai donc adapté, ça ça marche aussi. mais c'e'st bien la même.
    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
    Sub proc0()
    MsgBox "0"
    End Sub
    Sub proc1()
    MsgBox "1"
    End Sub
    Sub proc2()
    MsgBox "2"
    End Sub
    Sub Proceduresenboucle()
    For i = 0 To 2
    procedure = "Proc" & i
         Application.Run procedure
         Next i
    End Sub

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    hé même pour info, ça marche aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Proceduresenboucle()
    For i = 0 To 2
         Application.Run "Proc" & i
         Next i
    End Sub
    c'est bien le run le mot magique

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par alsimbad
    tiens, j'y arrivais pas avec l'exemple de ouskel, j'ai donc adapté, ça ça marche aussi. mais c'e'st bien la même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub proc0()
    procedure = "Proc" & i
         Application.Run procedure
    End Sub
    Heureusement qu'on t'a et que tu as précisé qu'il fallait donner une valeur à i

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    oops

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    Citation:
    alsimbad a écrit :
    tiens, j'y arrivais pas avec l'exemple de ouskel, j'ai donc adapté, ça ça marche aussi. mais c'e'st bien la même.

    Code :
    Sub proc0()
    procedure = "Proc" & i
    Application.Run procedure
    End Sub


    Heureusement qu'on t'a et que tu as précisé qu'il fallait donner une valeur à i

    hé attend, je vois pas pourquoi je dis oups, j'ai jamais écris ça tel que tu le marque

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    je reviens pour ce petit problème qui est maintenant étendu.

    Disons que j'aie 3 tableaux de strings déclarés par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim tabl_1(10) As String
    Dim tabl_2(10) As String
    Dim tabl_3(10) As String
    je voudrais les appeler par le code, mais en utilisant une évaluation d'expression, c'est a dire un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 3
    [ "tabl" & i ](1) = "hello"
    Next i
    Ce qui aurait pour effet de mettre pour les 3 tableaux du haut la chaine "hello" dans l'indice 1.

    Cela est-il possible dans VBA ??

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde
    Regarde en bas du code comment ça s'utilise

Discussions similaires

  1. 2003 VBA: Evaluer une variable dans OpenForm
    Par Jean_Benoit dans le forum Access
    Réponses: 3
    Dernier message: 24/02/2007, 23h01
  2. [VBA]Business Objects et PHP
    Par Enthau dans le forum SDK
    Réponses: 18
    Dernier message: 01/02/2007, 08h28
  3. [XPATH] Evaluer une expression xpath dans un xml
    Par antigone dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 29/01/2007, 17h21
  4. [Source] Evaluer une expression algébrique
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 6
    Dernier message: 22/08/2006, 11h52
  5. [SQL-Server] sql server express + php connexion qui échoue
    Par if_zen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/07/2006, 22h41

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