Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1309 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment créer 120 classeurs?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment créer 120 classeurs?

n°2276196
MaybeEijOr​Not
but someone at least
Posté le 24-02-2016 à 19:45:51  profilanswer
 

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.
mood
Publicité
Posté le 24-02-2016 à 19:45:51  profilanswer
 

n°2276202
MaybeEijOr​Not
but someone at least
Posté le 24-02-2016 à 20:39:04  profilanswer
 

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.
n°2276239
rufo
Pas me confondre avec Lycos!
Posté le 25-02-2016 à 09:25:08  profilanswer
 

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
n°2276261
MaybeEijOr​Not
but someone at least
Posté le 25-02-2016 à 12:11:48  profilanswer
 

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
n°2276266
MaybeEijOr​Not
but someone at least
Posté le 25-02-2016 à 15:18:03  profilanswer
 

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.
n°2276276
MaybeEijOr​Not
but someone at least
Posté le 25-02-2016 à 18:50:47  profilanswer
 

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.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment créer 120 classeurs?

 

Sujets relatifs
Créer un index pour un libellé précis (Blogger)Comment créer un site web simple ?
Créer un site internetCréer uen veille technologique
Oracle11G : créer trigger remplissage de champEncrer un logiciel dans un logiciel que l'on créer
[VBA] Créer une fonction "Recherche", "Bug liste déroulante" ...Creer des redirection dynamique avec des sous domaines dynamique
Creer intranet pour universitéJe n'arrive pas à créer un graphique sous Excel
Plus de sujets relatifs à : Comment créer 120 classeurs?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR