Bonjour à tous,
je sollicite votre aide pour le problème suivant. Précisions, je suis parfaitement novice en VBA et malgré mes recherches je ne m'en sors pas. Peut être ai-je mis la barre un peu haut pour un débutant.
A ce jour une fois par mois j'effectue la copie des valeurs de cellules de fichiers multiples, pour les retranscrire dans un fichier récap sous forme de tableau. Toutes ces manipulations sont longues et fastidieuses et je cherche à automatiser le process.
J'ai un fichier récup.xlsm et j'ai crée un bouton exécution afin de lancer une macro qui me permettrait d'automatiser ce que je fais à la main.
Pb quoi mettre dans le code ?
Pré requis :
- tous mes fichiers "source" sont au format xls
- ils sont tous identiques sur le plan structurel, seul les valeurs de cellules peuvent changer.
- ces valeurs sont numériques ou texte. Si vide la valeur copiée doit être 0.
- ils sont tous rangés dans des dossier différents qui changent chaque mois
- bien qu'identique structurellement, les fichiers portent tous un nom différent qui changent également chaque mois
"Cahier des charges" :
Tous mes fichiers sources sont fermés
lorsque je clique sur le bouton "exécution" de mon fichier récup.xlsm je voudrais qu'une boite de dialogue me permette de sélectionner le répertoire cible ou sont copiés mes fichiers source (ils peuvent être directement à la racine ou dans des sous répertoire).
Le ou les répertoires cible contiennent comme source les fichiers monfic1.xls, monfic2.xls ...etc..etc (ces noms sont aléatoires, ce sont des noms personnels suivis d'une date)
Je voudrais récupérer dans mon fichier récup, à partir de la ligne 3 certaines valeurs des différents fichiers source.
En A3, il faut récupérer le nom du fichier source (exemple monfic1.xls), en B3 la valeur de G6 (de la source), en C3 la valeur de G8, D3 la valeur de W58, E3 la valeur de AH71, F3 la valeur de AI71, G3 la valeur de AJ71.
Une fois cette opération faite, la macro boucle, passe au fichier suivant et recommence la même opération.
Lorsque tous les fichiers du répertoire (et éventuellement des sous rep) ont été balayés, le programme s’arrête.
En résumé, si j'ai 50 fichiers dans mon dossier cible, je me retrouve avec un fichier récup.xlsm avec 50 lignes dont les valeurs ont étaient copiées depuis les sources.
Autre contrainte, je ne veux pas écraser les données déjà collectées.Si je relance l’exécution, il faudrait que la première ligne copiée soit la première ligne vide, soit dans mon exemple ci dessus, la ligne 53.
Si la contrainte de balayage et de traitement de sous répertoire est trop contraignante il est possible de copier tous les fichiers à traiter à la racine d'un même répertoire.
Pour résumé la macro doit exécuter :
- choix du répertoire cible par l'utilisateur
- ouverture du fichier 1
- copie des données sources (fichier 1) vers ligne du tableau récup
- fermeture du fichier 1
- ouverture du fichier 2
- copie des données sources vers ligne suivante du tableau récup
- fermeture du fichier 2
etc ... etc jusqu’à ce que tous les fichiers aient été traités.
Voila mon pb. Pensez vous que cela soit faisable et si oui pouvez vous m'aider à réaliser une telle macro,le but du jeu étant également que je comprenne le code.
Merci
Partager