génération de tableau

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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+++
 
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+++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour