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 :

VBA : [procédure] : récupérer ou évaluer la valeur d'une variable contenu dans une autre variable


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut VBA : [procédure] : récupérer ou évaluer la valeur d'une variable contenu dans une autre variable
    Bonjour à tous,

    Dans un userform Excel 2010 (VB Project) :

    J'ai une variable tableau qui contient une liste de différents noms de tableaux que je manipule ( list_en = Array("tab_A", "tab_B, ...)
    Je souhaiterais affecter à des variables des valeurs spécifiques aux éléments de ces tableaux, devenu des noms de variable d'une liste.
    J'arrive à construire la variable du type var = tab_A(i, j) mais je voudrais que "var" prenne la valeur de l'élément du tableau en fonction de mes valeurs de i et j.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Option Base 1
        Dim var As String
        Dim list_en As Variant
        list_en = Array("Tabl_A", "Tabl_A")
     
        For x = 1 To UBound(list_en)
            ....
            ...
            var = list_en(x) & "(1," & x & ")" 
            MsgBox  "var =" & var                    => affiche bien var = Tabl_A(1,1)
    mais je voudrais que var m'affiche la valeur de Tab_1(1,1), du style Eval("va") ??

    Merci pour votre aide ...

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    tu as fait un tableau de chaines et non de tableaux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim var    As String, x As Long
        Dim list_en As Variant
        Dim Tabl_A(1 To 3, 1 To 3), Tabl_B(1 To 3, 1 To 3)
        Tabl_A(1, 1) = "A"
        Tabl_B(1, 1) = "B"
        list_en = Array(Tabl_A, Tabl_B)
        For x = 1 To UBound(list_en)
            '....
            '...
            var = list_en(x)(1, 1)
            Debug.Print var
        Next x
    End Sub
    eric

  3. #3
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Bonjour,

    un exemple simple à adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
    Dim TAB_A(1 To 2), TAB_B(1 To 2), List
        TAB_A(1) = "A"
        TAB_A(2) = "B"
        TAB_B(1) = "C"
        TAB_B(2) = "D"
        List = Array(TAB_A, TAB_B)
     
        For i = LBound(List) To UBound(List)
            For j = LBound(List(i)) To UBound(List(i))
                MsgBox List(i)(j)
            Next
        Next
    End Sub
    Edit : Slt Eric , j'ai un poil de retard

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    tu as fait un tableau de chaines et non de tableaux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim var    As String, x As Long
        Dim list_en As Variant
        Dim Tabl_A(1 To 3, 1 To 3), Tabl_B(1 To 3, 1 To 3)
        Tabl_A(1, 1) = "A"
        Tabl_B(1, 1) = "B"
        list_en = Array(Tabl_A, Tabl_B)
        For x = 1 To UBound(list_en)
            '....
            '...
            var = list_en(x)(1, 1)
            Debug.Print var
        Next x
    End Sub
    eric
    Si tu parles de "list_en", c'était bien mon intention - La boucle vraiment moche et sans bon sens était pour tenter d'exposer mon souci avec les valeurs des tableaux dont les noms et indices sont construit dans des boucles. J'ai repris ta démarche et tout fonctionne bien maintenant - Merci beaucoup (ainsi qu'aux autres qui se sont joint à mon problème).

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 29/04/2016, 12h15
  2. Réponses: 10
    Dernier message: 15/06/2011, 11h30
  3. Réponses: 15
    Dernier message: 04/10/2007, 10h37
  4. Réponses: 1
    Dernier message: 31/07/2006, 13h54

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