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 :

nom de tableau contenu dans un autre tableau [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut nom de tableau contenu dans un autre tableau
    Bonsoir,
    Dans une variable tableau(), j'enregistre des noms de tableau.
    Exemple J'aimerais utiliser cette variable sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau(x,y)(num_ligne, num_colonne)
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message(num_ligne, num_colonne)
    J'ai testé ces lignes sans résultat
    Alain

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    vois ici si c'est ce dont tu parles

    cordialement,

    Didier

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Option Base 1
    Public Sub lesArrayCestPasSiSimple()
        '
        Dim myArray() As Variant
        ' tableau à une dimension: résultat ok
        myArray = Array("toto", "tata", "titi", "tutu")
        Range("A1:D1") = myArray
        ' tableau de tableau à une dimension: résultat ok.
        myArray = Array(Array("toto", "tata", "titi", "tutu"), Array("ello", "ella", "elli", "ellu"))
        Range("A5:D5") = myArray(1)
        Range("A6:D6") = myArray(2)
    End Sub
    Ce code ressemble effectivement à ce que je recherche. Par contre, si je souhaite lire un champ du tableau, le code suivant me retourne une erreur ou rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myArray = Array(Array(1), Array(1))
    Alain

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Ce code ressemble effectivement à ce que je recherche. Par contre, si je souhaite lire un champ du tableau, le code suivant me retourne une erreur ou rien
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myArray = Array(Array(1), Array(1))
    Ta syntaxe est l'écriture d'une fonction Array pour créer une variable tableau, pas celle d'une écriture de la lecture d'une donnée d'une variable tableau.

    Les variables tableau sont assez simple d'emploi, mais moins à conceptualiser, la lecture des tutoriels et de l'aide vba sur le sujet seront un gain de temps précieux, car tu en passeras beaucoup plus à tâtonner.
    Ton souci est typique d'un problème de compréhension, bien normal lorsqu'on n'a pas l'habitude de manier les tableaux.

    vois ces tutoriels :

    Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel

    Utiliser les variables tableaux en VBA Excel

    et un focus ici : http://silkyroad.developpez.com/vba/tableaux/#LVI

    Paradoxalement, ni l'un, ni l'autre ne traitent des variables tableau de tableaux, hors c'est ce dont il s'agit dans ton cas. Il faut d'abord maîtriser les bases des variables tableau simples, pour passer à cette étape qui est alors très logique dans son écriture.

    Lance le code suivant avec F5, vois le résultat et continue avec F5...

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Public Sub lesArrayCestPasSiSimple2()
    Dim myArray() As Variant
     
    'Si tu écris ceci :
    myArray = Array(Array(1), Array(1))
    'pour lire les données, il faut écrire cela :
    MsgBox myArray(1)(1)
    MsgBox myArray(2)(1)
    Stop
    'Si tu écris comme ceci, c'est moins ambigu :
    myArray = Array(Array(1), Array(77))
    'pour lire les données, il faut écrire cela :
    MsgBox myArray(1)(1)
    MsgBox myArray(2)(1)
    Stop
    'Si tu écris comme cela, ça devient clair :
    myArray = Array(Array(1, "toto", 3), Array(77, 9, "plouf"))
    'pour lire les données, il faut écrire cela :
    'on lit : Dans la case 1 de MyArray, je veux la première case du tableau sous-jacent etc..
    ' le nom du tableau sous-jacent est en fait myArray(1)
    MsgBox myArray(1)(1)
    MsgBox myArray(1)(2)
    MsgBox myArray(1)(3)
    MsgBox myArray(2)(1)
    ' le nom du tableau sous-jacent est en fait myArray(2)
    'on lit : Dans la case 2 de MyArray, je veux la deuxième case du tableau sous-jacent etc..
    MsgBox myArray(2)(2)
    MsgBox myArray(2)(3)
    'Attention : My array est bien un tableau à 1 dimension !
    End Sub
    cordialement,

    Didier

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Ta syntaxe est l'écriture d'une fonction Array pour créer une variable tableau, pas celle d'une écriture de la lecture d'une donnée d'une variable tableau.

    Les variables tableau sont assez simple d'emploi, mais moins à conceptualiser, la lecture des tutoriels et de l'aide vba sur le sujet seront un gain de temps précieux, car tu en passeras beaucoup plus à tâtonner.
    Ton souci est typique d'un problème de compréhension, bien normal lorsqu'on n'a pas l'habitude de manier les tableaux.
    cordialement,
    Didier
    Merci Didier et zyhack
    Je n'avais pas suivi les conseils du site : FAQ, tutoriels and Co.
    Avec tous vos renseignements je n'ai plus de raison valable de poursuivre cette discussion et je vais bosser mes bases !
    Bonne continuation
    Alain

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    je pense qu'il faut que tu prenne l'exemple plutot dans ce sens
    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
    Public Sub lesArrayCestPasSiSimple()
        '
        Dim myArray() As Variant
        Dim myT() As Variant
        Dim myE() As Variant
     
        ' tableau de tableau à une dimension: résultat ok.
        myT = Array("toto", "tata", "titi", "tutu")
        myE = Array("ello", "ella", "elli", "ellu")
     
        myArray = Array(myT, myE)
     
        Range("A5:D5") = myArray(1)
        Range("A6:D6") = myArray(2)
    End Sub

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/05/2014, 10h19
  2. Réponses: 7
    Dernier message: 02/01/2014, 15h29
  3. Réponses: 4
    Dernier message: 25/03/2013, 16h05
  4. Réponses: 2
    Dernier message: 28/03/2009, 19h13
  5. Réponses: 4
    Dernier message: 20/07/2006, 10h35

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