Copier tableau taille variable sur feuille calcul

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

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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


     
    1. 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"
      1. 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

        --