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-E] Utilisation dynamique de variables [Trucs & Astuces]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 20
    Points
    20
    Par défaut [VBA-E] Utilisation dynamique de variables
    Bonjour,

    Je cherche à faire une fonction générique qui en fonction de l'élément passé en paramètre, effectue un certain traitement avec certaine variable.

    Je voudrai donc par exemple lire le contenu de la varialble MaVariable1 en passant le 12 en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim MaVariable1 as String
    MaVariable1 = "TOTO"
    Dim i as Integer
    i =1
    MsgBox "MaVariable" & i
    Je voudrai que ca affiche "TOTO"

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Solu 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Variables() as Variant
     
    Variables(1) = "TOTO"
    Variables(2) = 21
     
    Msgbox Variables(1) 'Affichera toto
    Solu 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AfficheVariable("toto") 'Affichera toto
     
    Sub AfficheVariable(Variable as variant)
    Msgbox Variable 
    End Sub
    N'oubliez pas de mettre le

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Mhhh .. je me suis peut être mal expliqué. En fait je veux faire un traitement générique, passé un paramètre, qui composera le nom de ma variable, et je voudrais ensuite manipuler ma variable. Par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim lib_Exemple1_toto = "toto"
    Dim lib_Exemple1_titi = "titi"
    Dim lib_Exemple2_toto = "toto2"
    Dim lib_Exemple2_titi = "titi2"
     
    public sub traitementGenerique(element as String)
     
       msgBox "lib_" & element & "_toto"
       msgBox "lib_" & element & "_titi"
     
    end  sub
     
    call traitementGenerique("Exemple1") ==> affiche "toto" puis "titi"
    call traitementGenerique("Exemple2") ==> affiche "toto2" puis "titi2"
    Je veux manipuler mes variables en passant leur nom en chaine de caractère et non passer par des tableaux.

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    J'ai beaucoup cherché sur le net et je ne trouve rien... J'ai essayé en chipottant avec des fonction permettant de donner le type de variable pour voir si il n'y avait pas moyen de connaitre le 'type' d'une variable et faire une boucle qui les affiche toutes par exemple mais je n'y suis pas arrivé une démarche jmfmienne sans doutes lui comprendra lol mais rien a faire... Il aura peu etre une solution mais je n'y arrive pas...

    j'ai trouvé ca : CallByName mais ca ne s'applique pas aux variables...

    Si tu trouve ca m'interesse comme ca au moins je resterai pas idiot
    N'oubliez pas de mettre le

  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
    Attendons donc... attendons... (je connais la réponse depuis plus de 8 ans)...
    Z'êtes curieux, hein ? (elle est la plus simple du monde, pourtant)

  6. #6
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par jmfmarques
    Z'êtes curieux, hein ? (elle est la plus simple du monde, pourtant)
    Non, tu nous fait juste perdre notre temps
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  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
    Il s'agit du principe du dictionnaire. On accède à un élément à l'aide d'un clé et non d'un index. Mais ce principe utilise une 'sorte' de tableau comme une Collection :

    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
    Public CollectionDeVariables As New Collection
     
    Public Sub main()
     
        While CollectionDeVariables.Count > 0
            CollectionDeVariables.Remove 1
        Wend
     
        CollectionDeVariables.Add "toto", "lib_Exemple1_toto"
        CollectionDeVariables.Add "titi", "lib_Exemple1_titi"
        CollectionDeVariables.Add "toto2", "lib_Exemple2_toto"
        CollectionDeVariables.Add "titi2", "lib_Exemple2_titi"
     
        traitementGenerique "Exemple1"
        traitementGenerique "Exemple2"
    End Sub
     
    Public Sub traitementGenerique(element As String)
       MsgBox CollectionDeVariables("lib_" & element & "_toto")
       MsgBox CollectionDeVariables("lib_" & element & "_titi")
    End Sub

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    ok ok merci.

    Je pensais plutôt à quelque genre du genre {"MaVarialble"+i}, un peu comme en windev ou php.... mais ca tombe ce n'est pas aussi facile que ca en VB, et qu'on doit passé par le principe de dictionnaire comme l'a expliqué CatBull

    Enfin, bon je vais faire avec ^^

    Je laisse le post ouvert au cas ou d'autre connaisse la solution optimale

Discussions similaires

  1. [VBA-E] - Utilisation d'une variable avec la propriete offset
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/05/2007, 18h31
  2. [VBA]comment utiliser des Variables avec Underscore ( _ )
    Par Oceliane dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/04/2007, 17h02
  3. [VBA-E]Utiliser une variable dans une formule
    Par bossu dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 04/06/2006, 15h25
  4. [VBA-E] Utiliser le range dans un tab croisé dynamique
    Par GoLDoZ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/03/2006, 16h12
  5. [VBA] excel croisé dynamique et plage de données variables
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/01/2006, 18h14

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