Copier coller des feuilles d'un classeur à un autre classeur

Bonjour tous le monde,

Salut j'ai regardé un peu dans le forum mais les solutions que j'ai trouvé ne fonctionne pas . Voici ma problématique :

Je veux copier deux feuilles sur un fichier X vers Y sans ouvrir le fichier X.

Les feuilles à copier se trouvent dans le fichier X, la première feuille à copier " plan de transport" puis "planning général".

Voici le code que j'ai trouvé sur internet et j'essaie de l'appliquer sur mon fichier mais ça ne marche pas.

Sub ESSAI()
'
    Dim wk As Workbook 'classeur destinataire
    Set wk = Application.Workbooks.Open("c:\Users\souaab\Desktopstock\Nouveau dossier\stock pre-exp sans prix 2013.xlsm")

    ThisWorkbook.Sheets("plan de transport").Cells.Copy wk.Sheets("plan de transport").Range("A1")
    ThisWorkbook.Sheets("planning general").Cells.Copy wk.Sheets("plan de transport").Range("A1")

   wk.Close True
End Sub

Bien cordialement

Soukaina

Bonjour

il est normal que cela ne fonctionne pas car thisworkbook renvoi au fichier qui contient les macros et donc a priori le fichier de destination et non pas au fichier source...

faire un essai avec Activeworkbook ou tout simplement wk.sheets(...)

Edit : Erratum j'ai compris a l'envers.... cela devrait fonctionner seule mon observation ci dessous reste valable ....

et au passage tu copies deux fois sur la meme feuille donc a priori les données issues de la première copie seront effacées...

et il faudrait peut-etre effacer les données existentes sur la feuille de destination au préalable si elles n'occupent pas exactement les mêmes cellules

fred

Bonjour,

Je ne sais pas comment traduire ça en code Vba je suis débutante .

Normalement je copie la feuille et je l'intègre dans l'autre fichier sans supprimer ou effacer les autres onglets existants.

je veux qu'il ajoute l'onglet plan de transport et planning general intégralement dans le fichier PF CDE sans ouvrir le fichier stock pre exp sans prix 2013 .

Bien cordialement

soukaina

si tu veux bien on va repartir de zéro

tu as deux fichiers

stock pre exp sans prix 2013

PF CDE

tu veux copier l'onglet plan de transport et planning general qui se trouve dans stock pre exp sans prix 2013 vers PF CDE

c'est OK ?

maintenant est-ce que les onglets plan de transport et planning général existent déjà dans le fichier PF CDE ??

copier un onglet sans ouvrir le fichier ce n'est pas possible a ma connaissance mais une macro peut le faire pour toi sans que cela soit visible...

fred

Bonjour,

tu veux copier l'onglet plan de transport et planning general qui se trouve dans stock pre exp sans prix 2013 vers PF CDE

c'est OK ? oui c'est exactement ce que je veux.

maintenant est-ce que les onglets plan de transport et planning général existent déjà dans le fichier PF CDE ?

Non c'est pour cela je veux copier les deux onglets dans le fichier PF CDE.

Je cherche une macro qui peut faire se copier coller sans ouvrir le fichier stock pre exp prix et enregistre le fichier PF CDE.

Si ce n'est pas possible, je peux nommer deux onglets plan de transport et planning general dans le fichier PF CDE et puis je copie le contenue des onglets afin de mettre à jour les données du jour.

Bien cordialement

soukaina

Bonjour

le probleme dans ton raisonnement est que la première fois que tu vas lancer la macro les deux onglets n'existent pas dans le fichier de destination mais si tu reelance une nouvelle fois la macro les onglets existent déjà. ... puisque tu veux mettre a jour les données. ....

Encore une question les deux onglets a copier dans le fichier de destination doivent se positionner ou ? Au debut? a la fin??

Fred

Bonjour,

J'ai pense de faire une liaison entre les deux fichiers ou bien une autre macro qui efface les données existantes et remet les données à jour.

Le mieux est de les positionner vers la fin du fichier destinataire ( je ne sais pas si on peut les masquer après! parce que les utilisateurs devront voir que le Tableau croisé dynamique )

Cdlt

SOUKAINA

ahhhhhh tu ne dis pas tout...

dans ce cas il faut que les onglets existent dans le fichiers de destination et surtout avoir une plage de données source des TCD dynamiques....

je regarde pour te faire cela

fred

voici donc une proposition a mettre dans ton fichier PF CDE

fred

Option Explicit
'http://forum.excel-pratique.com/excel/copier-coller-des-feuilles-d-un-classeur-a-un-autre-classeur-t66227.html
'Fred

Sub Copie()
Dim wsD1, wsD2 As Worksheet 'onglets destinataire
'instancier les deux feuilles de travail
Set wsD1 = ThisWorkbook.Sheets("plan de transport")
Set wsD2 = ThisWorkbook.Sheets("planning general")
'figeage de l'affichage
Application.ScreenUpdating = False
'effacement de toutes les données présentes sur les feuilles de destination
wsD1.Cells.ClearContents
wsD2.Cells.ClearContents
'ouveture du fichier source
Application.Workbooks.Open Filename:="c:\Users\souaab\Desktopstock\Nouveau dossier\stock pre-exp sans prix 2013.xlsm"
'copie du fichier source vers le fichier de destination
ActiveWorkbook.Sheets("plan de transport").Cells.Copy wsD1.[A1]
ActiveWorkbook.Sheets("planning general").Cells.Copy wsD2.[A1]
'fermeture du fichier source sans enregistrement
ActiveWorkbook.Close False
'cache les onglets si ils étaient visibles
wsD1.Visible = False
wsD2.Visible = False

