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 :

Problème de ReDim Array


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 51
    Par défaut Problème de ReDim Array
    Bonjour,

    Je viens vers vous car j'ai un problème concernant un code vba sous Excel:
    J'ai un Array d'Array ( je ne sais pas si c'est très claire dit comme sa, donc regardez le code ), sauf que j'aimerais re-définir une valeur d'un Array contenu dans la principal.

    Pour plus de clarté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim n As Variant, uN1 As Variant, uN2 As Variant, uN3 As Variant
    uN1 = Array()
    uN2 = Array()
    uN3 = Array()
    n = Array(uN1, uN2, uN3)
    ' Ce que je voudrais maintenant faire, schématiquement puisque cela ne fonctionne pas:
    ReDim Preserve n(0)(0)
    n(0)(0) = 5
    Mon but est donc de re-définir la une valeur contenu dans un Array, lui-même contenu dans un Array.
    J'ai essayer différentes manières, mais toujours sans succès...
    Et je ne trouve pas ce qu'il me faut sur Google.

    Merci de votre aide,

    EyesGammer

  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
    Par défaut
    Bonjour,

    je pars du principe que tu as tout essayé...
    Tu pourrais utiluser un type personnalisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Type tabl
        uN1() As Variant
        uN2() As Variant
        uN3() As Variant
    End Type
     
    Sub test()
        Dim n As tabl
        ReDim n.uN1(0)
        n.uN1(0) = 5
        ReDim Preserve n.uN1(0 To 5)
    End Sub
    eric

    PS : dans un module Standard

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Si l'on veut conserver la démarche (que je ne conseille pas) de EyesGammer, il est nécessaire de redimensionner les arrays de l'array d'arrays, puis de reconstituer l'array d'arrays .
    Démo : --->>
    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
    Dim n As Variant, uN1 As Variant, uN2 As Variant, uN3 As Variant
      uN1 = Array()
      uN2 = Array()
      uN3 = Array()
      n = Array(uN1, uN2, uN3)
      ' Ce que je voudrais maintenant faire, schématiquement puisque cela ne fonctionne pas:
      ReDim Preserve uN1(2) --->> redimensionnement du oremier des arrays de l'array n
      ReDim Preserve uN2(0) --->> redimensionnement du second des arrays de l'array n
      n = Array(uN1, uN2, uN3) --->> reconstitution de l'array d'arrays
      For k = 0 To UBound(n(0))
        n(0)(k) = k
      Next
      For x = 0 To UBound(n(1))
        n(1)(x) = x
      Next
      MsgBox n(0)(2)
      MsgBox n(1)(0)
    EDIT : on pourra comprendre que l'espace nécessaire au stockage en mémoire de l'array d'arrays est déterminé par le total des espaces nécessaires (espace à prévoir pour chacun des arrays de l'array global). Si l'on modifie la taille d'un des arrays de l'array global, c'est l'ensemble qui doit alors être déterminé à nouveau. Un peu comme avec une commode à 5 tiroirs. Il est impossible d'augmenter la taille d'un (ou plusieurs) tiroirs sans reconsidérer la commode elle-même (en construire une autre, de remplacement).

Discussions similaires

  1. Problème entre boost::array std::copy et les vector
    Par Davidbrcz dans le forum Boost
    Réponses: 4
    Dernier message: 27/03/2008, 19h20
  2. Problème mapping String.Array côté client
    Par valjjou dans le forum Services Web
    Réponses: 1
    Dernier message: 04/04/2007, 13h10
  3. [Tableaux] Problème avec un array
    Par baleiney dans le forum Langage
    Réponses: 5
    Dernier message: 08/07/2006, 17h54
  4. [Tableaux] Problème avec un array et les pseudo frame
    Par azerty53 dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2006, 14h57
  5. problème avec les array en pl/pgsql
    Par nico31120 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/03/2005, 16h04

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