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 :

Redimensionnement tableau à 2D [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2012
    Messages : 30
    Par défaut Redimensionnement tableau à 2D
    Bonjour à tous,

    Voilà mon problème :
    Je charge un tableau excel à 2D dans un array 2D (vous m'avez compris ^^)
    Donc j'ai l'array sous cette forme : Tblo(i,j) où i est la ligne (donc l'objet) et j la colonne (donc un critère).

    Je fais du tri etc sur ce tableau et ensuite je veux le redimensionner car il comporte moins d'élèment qu'avant, hors avec redim preserve on ne peux modifier que la derniere dimension hors c'est la premiere (nombre d'élèment) que je veux modifier.

    Que faire ?

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tu peux faire une boucle pour recopier dans un tableau intermédiaire ou coller le tableau sur une plage de cellules, vider le tableau et récupérer les données dans le tableau.

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Inverse le tableau initial par Application.Transpose, la première dimension deviendra la seconde

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Tb, Res
     
    Tb = Range("A1:B20")   '20x2
    Res = Application.Transpose(Tb)
    ReDim Preserve Res(1 To 2, 1 To 8)
    Tb = Application.Transpose(Res) '8x2
     
    Range("D1").Resize(UBound(Tb, 1), UBound(Tb, 2)) = Tb

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2012
    Messages : 30
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Tu peux faire une boucle pour recopier dans un tableau intermédiaire ou coller le tableau sur une plage de cellules, vider le tableau et récupérer les données dans le tableau.
    Oui mais je passes par des tableaux pour être très rapide donc cette solution n'est pas possible

    Citation Envoyé par mercatog Voir le message
    Inverse le tableau initial par Application.Transpose, la première dimension deviendra la seconde

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Tb, Res
     
    Tb = Range("A1:B20")   '20x2
    Res = Application.Transpose(Tb)
    ReDim Preserve Res(1 To 2, 1 To 8)
    Tb = Application.Transpose(Res) '8x2
     
    Range("D1").Resize(UBound(Tb, 1), UBound(Tb, 2)) = Tb
    J'avais essayé transpose mais je n'arrivais pas à l'utiliser, bon je vais faire des tests pour voir si c'est rentable

    Pour l'instant j'ai définit une variable DernLigne qui correspond au dernier indice de la boucle quand elle s'arrête, cette indice peut varier.

    Du coup j'utilise plus Ubound mais ma variable à la place, c'est pas joli mais ça diminue pas les perfs. A voir comment transpose x2 est gourmand.

    Merci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/02/2011, 11h28
  2. redimensionnement tableau dynamic
    Par francky57 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2008, 18h00
  3. redimensionner tableau
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/04/2006, 15h24
  4. Problème avec redimensionnement tableau
    Par PoZZyX dans le forum Réseau
    Réponses: 18
    Dernier message: 20/04/2006, 15h46
  5. Redimensionner les images dans un tableau
    Par cyke37 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 13/10/2005, 19h19

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