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 :

Appel d'une variable à grace à la concaténation de deux variables


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 23
    Par défaut Appel d'une variable à grace à la concaténation de deux variables
    Bonjour à tous,

    J'essaie d'appeler une variable grâce à la concaténation de plusieurs variables.
    Je vais vous donner un petit exemple qui va illustre mes propos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Var1 as String
    Dim Var2 as String
    Dim Var3 as String
    
    Dim i as Integer
    
    
    For compteur = 1 to 1000
                    i = fonctionQuiRenvoieEntre1et3 ' c'est une fonction qui me renvoie un nombre compris entre 1 et 3 
                    “Var” & i = …                 >>> VBA m’affiche une erreur car il ne comprend pas la concaténation 
    Next
    Le nom d'une variable n'est donc pas de type string..
    J'ai pensé à beaucoup de solutions de contournement :
    • tableau contenant le nom des variables, puis faire un for each
    • un tableau de taille 3, on appelle donc tab(i) pour la bonne variable
    • Faire un select case sur les i (ici on a que 3 valeurs, mais impossible à gérer dans mon code)


    Je ne cherche donc pas de solution de contournement à ce probleme :/

    Est-il donc possible d'appeler une variable à l'aide du résultat d'une autre variable ?

    Je vous remercie

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas quel est le but recherché mais il n'est pas possible de manipuler une variable de cette façon.
    Ne sachant pas ce que tu veux faire exactement, je te conseillerais de regarder du côté des variables tableaux indicées par l'énumération.
    Je te conseille de lire ce tutoriel Comment utiliser l'énumération pour rendre votre code plus lisible et plus facile à maintenir.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Un petit exemple avec un tableau :
    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
     
    Sub Tableau()
     
        Dim Tbl(1 To 3) As String
        Dim i As Integer
     
        For compteur = 1 To 1000 'pourquoi mille ?
     
            i = fonctionQuiRenvoieEntre1et3 ' c'est une fonction qui me renvoie un nombre compris entre 1 et 3
            Tbl(i) = "je ne sais pas trop quoi ?"
     
        Next
     
        For i = 1 To UBound(Tbl)
     
           MsgBox Tbl(i)
     
        Next i
     
    End Sub
    Hervé.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 23
    Par défaut
    Merci à tous pour vos conseils .
    J'avais utilisé le tableau comme solution de contournement.
    C'est dommage que l'on ne puisse pas appeler la variable avec le résultat d'une autre variable :/

    Bonne journée !

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    A ma connaissance, il n'est pas possible de créer en VBA des méta-variable comme on peut le faire avec certains C (j'ai connu ça aussi avec un vieux langage clone de DBase IV nommé Clipper, les anciens s'en souviennent peut-être).
    Ce qui en tient lieu, ce sont les variables indicées.

    Var(3,25) =

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

Discussions similaires

  1. [AC-2003] Concaténation de deux variables
    Par collosus dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/05/2010, 17h20
  2. Réponses: 3
    Dernier message: 03/11/2009, 07h19
  3. concaténation de deux variables
    Par hicham20 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 07/05/2009, 15h56
  4. Concaténation de deux variables
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/04/2008, 10h56
  5. Problème de concaténation de deux variables
    Par poissonsoluble dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 29/05/2007, 10h00

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