Bonjour à tous,
Voici mon problème :
1 - J'ai 3 (mais il pourrait y en avoir plus) fichiers de données dont la structure est identique, chacun étant relatif à un domaine de données spécifique. (Ex : Données propres à un département d'une société). Chaque fichier est renseigné indépendamment.
2 - Chaque fichier comporte plusieurs onglets nommés respectivement de ma même façon. (Ex : Un onglet par et pour un service donné).
3 - Chaque onglet possède un nombre de colonnes de données différent mais chaque onglet possède aussi des colonnes "communes" avec les autres onglets càd avec le même type d'information mais qui sont différentes d'un domaine à l'autre.
Soit :
onglet SYS : colonnes ABCFGKM
onglet ING : colonnes ABEDFHJKLOPQR
onglet ACH : colonnes ACDHIJKOR
onglet QUA : colonnes AEFILMS
... etc ...
onglet PRO : colonnes AQRS
(Chaque lettre représente l'intitulé ou nom de la colonne)
Tous les onglets ont à minima la colonne "A" de commune.
4 - Le nombre de lignes de chaque onglet est bien évidemment variable de l'un à l'autre et d'un fichier à l'autre pour un même onglet.
5 - Afin de créer une base de données globale pour en extraire ensuite tout un tas de stats, je souhaite regrouper à intervalles réguliers (tous les 3 mois par ex) dans un fichier unique comportant un seul onglet, l'ensemble des données des tous les fichiers en mettant toutes les lignes les unes à la suite des autres. (jusque là, çà va encore je peux y arriver moi même)
Mais surtout je souhaiterai que l'ensemble des types d'informations soient représentés dans ce tableau de compilation.
Donc au final l'entête de mon fichier de compilation serait du type : colonnes ABCDEFGHIJKLMOPQRS.
6 - Autant j'arrive à programmer la recherche, puis l'ouverture des fichier et mettre en place la boucle qui va bien sur les onglets, autant je butte sur la façon la plus efficace qui soit pour lire les données lignes à lignes d'une part mais et surtout sur la façon de recopier au bon endroit (comme décrit à la fin du point 5), pour chaque ligne et selon l'onglet traité, les données dans le fichier de compilation final d'autre part.
J'ai bien pensé à mettre les plages de données dans un tableau (pour éviter les énumérations qui sont lentes) mais je ne vois pas comment recopier à coup sûr ces éléments de tableau dans la bonne case de destination.
Il y a là un problème d'algorithmie qui m'échappe. Ce d'autant plus que la procédure qui fera ce travail doit être la plus rapide possible compte tenu du volume important de données à traiter.
Aussi, je fais appel aux bonnes ames et experts de ce forum pour bien vouloir SVP m'aider.
Je suis plus à la recherche d'une aide méthodologique mais si en plus il y a un bout de code de principe pour m'éviter la feuille blanche ce serait la cerise sur le gâteau pour au moins démarrer et affiner par moi même ce projet !
En espérant avoir été suffisamment explicite, d'avance MERCI à tous ceux qui voudrons bien se pencher sur ce problème. Il y a là un bel exercice de style ... Mais ce n'est que mon avis ...
PS : Je précise que je débute en VBA, et c'est pas vraiment évident pour moi de comprendre la complexité de ce langage de part la multitude des fonctions existantes. Cela rentre doucement mais pas facile, mes neurones ne sont plus ce qu'ils étaient ...
Cordialement
oracle7556![]()
Partager