XL 2019 Créer une base de données à partir de plusieurs fichiers excel source

adrien786

XLDnaute Nouveau
Bonjour à tous,
Pour commencer, je suis très à l'aise avec les fonctions classique d'excel mais n'ai jamais touché au langage VBA.

j'arrive au cours d'une enquête auprès de professionnel et suis confronté à plusieurs centaines de fichiers réponses, qui renseignent sur leurs effectifs.
L'ensemble des fichiers réponses sont uniformisés dans leur construction, c'est à dire que les informations que je souhaite extraire figurent toujours sur la même cellule.
La seule difficulté réside dans le fait que, outre les informations communes situées au même endroit, les caractéristiques de chaque salariés sont présentées, et le nombre de ceux-ci est variable. en clair, le premier salarié figure toujours à la même ligne, mais la dernière ligne concernée peut varier.
J'aimerais récolter les informations générales de chaque fichier (qui se répéteront pour chaque salarié d'un même fichier) ainsi que les informations de chaque salarié au sein d'une base de données commune que je pourrai importer sur STATA ou SAS, qui comporterais une ligne par salarié (lié au fichier dont il est issu par une variable supplémentaire qui prendrait pour modalité le nom de l'entreprise en question).

Quelqu'un saurait-il m'aider? J'en suis au tout début de ma réflexion, mais il m'apparait que la contrainte principale réside sur le nombre variable de lignes à importer non?

Si vous le souhaitez, je vous propose en pièce jointe un exemple de fichier que je souhaiterais importer et la forme que prendrait ma base de données finale (surligné en jaune les informations globales de l'entreprise toujours situées au même endroits, en vert les informations salariés comprises entre 1 et 50 lignes).

Merci d'avance !
 

Pièces jointes

  • fichier_import_exempleok.xlsx
    10.2 KB · Affichages: 15
  • base de donnée globale.xlsx
    9.4 KB · Affichages: 14
Solution
Bonjour Adrien, et bienvenu sur XLD,
Dans votre BDD vous voulez dans la partie jaune la recopie des lignes 4 à 17 de chaque fichier , et dans la partie verte la recopie des lignes 24 à xx ( au max 73) ?
Déjà où se trouve le nom de l'entreprise ? Dans votre fichier c'est "v" ou c'est autre chose ?
Comme il y a plus de salariés que d'entreprise, il faut dupliquer les lignes globale à chaque ligne de salarié ?
Qu'entendez vous par " une variable supplémentaire qui prendrait pour modalité le nom de l'entreprise en question" ? Peut on mettre le nom du fichier, ne serait ce pas suffisant ?

Dernière question : Est ce que vos fichiers sont dans un même dossier ? ( avec aucun autre fichier, ou y en a t-il d'autres qui n'ont rien à voir )

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Adrien, et bienvenu sur XLD,
Dans votre BDD vous voulez dans la partie jaune la recopie des lignes 4 à 17 de chaque fichier , et dans la partie verte la recopie des lignes 24 à xx ( au max 73) ?
Déjà où se trouve le nom de l'entreprise ? Dans votre fichier c'est "v" ou c'est autre chose ?
Comme il y a plus de salariés que d'entreprise, il faut dupliquer les lignes globale à chaque ligne de salarié ?
Qu'entendez vous par " une variable supplémentaire qui prendrait pour modalité le nom de l'entreprise en question" ? Peut on mettre le nom du fichier, ne serait ce pas suffisant ?

Dernière question : Est ce que vos fichiers sont dans un même dossier ? ( avec aucun autre fichier, ou y en a t-il d'autres qui n'ont rien à voir )
 

adrien786

XLDnaute Nouveau
Bonjour Sylvanu, je vous remercie énormément pour votre réponse rapide et pour votre accueil au sein de la communauté XLD.
Je vais essayer de répondre à vos questions le plus précisément possible :

Dans votre BDD vous voulez dans la partie jaune la recopie des lignes 4 à 17 de chaque fichier , et dans la partie verte la recopie des lignes 24 à xx ( au max 73) ?
Il s'agit exactement de cela, avec cette précision qu'il s'agit des cellules de la colonnes C pour la partie jaune, répétées à chaque ligne de salarié présents à partie de la ligne 24. En clair pour ce fichier d'exemple, il y aurait 10 lignes rajoutées dans la BDD globale.


Déjà où se trouve le nom de l'entreprise ? Dans votre fichier c'est "v" ou c'est autre chose ?
Dans mon fichier il s'agit de l'information présente dans la cellule C4 : "Mr Machin Truc"

Comme il y a plus de salariés que d'entreprise, il faut dupliquer les lignes globale à chaque ligne de salarié ? C'est tout a fait ça, une variable pour chacune des information avec la modalité dupliquée pour chaque salarié

Qu'entendez vous par " une variable supplémentaire qui prendrait pour modalité le nom de l'entreprise en question" ? Peut on mettre le nom du fichier, ne serait ce pas suffisant ? Dans mon exemple, la modalité serait Mr MAchin truc, mettre le nom du fichier serait en effet amplement suffisant.

Dernière question : Est ce que vos fichiers sont dans un même dossier ? ( avec aucun autre fichier, ou y en a t-il d'autres qui n'ont rien à voir ). Oui j'ai créé un dossier spécifique avec uniquement les fichiers correspondants.

Merci beaucoup pour votre aide, et pour la grande rapidité avec laquelle vous avez répondu.
Je vous souhaite une bonne soirée,
Adrien
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Un essai en PJ.
Mettre ce fichier dans le dossier où il y a tous les fichiers à analyser. Ne pas changer son nom.
L'appui sur le bouton consolider lance l'analyse de tous les fichiers du dossier.
A tester, et remontez moi le résultat.
 

Pièces jointes

  • Base de donnée globale.xlsm
    18.5 KB · Affichages: 12
Dernière édition:

adrien786

XLDnaute Nouveau
Bonsoir Sylvanu,
vous codez plus vite que votre ombre ! :)

Et bien j'ai lancé la macro et celle-ci fonctionne du feu de dieu.
Je n'ai pas trouvé le bouton consolidé, mais j'ai directement ouvert la macro et lancé.
Celle-ci a buggé au premier lancement, mais cela venait du fait que mon onglet avait un autre nom que feuil1 (ce que je n'avais pas indiqué), j'ai remplacé ce nom dans le programme que vous avez écrit et la base de donnée s'est constituée directement. J'ai fait 10 minutes de vérif sur deux trois fichiers et tout semble fonctionner parfaitement. Franchement chapeau !

En revanche je n'ai pas tout compris au fonctionnement de la macro, malgré les commentaires que vous avez gentiment disséminé, mais j'imagine que cela tient à mon très faible niveau en VBA. Je vais la reprendre ligne après ligne pour essayer de comprendre, afin de pouvoir éventuellement le reproduire. Vous m'avez donné le poisson, maintenant je vais essayer d'apprendre à pêcher !

Juste une question car je ne comprend pas comment cela est programmé. Comment la macro comprend-t-elle qu'on est arrivé à la dernière ligne d'un fichier et qu'il faut donc passer au fichier suivant? J'ai vu que malgré ma consigne de 50 lignes maximum, la macro cherche au delà (ce qui est une très bonne nouvelle car certains fichier possèdent plus de 50 lignes finalement...)

Je vous remercie encore très sincèrement pour votre temps qui doit être précieux, ainsi que pour l'utilité et la grande rapidité de votre réponse.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Je n'ai pas trouvé le bouton consolidé
1677232213424.png
😅😂🤣😂😅

pour les commentaires, dès que j'ai un instant je les complète. Actuellement il n'y a que les repères pour moi, mais c'est vrai, peu explicites.
 

adrien786

XLDnaute Nouveau
Re bonjour Sylvanu, je vous remercie pour vos commentaires sur la macro que vous m'avez fourni.
J'ai pris le temps de les lire précisément ce matin, et Il serait difficile de faire plus détaillé que ça.
Il ne me reste plus qu'à faire tourner la macro pas à pas afin de vraiment bien comprendre votre logique et la façon dont vous l'avez exprimée en VBA. Je vais y consacrer deux heures cette semaine afin d'essayer de comprendre précisément. Je reviendrai vers vous lorsque ce sera fait et n'hésiterai pas à poser des questions si des choses restent obscures après réflexion.

Concernant votre question sur stata, je ne vois pas de raison qu'il ne digère pas le fichier, de même que sas.
En cas de problème je copierai ce fichier en valeur dans un classeur Excel au format facilement importable.

En attendant, je vous remercie à nouveau très sincèrement et je vous souhaite une excellente journée ainsi qu'une bonne semaine.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa