Copier feuille vers un autre classeur

Résolu/Fermé
lanxade Messages postés 29 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 8 avril 2023 - 20 juil. 2009 à 12:34
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 - 28 juil. 2009 à 14:08
Bonjour,
Bonjour,

J'ai crée un classeur sourceClasseurSource) dans lequel j'ai crée un feuille FeuilSource) et un UserForm UserFormSource)

Cette feuille source contient une plage de cellules ("A1 à G50") dimentionnées de façon à pouvoir être imprimée sur page A4.
Ce UserFormSource a crée, (par variables), un nouveau classeur cible : Nommé dans le type (" & ClasseurCible & ") et une page nommée dans ce type: ("(JJ) & (MM)").

Je désire copier la plage de la feuille source dans la même plage dans la feuille cible et aux mêmes dimentions de cellules, car cette feuille cible sera imprimée.

Les différents codes de copier/coller que j'ai testés me revoient les erreurs aussi bien pour les fichiers que pour les feuilles :
-N'appartient pas à la selection, ou alors Classeur dèjà ouvert !

Vous remerciant d'avance de votre Attention pourrais-je obtenir de l'aide
Encore Merci
A voir également:

7 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
21 juil. 2009 à 23:34
Bonjour,
Ligne à insérer dans votre code à l'endroit adéquat:
Sheets("Bons").Cells.Copy Destination:=Worksheets("Command_toto").Sheets("nom de la feuille Cible").Range("A1")
1
lanxade Messages postés 29 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 8 avril 2023
22 juil. 2009 à 16:52
Merci Pingou cela a un peu conforté mes bases, mais en fait :

> Pour trouver ou créer le Book cible , j'ai formulé

Fournisseur = Sheets("Bon").Range("a8")
Nomf = "Command_" & (Fournisseur) & ""

>Pour créer la feuille j'ai codé :

JM = Left(Date, 5) ' --- Donc : 22/07
JJ = Left(JM, 2) ' --- Ce qui donne le jour
MM = Right(JM, 2) ' --- Ce qui donne le mois
If MM = 1 Then MO = "A" '---- J'ai ainsi le mois en lettre ce qui me gagne de la place
If MM = 2 Then MO = "B"
If MM = 3 Then MO = "C"
If MM = 4 Then MO = "D"
If MM = 5 Then MO = "E"
If MM = 6 Then MO = "F"
If MM = 7 Then MO = "G"
If MM = 8 Then MO = "H"
If MM = 9 Then MO = "I"
If MM = 10 Then MO = "J"
If MM = 11 Then MO = "K"
If MM = 12 Then MO = "L"
'--- Ajoute la Feuille
Sheets.Add After:=Sheets(Sheets.Count)
'--- Nomme la Feuille
ActiveSheet.Name = (JJ) & (MO)

Je retrouve bien dans la liste documents Excel.xls "Command_toto" Tel qu'il a été crée.
Lors de l'arret d'éxécution aprés nomme la feuille, j'ai bien l'onglet ouvert nommé aujourd'hui "22G"


Et enfin pour Copier/Coller , j'ai affiché :
Sheets("Bons").Cells.Copy Destination:=Worksheets(" & Nomf & "").Sheets("(JJ) & (JJ) ").Range("A1")
Cela ne passe pas avec le message "Erreur de syntaxe"

Il me semble ne pas ecrire le bon code de la Sheets"22G"

Je ne trouve pas la bonne fornulation de la feuille, car dans de code de création du fichier ça marche
Pardon pour mon ignorance
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
22 juil. 2009 à 17:59
Bonjour,
Mettez donc une copie de votre code, se sera plus simple.
1
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
22 juil. 2009 à 22:12
Bonjour,
Les 3 lignes à insérer dans votre code à l'endroit adéquat:
nomfe = (JJ) & (MO)
Set classeurcible = Workbooks("Command_toto.xls")
Sheets("Bons").Cells.Copy Destination:=classeurcible.Sheets(nomfe).Range("A1")
1
lanxade Messages postés 29 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 8 avril 2023
27 juil. 2009 à 11:21
Bonjour Pingou,

Merci, mais désolé j'ai toujours à
Set classeurcible = Workbooks("& Nomf &.xls ") :"Erreur 9 ; n'appartient pas à la selection !
EN remplaçant par "Command_toto" ou sa variant, avec xls ou pas j'ai toujours la même erreur.

J'en suis désolé.

ENcore merci
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
20 juil. 2009 à 16:56
Bonjour,
Si vos codes sont à l'intérieur d'une macro, pouvez-vous la poster ?
0
lanxade Messages postés 29 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 8 avril 2023
21 juil. 2009 à 13:46
Bonjour Pingou,
Merci de l'attention portée à mon égard,

En fait voici les faits : Il sagit d'un de créer dans un cadre GMAO, un systeme d'écriture de bon de Cdes:
N.B : Soient :
Un Classeur source qui fait office de créateur du projet. (classeur "Gmao_Commandes") avec une feuille "Bon" qui servira de modèle
Un Classeur Cible, crée ou à créer qui servira à classer les commandes passées chez un fournisseur (Par Ex. "Command_toto")
Un Classeur "ListeFournisseurs" qui servira à remplir les cellules contenant les données du fournisseur choisi.
Un Classeur "ListeArticles" qui servira à remplir les cellules des articles à commander.

A partie de cela :
1°)- J'ai crée un classeur "Gmao_Commandes".
* Dans ce classeur, j'ai ajouté une feuille (modèle) que j'ai nommé "Bon". Cette feuille possède des cellules blanches et grisées.
* Les cellules grisées ont préremplies (lors de leur création) et la feuille enregistrée. Afin de pouvoir imprimer sans encombres, j'ai manuellement dimentionné les cellules afin que celles-ci tiennent dans une feuille A4.

2°)- Dans ce classeur "Gmao_Commandes", j'ai inséré un "UserForm1" dans lequel, par TextBox, List Box et CommandButton je peux rechercher Le nom du fournisseur, tel, fax .... Rechercher mes articles, references, Prix ..... Faire les calculs de la commande et copier le tout sur la feuille "Bons" dans les cellules blanches prévues.

3°)- Je referme les classeurs "ListeFournisseurs", " ListeArticles" qui ont servi jusque là et dont je n'ai plus besoin

4°)- A l'aide du UserForm1, toujours lui, Je recherche si des commandes ont déjà été passées chez ce fournisseur "toto", sinon il me crée un nouveau classeur sous la form "Command_Toto" autrement dit sous la forme " & NomFournisseur & " .("NOm fournisseur") étant la Variant de recherche fournisseur.

5°)- Dans ce classeur Cible "Command_toto", j'insère une nouvelle feuille au jour et mois de la date du jour: Sheet "(mm) & (jj)" .

6°)- A ce stade, j'ai bien empli mon bon de commande -Source- dans la feuille "Bon" du classeur "Gmao_Commandes" et la feuille de destination du classeur "Command_toto" avec sa feuille "(mm) & (jj) créee et vierge (Le nom de la feuille est correctement inscrite sur l'onglet).

7°)- Je voudrais à ce stade à l'aide d'un commandButton7 du UserFome1, Copier/Coller la feuille du bon pré-rempli "Bons" "dans la feuille Cible "(mm) & (jj) " du classeur Cible " & NomFournisseur & " (autrement dit :"Command_toto").
Cela avec les couleurs grisées les cellules et au format d'origine afin de pouvoir en final
Puis :
* Fermer <sans enregistrer> le bon de commande source (Pour cela je n'aurai pas de problème)
* Imprimer en A4 le bon Cible " (mm) & (jj) "Puis enregistrer et fermer le Classeur Cible " & NomFournisseur & ".(Pour cela aussi pas de problème non plus).

> Ce qui me demande de l'aide c'est de ne pas savoir comment réaliser le Copier/Coller étant donné qu'à mon stade de trés débutant, je ne sais pas ce qui est activate ou pas, open ou non.

En fait ce qui me manque, c'est le code qui me permettrait de réaliser Ce copier / Coller en tenant compte de l'état actuel où sont ces deux fichiers.

Pardon, J'ai l'impréssion en voulant être précis d'avoir écrit du Proust.

Cordialement.
0

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

Posez votre question
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
27 juil. 2009 à 17:17
Bonjour,
Ceci est faux [Workbooks("& Nomf &.xls ") ] doit être [Workbooks(Nomf &".xls ")
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
27 juil. 2009 à 23:57
Bonsoir lanxade,
Le code que je vous ai proposé fonctionne parfaitement.
Il va de soit que le classeur ["Command_toto"] est ouvert sur votre PC puisque vous travaillez avec.
Si se n'est pas le cas vous avez erreur 9.
0
lanxade Messages postés 29 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 8 avril 2023
28 juil. 2009 à 10:53
Bonjour Le Pingou

Merci pour tout , Il suffisait d'être un peu moins étourdit.
J'ai beaucoup appris par vous, et je vous en suis trés reconnaissant.
à mon age on est un peu long à comprendre, et VBA est tout neuf pour moi.

Bravo pour votre patience et votre dévouement.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
28 juil. 2009 à 14:08
Bonjour,
Merci, de rien.
Et que pensez-vous de mon âge !
0