génération de tableau

  • Initiateur de la discussion Enfazz
  • Date de début
E

Enfazz

Guest
Bonjour à tous,
Voilà, mon petit problème, j'aimerais savoir si il est possible de construire des tableaux "dynamiques" avec VBA sous Excel. C'est à dire, en fonction des données issues d'une feuille excel construire un tableau. En fonction des données, le nombre de colonnes par exemple augmente ou diminue si je retire des données dans ma feuille... je sais c 'est vraiment pas clair mais j'arrive pas a exprimer mon besoin.

Par exemple :
dans une feuille j'ai c données qui définissent une famille.

Famille
Père pierre 54
mère marie 49
enfant1 etienne 18
enfant 2 julie 22

g donc sur une autre feuille ce tableau
Famille
------------------------
Prenom | Pierre|Marie
Age | 54 | 49 .......

mais maintenant supposons qu'il y ai un nouvel enfant, je voudrais qu'une nouvelle colonne soit générée grace à l'ajout d'un nouvel enfant ds ma table..... en espérant que vous comprenez...
Je vous remercie.
 
Z

Zon

Guest
Salut,

D'une maniére générale on peut définir un tableau en VBA comme ceci en VBA:
dim T

T=range("A1:C25").value

T sera un tableau à 2 dimensions de 25 lignes et 3 colonne en Base 1.

Mais dans ton cas il faut travailler à l'envers car on va être obligé de redimensionner pour ajouter unee ligne

T=application.transpose(range("A1:C25").value)

T sera un tableau à 2 dimensions de 3 lignes et 25 colonneS en Base 1.

qu'on peu redéfinir que la dernière dimension (ici la 2 eme)

redim preserve T(1 to ubound(t,1), 1 to ubound(t,2)+1)


Je connais pas tes tests mais par exemple tu pourras rajouter Enfant Pierre 25 ans

T(1 ,to ubound(t,2) ="enfant" 'ou range("D654").value
T(2 ,to ubound(t,2) ="Pierre" 'ou range("D654").value
T(3 ,to ubound(t,2) ="25 ans" 'ou range("D654").value

ensuite pour mettre le tablau dans une feuille:

[A1].resize(ubound(t,2),ubound(t,1))=application.transpose(T)

A+++
 
Z

Zon

Guest
Salut,


EN relisant mon post d'hier soir, j'ai fais une grosse boulette.

T(1 ,to ubound(t,2) ="enfant" 'ou range("D654").value
T(2 ,to ubound(t,2) ="Pierre" 'ou range("D654").value
T(3 ,to ubound(t,2) ="25 ans" 'ou range("D654").value

à remplacer par

T(1 ,ubound(t,2) ="enfant" 'ou range("D654").value
T(2 ,ubound(t,2) ="Pierre" 'ou range("D654").value
T(3 ,ubound(t,2) ="25 ans" 'ou range("D654").value


A+++
 

Discussions similaires

Statistiques des forums

Discussions
312 377
Messages
2 087 736
Membres
103 655
dernier inscrit
MOUNIRACH16