Comment créer 120 classeurs?

Comment créer 120 classeurs? - VB/VBA/VBS - Programmation

Marsh Posté le 24-02-2016 à 19:45:51    

Bonjour,
 
J'ai actuellement un dossier avec 120x5 fichiers texte qui ont pour nom "blablabla_X_Y.txt" où X va de 1 à 120 et Y de 1 à 5.
Je dois créer 120 classeurs qui importent chacun 5 fichiers texte.
 
Pour l'instant j'ai un classeur modèle qui importe et traite les 5 fichiers associés à l'aide d'une macro. J'arrive-donc à boucler sans problème sur le Y avec un X fixe. Maintenant je veux boucler sur le X mais je ne vois pas trop comment.
 
En effet, si j'ouvre mon classeur actuel et lance la macro je modifie mon fichier actuel, bien que je peux l'enregistrer sous un nom différent ça n'empêche pas qu'il faille que je le ferme et le re-ouvre pour qu'il soit de nouveau vierge. Si je fais ça je perds donc ma valeur X à laquelle je suis rendu.
Faut-il que j'utilise alors un classeur "maître" qui appelle mon modèle et exécute la macro, enregistre sous un autre nom, le ferme, et ouvre à nouveau le modèle, etc. ?
Puis-je alors augmenter la portée de ma variable X du classeur "maître" jusqu'au classeur modèle? En effet les fichiers importés ont besoin de connaître la valeur de la variable X puisqu'elle se trouve dans leur nom.
 
De plus est-il possible de faire tourner tout ça en tâche de fond afin d'alléger l'exécution?
 
 
(dans les solutions débiles j'ai la technique du double-classeur modèle :  je pars d'un classeur modèle, il lance la macro, enregistre sous un autre nom, supprime tout son contenu et copie/colle les feuilles nécessaires depuis le deuxième classeur modèle et recommence mais j'ai comme l'impression que la numérotation de mes graphs va déconner en ne se réinitialisant pas à 1 après suppression de tout le contenu)
 
 
 
Merci pour vos idées.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 24-02-2016 à 19:45:51   

Reply

Marsh Posté le 24-02-2016 à 20:39:04    

Sinon je lance une macro qui crée 120 classeurs modèles "blablabla_X.xlsm" puis après dans chaque classeur la macro extrait le X du nom du classeur. :o  
 
Qu'est-ce qui serait le plus propre et/ou efficace?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 25-02-2016 à 09:25:08    

Ta macro doit être lancée depuis un autre classeur Excel qui va piloter la création des 120 classeurs.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-02-2016 à 12:11:48    

Oui toutes mes solutions en revenait à cela. Au final j'ai créé mes classeurs à partir du modèle en les renommant "blablabla_X.xlsm" et chaque classeur contenant une macro à lancement automatique qui extrait la valeur de X de son propre nom puis s'enregistre en .xlsx.


Message édité par MaybeEijOrNot le 25-02-2016 à 12:12:50
Reply

Marsh Posté le 25-02-2016 à 15:18:03    

Je reviens vers vous pour cette fois-ci me faire un gros récap de tous mes fichiers dans un autre classeur. Ce qui implique des références externes sur des classeurs fermés (je ne vais pas garder 120 classeurs ouverts) et malheureusement pour éviter de me taper aussi 120 chemins d'accès j'essaye d'utiliser mon système d'itération dans le nom des fichiers.

 

J'ai donc essayé :

 
Code :
  1. =INDIRECT("'\\SERVEUR\chemin\[Blablabla_" &B4&".xlsx]récap + graphs'!F$9" )
 

où la cellule B4 me renvoie ma valeur d'itération.

 

Je me suis même fait une fonction perso :

 
Code :
  1. Function liaison(path As Range, num As Range, cellule As String) As Range
  2.     Set liaison = Range("'" & path & "[Blablabla_" & num & ".xlsx]récap + graphs'!" & cellule)
  3. End Function
 

Mais rien à faire si mon fichier est ouvert ça fonctionne sinon non.

 

Une idée?


Message édité par MaybeEijOrNot le 25-02-2016 à 15:18:18

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 25-02-2016 à 18:50:47    

J'ai changé d'orientation, c'était de toute manière débile de créer une liaison vers 120 fichiers différents.
 
J'ai juste fait en sorte que lors de la création de mes 120 fichiers une macro copie/colle les résultats qui m'intéressent de mes fichiers vers mon fichier qui me sert de gros récap.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed