VBA création d'un nouveau fichier

Résolu/Fermé
tieg12 Messages postés 4 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012 - 1 oct. 2012 à 11:34
tieg12 Messages postés 4 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012 - 1 oct. 2012 à 15:55
Bonjour,

Je m'arrache les cheveux depuis quelque temps sur un problème de VBA. Je cherche, à partir d'un fichier excel contenant un onglet "Impression", à créer un nouveau fichier comprenant cet onglet "Impression". Voici mon code:

idi = InputBox("Rentrez l'identifiant")
Workbooks.Add

ActiveWorkbook.SaveAs Filename:=idi & "_version compilée.xls"

Workbooks("Rebalancement.xls").Worksheets("Impression").Activate
Workbooks("Rebalancement.xls").Worksheets("Impression").Copy Before:=Workbooks(idi & "_version compilée.xls").Sheets(1)



Quand j'ouvre mon classeur et que je lance la macro, tout se passe bien. Seulement, quand je relance l'opération, un classeur vierge s'ouvre mais on m'envoie une erreur avec le nombre 400 (avant que l'onglet Impression ait pu etre copié dans le nouveau classeur vierge). De plus, lorsqu'un autre fichier excel est ouvert, le programme plante de la même façon. En fait, à chaque fois qu'un autre fichier excel est (ou a été) ouvert, le "ActiveWorkbook" ne reconnait pas le classeur qui vient d'être créé, faisant planter le programme... Auriez vous une solution à ce problème?

Merci beaucoup d'avance.
A voir également:

6 réponses

bonjour
en supposant que IDi soit une variable
Faire l'equivalent d'enregistrer sous.

Workbooks("Rebalancement.xls").Activate
monRepertoire = "c:\Document\ " & IDi & ".xls" '''' à adapter
ActiveWorkbook.SaveAs Filename:=monRepertoire, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ActiveWorkbook.Close

cordialement
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 oct. 2012 à 15:32
Re,
Pour répondre à ta question, si tu copie la feuille Impression sans destination tu crée un nouveau classeur.
Ce classeur est actif et tu peu le sauver avec le nom souhaiter.
Il n'y aura qu'une seule feuille mais si besoin tu peu en ajouter avec add.
Si ce n'est pas clair tu dis..
A+
1
tieg12 Messages postés 4 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012 1
1 oct. 2012 à 15:37
Merci G33,

Mais mon probleme subsiste. Quand un autre classeur Excel (qui n'a rien à voir)est ouvert, le ActiveWorkbook ne marche pas: il ne reconnait pas le fichier qui vient d'etre créé. Au lieu de mettre:

"Workbooks.Add

ActiveWorkbook.SaveAs Filename:=idi & "_version compilée.xls" "

il me faudrait une instruction qui permette de créer un nouveau fichier qui s'enregistre directement.
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 oct. 2012 à 13:34
Bonjour,
C'est quoi "identifiant" ?
Et je pense que tu aurais plus facile de copier la feuille Impession, quitte à ajouter des feuilles par la suite.
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tieg12 Messages postés 4 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012 1
1 oct. 2012 à 14:14
Bonjour lermite

Dans mon fichier, j'ai une base de données avec plusieurs entités. Je demande d'en entrer l'identifiant pour que le nouveau fichier créé puisse s enregistrer avec un nom comprenant l'identifiant en question.
Je n'ai pas compris ta proposition: copier la feuille Impression? Comment ça?

Ce que je veux, c'est qu'un nouveau fichier se crée et y mettre dedans l'onglet Impression du premier fichier.

Merci Beaucoup
0
tieg12 Messages postés 4 Date d'inscription vendredi 28 septembre 2012 Statut Membre Dernière intervention 1 octobre 2012 1
1 oct. 2012 à 15:55
Re lermite,

Je n'avais pas vu ton deuxieme com. C'est tout a fait clair, et après test, ça marche parfaitement!

Merci bcp, bonne journée.
0