enregistrer dans un autre classeur excel

G

geff

Guest
Bonjour à tous !

Grâce à des macros, j'ai pu remplir un classeur avec plusieurs feuilles. Pour programmer l'enregistrement de ce classeur, pas de problème...

A présent, je souhaiterais exporter la première feuille et seulement la première vers un nouveau fichier excel. Comment faire ?

Merci de votre aide
 
S

SYL'S

Guest
Salut geff,

tu sélectionnes la feuille, tu fais immédiatement clique droit souris (il faut que le curseur soit sur la feuille) ensuite tu fais déplacer/copier, tu coches "créer une copie"... dans la même fenêtre , tu vas "dans le classeur" et sélectionne "nouveau classeur".... hé voilà.

il y a peut être plus simple ???

Bye
 
B

BS

Guest
Bonjour Geff, Bonjour SYL'S,

Geff tu ne précises pas si tu veux tout ça en code ... Si ce n'est pas le cas, la solution de Syl's est tout à fait correcte , par contre si tu veux le code , il faut passer par un copier / coller de la première feuille :

ActiveWorkbook.Sheets("1ere Feuille").Copy

Si tu veux l'enregistrer sous un nom précis tu completes juste après en mettant :
ActiveWorkbook.SaveAs Filename:="C:\lechemin\lenom.xls "

Voilà comme ça tu auras les 2 solutions.

Tiens nous au courant.

BS
 
G

geff

Guest
salut bs !

effectivement, je veux tout en code afin de ne pas m'embarrasser d'un traitement manuel.

avec ta solution, j'enregistre le classeur entier et non pas la seule 1ère feuille.

de plus, dans le programme source, j'ai des macros et j'aimerais qu'elles disparaissent dans le classeur où seront copiées les données...

peux-tu m'éclairer sur ces 2 points ?

merci
 
M

Moa

Guest
Salut geff et les autres !

Tout simplement :

Tu lances l'enregistreur de macros :

Puis tu fais tout ce chemin :

Sélection avec la souris de tout ce que tu veux de ta feuille 1

Copier

Nouveau Classeur

Collage spécial / Valeurs

Enregistrer sous

Ton nom de classeur

Arrêter la macro.

Puis tu ouvres ta macro et tu la modifies, pour ajouter :

Application.ScreenUpdating = False au début de ta macro
Application.ScreenUpdating = True à la fin

Puis si tu veux donner un autre nom au nouveau classeur, modifier la partie
Active Workbook save

etc....

et voilà tout simplement..

@ +

Moa
 
M

Moa

Guest
Re-Geff !

Regarde la macro qui suit :

Sub sauve()
'
' sauve Macro
' Macro enregistrée le 03/07/2003 par Robin
Range("B10").Select
Selection.Copy
Workbooks.Add
Range("A3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Robin\Mes documents\Sauve2.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWindow.Close
End Sub

Je viens de la faire avec l'enregistreur de macros, tout simplement.

Il te reste à changer :

-Tes plages de cellules à recopier.

-Le nom du classeur

-Le chemin de rangement, de ce nouveau classeur

-Application.ScreenUpdating=False en début et idem = True en fin, de macro

Et si tu voulais que le nouveau nom de classeur soit automatiquement généré, je te rajoute une partie de macro :

'Sauvegarde du classeur sous le nom écrit dans la cellule B2 de la feuille 2
Sheets(2).Select
ActiveWorkbook.SaveAs Range("B2").Value

à mettre à la place de :

ActiveWorkbook.SaveAs Filename

Ceci te permet, de mettre un nom identique de classeur en changeant la fin.

Tu peux mettre un compteur quelconque dans une cellule cachée, puis dans une autre cellule, le nom de ton classeur, puis enfin dans une troisième tu concatène le nom + le compteur.

De cette façon tout est entièrement caché à l'utilisateur.

Pour répondre à ta question sur la fonction "Application.ScreenUpdating", Non cette fonction ne minimise pas le classeur.

Screen = Ecran, Updating = Mise à jour ou rafraîchissement, comme tu veux.

En fait cette fonction fige l'écran, tout simplement, mais n'empêche pas les macros ou fonctions d'avoir lieu.

@ +

Moa
 
G

geff

Guest
1000 mercis pour ton programme et tes explications !
Difficile d'être plus clair !

Poour conclure ce sujet, je voudrais savoir si tu pouvais répondre à 1 dernière question :

Comment faire en sorte que lors de l'enregistrement la fenêtre de confirmation n'apparaisse pas et valide l'enregistrement
J'ai essayé avec
application.displayalerts=false mais l'enregistrement n'est pas effectué

Encore merci
 
M

Moa

Guest
Si si cela doit fonctionner, tu l'as peut-être,mal placé.

"Application.DisplayAlerts=False", doit bien évidement être avant de demander l'enregistrement.

Il est très important de remettre cette fonction à "True", juste avant la fermeture du classeur.

Cette commande, ne fait qu'interdire l'ffichage des messages d'alerte, mais en aucun cas elle n'influe sur l'enregistrement du fichier, suf si elle est mal placée dans la macro.

Le mieux est de la placer en début de macro.

Mais je vais quand-même vérifier que je n'ai pas d'erreur quelquepart.

@ +

Moa
 
M

Moa

Guest
Re !

Voilà une macro que je viens de faire et tester plus de 5 fois, et elle marche bien :

Sub Sauve()
' Sauve Macro
' Macro enregistrée le 03/07/2003 par Robin
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Range("A1:D6").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Range("D1").Value
ActiveWindow.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Ceci dit, si tu changes ton nom de classeur à chaque fois, tu n'auras pas besoin d'enlever les messages d'alertes.

Dans ce cas, j'ai mis, le nouveau nom de classeur dans la cellule D1, et pour simplifier la macro, je le recopie avec le reste dans le nouveau classeur.

Comme tu auras remarqué, je n'ai pas signifié de chemin de rangement du nouveau classeur.

Il faut savoir que dans ce cas, par défaut, Excel le range automatiquement dans : C:\Documents and Settings\Robin\Mes documents\


@ +

Moa
 

Discussions similaires

Statistiques des forums

Discussions
314 659
Messages
2 111 624
Membres
111 237
dernier inscrit
vinthi