Ecrire tableau (défini par un type) nouvelle feuille

Bonjour à tous,

Je souhaite automatiser le traitement d'une extraction de données. Pour cela, la première étape consiste à diviser le tableau en deux en fonction des utilisateurs (facturations et directeurs).

Pour réaliser cela J'ai dans un premier temps défini un type. Chaque ligne du tableau contient une facture avec ses caractéristiques. J'ai donc défini un type facture.

ensuite j'ai créer une fonction filtre_directeurs qui reçoit le tableau de base et en fonction du nom de l'utilisateur il enregistre la ligne.

Jusqu'ici tout va bien j'obtient mon tableau filtre.

Je souhaite maintenant écrire ce tableau filtre dans une nouvelle feuille. Voici le code que j'ai écris :

Public Function ecrire_element(ByRef tableau() As t_facture)

Dim copie_tableau() As t_facture

Dim ligne As Long

For ligne = 2 To UBound(copie_tableau)

    feuille_directeur.Cells(ligne, 1).Value = copie_tableau(ligne).state
    feuille_directeur.Cells(ligne, COLONNE_GROUP).Value = copie_tableau(ligne).group
    feuille_directeur.Cells(ligne, COLONNE_ROLE).Value = copie_tableau(ligne).role
    feuille_directeur.Cells(ligne, COLONNE_USER).Value = copie_tableau(ligne).user
    feuille_directeur.Cells(ligne, COLONNE_EMAIL).Value = copie_tableau(ligne).email
    feuille_directeur.Cells(ligne, COLONNE_VOUCHER_NUMBER).Value = copie_tableau(ligne).voucher_number
    feuille_directeur.Cells(ligne, COLONNE_INVOICE_DATE).Value = copie_tableau(ligne).invoice_date
    feuille_directeur.Cells(ligne, COLONNE_INVOICE_NUMBER).Value = copie_tableau(ligne).invoice_number
    feuille_directeur.Cells(ligne, COLONNE_VENDOR_NAME).Value = copie_tableau(ligne).vendor_name
    feuille_directeur.Cells(ligne, COLONNE_AMOUNT).Value = copie_tableau(ligne).amount
    feuille_directeur.Cells(ligne, COLONNE_SYSTEM_ENTRY_DATE).Value = copie_tableau(ligne).system_entry_date
    feuille_directeur.Cells(ligne, COLONNE_QUEUE_ENTRY_DATE).Value = copie_tableau(ligne).queue_entry_date
    feuille_directeur.Cells(ligne, COLONNE_QUEUE_EXIT_DATE).Value = copie_tableau(ligne).queue_exit_date
    feuille_directeur.Cells(ligne, COLONNE_AP_COMPLETE_DATE).Value = copie_tableau(ligne).ap_complete_date
    feuille_directeur.Cells(ligne, COLONNE_DECLINE_DATE).Value = copie_tableau(ligne).decline_date
    feuille_directeur.Cells(ligne, COLONNE_DAYS_WITHIN_QUEUE).Value = copie_tableau(ligne).days_within_queue
    feuille_directeur.Cells(ligne, COLONNE_DAYS_TO_PROCESS).Value = copie_tableau(ligne).days_to_process

Next ligne

End Function

Je reçois le message d'erreur suivant :

Run-time error '9'

subscript out of range

il me souligne la premiere ligne en jaune et l'erreur viendrait de copie_tableau.

Merci pour votre aide.

Bonjour,

Pas sûr de savoir t'aider (d'autres y arriveront) mais,

Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers).

Ca aide à aider

Un exemple de même présentation court et anonymisé suffit

ci-joint un fichier type.

Merci

13excel-pratique.xlsm (27.54 Ko)

Bonsoir,

Après lecture du code :

- la fonction a comme argument un tableau :

Public Function ecrire_element(ByRef tableau() As t_facture)

- toute la suite utilise un autre tableau (jamais initialisé :

For ligne = 2 To UBound(copie_tableau)

Solution 1 :

- utiliser directement le tableau passé en paramètre => tableau()

Solution 2 :

- affecter le tableau au nouveau tableau :

copie_tableau = tableau

A voir si cela résout le problème ...

Bonne soirée

Bouben

Bonjour,

Merci à toi, effectivement j'avais oublier de charger le tableau. En apportant quelques modifications à ma fonction ecrire je suis enfin capable de copier le tableau filtre dans la nouvelle feuille. Cependant un petit détail me gène.

Pour les 4 colonnes contenant des dates du type : 11/11/2015 11:40:37 AM

Lorsque le programme copie cette ligne dans la nouvelle feuille il supprime le AM il garde simplement 11/11/2015 11:40:37

cette information est importante car par la suite je souhaite convertir cette colonne en format date (actuellement en string) afin de pouvoir calculer des délai entre les différentes dates.

Je ne comprend vraiment pas pourquoi il supprime la fin sachant que dans le type il est définit en string.

Quelqu'un saurait m'éclaircir pour ça ?

Autre chose, savez-vous comment faire pour supprimer une ligne entiere une fois qu'elle a été copié dans la nouvelle feuille ?

je joins le nouveau fichier fonctionnel.

Merci!

Rechercher des sujets similaires à "ecrire tableau defini type nouvelle feuille"