Copier tableau taille variable sur feuille calcul

Fermé
davidos - Modifié par davidos le 18/07/2016 à 15:24
thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 - 20 juil. 2016 à 18:41
Bonjour,

Je stocke des données que j'extrait d'une base dans un tableau dont j'ai défini le type :


 Type tableau_type_dem
      ligne_dem As Integer
      date_dem As Date
      duree_dem As Date
      rejets_nox As Integer
      rejets_so2 As Integer
 End Type



Comment puis-je faire pour faire apparaitre mon tableau dans ma feuille de calcul de la manière la plus simple possible, avec donc une colonne pour "ligne_dem", une autre pour "date_dem" etc... ?


Je crains de ne pas avoir la bonne syntaxe avec Range.Resize...

Merci d'avance,

David
A voir également:

3 réponses

thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 691
19 juil. 2016 à 21:21
Bonjour,

Vous pouvez essayer ce code

Sub création_tableau()

With ActiveSheet
Set plage_tableau = .Range("A1:E1") ' définition du tableau
plage_tableau.Columns(1).NumberFormat = "0" ' format entier
plage_tableau.Columns(2).NumberFormat = "dd/mm/yyyy" ' format date
plage_tableau.Columns(3).NumberFormat = "dd/mm/yyyy" ' format date
plage_tableau.Columns(4).NumberFormat = "0" ' format entier
plage_tableau.Columns(5).NumberFormat = "0" ' format entier
plage_tableau.Rows(1).Value = Array("ligne_dem", "date_dem", "duree_dem", "rejets_nox", "rejets_so2") 'ajout des champs
.ListObjects.Add(SourceType:=xlSrcRange, Source:=plage_tableau, XlListObjectHasHeaders:=xlYes).Name = "tableau_type"
End With


End Sub


 
0
Bonjour !

Merci pour votre réponse !

Votre code permet en effet de créer un tableau à l'emplacement souhaité, mais il ne le remplit pas. Je ne vois que les en-têtes.

J'ai essayé une boucle for en m'inspirant de votre code (rajoutée avant .ListObject.Add() que je garde donc) :



For i = 2 to <nb_lignes> 'je vous épargne le nom explicite
plage_tableau.Rows(i).Value = Array(tableau_type(i).ligne_dem, tableau_type(i).date_dem, etc...)

Next




Mais il me renvoie l'erreur 1004 : "un tableau ne peut pas en chevaucher un autre"
0
thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 691
Modifié par thev le 20/07/2016 à 18:43
Bonjour,

Après création du tableau "tableau_type", pour son remplissage :

'remplissage tableau
With ActiveSheet.ListObjects("tableau_type")
Set ligne_insertion = .HeaderRowRange.Offset(.ListRows.Count + 1)
For i = 0 To <nb_lignes> -2
ligne_insertion.Offset(i).Value = " " 'création de la ligne à blanc
.ListColumns(("ligne_dem")).DataBodyRange.Rows(.ListRows.Count).Value = tableau_type(i + 2).ligne_dem
.ListColumns("date_dem").DataBodyRange.Rows(.ListRows.Count).Value = tableau_type(i + 2).date_dem
.ListColumns("duree_dem").DataBodyRange.Rows(.ListRows.Count).Value = tableau_type(i + 2).duree_dem
.ListColumns("rejets_nox").DataBodyRange.Rows(.ListRows.Count).Value = tableau_type(i + 2).rejets_nox
.ListColumns("rejets_so2").DataBodyRange.Rows(.ListRows.Count).Value = tableau_type(i + 2).rejets_so2
Next
End With


--
 
0