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] Dim dynamique sur un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Par défaut [VBA-E] Dim dynamique sur un tableau
    Bonjour,

    Je suis sur VBA Excel

    J'ai un problème avec la déclaration d' un tableau que je voudrais dynamique. Il va contenir des "couples" de string.

    Pour l'instant, j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim arrValeur(20, 1) As String
     
             Début de ma boucle
    	         ....
                    arrValeur(i, 0) = ctrTxt
                    arrValeur(i, 1) = ctrRef
                    i = i + 1
                    .....
             Fin de ma boucle
    Seulement je ne voudrais pas définir un nombre de lignes car je sais pas à priori combien j'en ai.

    J'ai essayé avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim arrValeur(,i) As String
    Dim arrValeur() as String
    mais sans succés.

    1- Y a-t-il une solution sans définir à l'avance mon nombre ligne et seulement le nombre de colonne ?

    2- Je connais par contre mon nombre maxi de ligne, faut-il que je dimensionne avec ce nombre maxi au départ,que je le remplisse et ensuite que je redimensionne avec un redim avec la valeur de i (qui correspond au nombre de ligne remplie) ?

    En vous remerciant,

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim arrValeur() As String 
     
             Début de ma boucle 
                .... 
                    redim preserve arrValeur(0 to 1,0 to i)
                    arrValeur(0,i) = ctrTxt 
                    arrValeur(1,i) = ctrRef 
                    i = i + 1 
                    ..... 
             Fin de ma boucle

  3. #3
    Membre expérimenté
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Par défaut
    On ne peut redimensionner (en preserve) que sur la derniere dimension...

    Il faut t'adapter et basculer ta structure:
    array(ligne,colonne) -> array(colonne, ligne)

    ps: je laisse ce post pour l'explication, meme si le coté obscure est décidement trop fort...

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Par défaut
    1 --> La solution est l'utilisation de collection
    2 --> La solution que tu annonces est très correcte.

    Bref, a toi de voir si tu préfères els collection ou les redim de tableau.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Par défaut
    La solution avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    redim preserve arrValeur(0 to 1,0 to i)
    marche comme je veux...

    Je vous remercie tous

    Citation Envoyé par ZuZu
    1 --> La solution est l'utilisation de collection
    Je ne sais pas trop ce que c'est que les collections mais je vais chercher à m'instruire

    Bonne journée à vous

  6. #6
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    n'utilises pas de collection en lieu et place de tableau sur autre choses que des objets

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

Discussions similaires

  1. Mise en forme couleur via VBA sur un tableau croisé dynamique
    Par a.ouguerzam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2015, 12h41
  2. [XL-2010] Décocher une case sur un Tableau Croisé Dynamique VBA
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/10/2014, 13h45
  3. Vba : erreur sur un tableau croisé dynamique
    Par salseropom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2014, 15h45
  4. [VBA E] bouton dynamique sur une feuille
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/06/2006, 19h05
  5. [VBA-A] Trie alphabétique sur un tableau unidimensionnel
    Par Bourbaky dans le forum VBA Access
    Réponses: 10
    Dernier message: 01/06/2006, 12h36

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