End Sub

Merci Fred ça marche bien j'aimerais bien qu'il m'enregistre le fichier PF CDE vers la fin .

Rajoute a la fin

activeworkbook.save

fred

Merci Fred.

Si la solution convient

Merci

Fred

Bonjour Fred,

j'ai besoin de créer un fichier depuis mon tableau croisé dynamique c'est à dire : sur mon fichier PF CDE j'ai deux onglets Préparation du jour & Prévision transport.

Je veux copier l'onglet "Préparation du jour" en créant un fichier et le nommer "Miramas"+ date du jour.

Je veux copier l'onglet "Prévision transport" en créant un fichier et le nommer "Miramas" + date du jour.

J'ai essayé ce code ci dessous mais ça n'a pas marché.

Sub Macro1()
Dim fichier As String, chemin As String
chemin = ThisWorkbook.Path
With ThisWorkbook
    Sheets(Array("Préparation du jour", "Prévision transport")).Copy
    fichier = ThisWorkbook.Name & "Miramas" & Format(Date, "yy-mm-dd")
End With
With ActiveWorkbook
    .SaveAs chemin & "C:\Users\Soussou\Desktop\test" & fichier
    .Close
End With
End Sub

Bien cordialement

Soukaina

bonjour

deux choses

1e) tu ne peux pas faire le chemin du fichier actuel + un chemin en plus :

 chemin & "C:\Users\Soussou\Desktop\test"

c'est soit l'un soit l'autre....

2e) si c'est la deuxième partie qui doit servir de lieu d’enregistrement il manque peut être un "\" dans le chemin d'enregistrement écrit en dire à la fin après test

 .SaveAs "C:\Users\Soussou\Desktop\test\" & fichier

fred

"chemin & "C:\Users\Soussou\Desktop\test" " c'est le chemin du lieu d'enregistrement du fichier créer depuis l'onglet.

Cdlt


Quand je lance ma macro cette phrase se met en jaune " Sheets(Array("Préparation du jour", "Prévision transport")).Copy" erreur 9.

re

Difficile de dire encore une fois sans avoir de fichier (problème d'orthographe dans les noms ? ....)

mais encore bcp trop de choses qui ne vont pas pour moi dans tes quelques lignes de codes

supposons ton fichier contenant la macro s'appelle

toto.xlsm

et se trouve sur le bureau "C:\Users\Soussou\Desktop"

tu essayes de concatener

chemin & "C:\Users\Soussou\Desktop\test"

hors

chemin = ThisWorkbook.Path

donc tu essaye d'ecrire dans un chemin :

C:\Users\Soussou\DesktopC:\Users\Soussou\Desktop\test & nomdufichier

donc c'est impossible....

le nouveau nom que tu essaye de faire pour le nouvel enregistrement :

fichier = ThisWorkbook.Name & "Miramas" & Format(Date, "yy-mm-dd")

donc le nom de ton fichier sera si je reprends mon exemple en cours

toto.xlsmmiramas15-07-13 ce qui est impossible aussi

je te propose le code suivant en espérant que cela soit ce que tu désires

Sub Macro1()
Dim fichier As String
    fichier = "Miramas" & Format(Date, "yy-mm-dd")
    Sheets(Array("Préparation du jour", "Prévision transport")).Copy
With ActiveWorkbook
    .SaveAs "C:\Users\Soussou\Desktop\test\" & fichier
    .Close
End With
End Sub

fred

Bonjour Fred,

j'ai essayé le code ça marche très bien. je vous remercie vous m'avez aidé de gagner un énormément du temps perdu.

La maintenant il me faut un code à l'ouverture du fichier il lance automatiquement le calcul des feuilles et actualise le tableau croisé dynamique.

Bien cordialement

bonjour

il faudrait un fichier exemple pour cela... avec des données bidons

fred

Bonjour Fred,

J'ai pas pu envoyé le fichier parce que je travaille encore sur certaines formules.

J'ai cette formule qu'elle marche très bien sauf que j'ai des N/A, est ce qu'il y a un moyen de simplifier cette formule et éviter les N/A.

=SI(OU(CJ4>=(SI(ESTNA(RECHERCHEV(L4;'Planning general'!E:Q;11;FAUX)=FAUX);1;RECHERCHEV(L4;'Planning general'!E:Q;11;FAUX)));(SI(ESTNA(RECHERCHEV(L4;'Planning general'!E:Q;11;FAUX)=FAUX);1;RECHERCHEV(L4;'Planning general'!E:Q;11;FAUX)))=1);"Oui";"Non")

Pour expliquer ma formule je fais une recherche V en fonction du thème et le numéro de la semaine sur une feuille.

CJ4 numéro de la semaine

L4 le thème

Cdlt

Rechercher des sujets similaires à "copier coller feuilles classeur"