|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : novembre 2005 Messages : 203 ![]() |
Bonjour,
Je suis en train d'écrire une macro dans une classeur Excel outils appelé "outils.xls". Il faut savoir aussi que je suis une bille en Excel ![]() Cette macro est codée dans l'évènement "Workbook_Open()". Cette feuille sera placée dans le répertoire où se trouvera un classeur contenant plusieurs onglets contenant des données indépendantes. Le but de cette macro est de sauver les données de chaque feuille au format texte. En double-cliquant sur la feuille Excel "outils.xls", ça créera un fichier texte par feuille. Voilà ce que j'ai fait : Code :
Ca créé bien des fichiers texte, mais vides ![]() Et en plus, ça ouvre autant de classeurs que de feuille, contenant les données ? Quelque'un peut-il m'aider ? Merci. |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 869 ![]() |
Le problème est que ActiveWorkbook est ton classeur "outils.xls". Je corrige ton code et t'envoie ça.
|
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 869 ![]() |
Voilà, essaie voir si ça marche :
Code :
|
||
|
|
01
|
|
|
#4 | ||
|
Membre confirmé
![]() Inscription : juillet 2006 Messages : 345 ![]() |
bonjour,
Code :
Bonne journée. |
||
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2008 Messages : 5 848 ![]() |
Pourquoi créer une nouvelle instance Excel?
Aussi, le mieux de travailler avec la variable Wbk Code :
__________________
Cordialement. |
||
|
|
60
|
|
|
#6 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 869 ![]() |
Oui, d'accord avec Mercatog, tu peux utiliser l'instance courante d'Excel sans problème.
Mais du coup, il vaut peut-être mieux utiliser wbk au lieu de activeWorkbook et ne pas le fermer dans la boucle, non ? Un Select plutôt qu'un copie suffirait également. Et pour faire encore plus simple, comme dans mon code plus haut, il me semble qu'on peut utiliser saveas directement sur l'objet worksheet |
|
|
01
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2008 Messages : 5 848 ![]() |
Non
Quand on fait un nouveau classeur se crée et devient le classeur active qu'on sauvegarde au format text et on ferme Le code fait ceci à l'ouverture d'un classeur (où est écrit le code), un 2ème classeur est ouvert (datas.xls), instancié dans la variable Wbk. On parcourt toutes les feuilles de Wbk On copie chaque feuille Cette ligne nous crée un 3ème classeur qui devient actif qu'on enregistre au format texte et on ferme et repart vers la feuille suivante. J'ai des redondances dans l'explication mais essaie de faire le pas à pas (F8) tu sauras.
__________________
Cordialement. |
|
|
40
|
|
|
#8 | |||
|
Membre du Club
![]() Inscription : novembre 2005 Messages : 203 ![]() |
Citation:
Voici le code final : Code :
|
|||
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : novembre 2005 Messages : 203 ![]() |
Bonjour,
Le poste est bien résolu mais j'ai encore une toute dernière chose à vous demander. Je voudrais que le classeur "outils.xsl" se ferme après traitement. J'ai donc ajouté ceci Code :
Y a-t-il un moyen pour que Excel se ferme aussi? Merci. |
||
|
|
00
|
|
|
#10 | ||
|
Membre du Club
![]() Inscription : novembre 2005 Messages : 203 ![]() |
Je crois avoir trouvé
Il ne faut pas fermer le classeur "outils" car sinon, la macro ne tourne plus. Je ferme donc toutr simplement Excel en faisant comme ceci à la fin de la fonction: Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com