Copier feuille vers un autre classeur

Résolu/Fermé
lanxade
Messages postés
26
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
10 mars 2022
- 20 juil. 2009 à 12:34
Le Pingou
Messages postés
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
- 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

7 réponses

Le Pingou
Messages postés
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
1 299
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
26
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
10 mars 2022

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
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
1 299
22 juil. 2009 à 17:59
Bonjour,
Mettez donc une copie de votre code, se sera plus simple.
1
Le Pingou
Messages postés
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
1 299
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
26
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
10 mars 2022

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
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
1 299
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
26
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
10 mars 2022

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
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
1 299
27 juil. 2009 à 17:17
Bonjour,
Ceci est faux [Workbooks("& Nomf &.xls ") ] doit être [Workbooks(Nomf &".xls ")
0
Le Pingou
Messages postés
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
1 299
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
26
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
10 mars 2022

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
11103
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 août 2022
1 299
28 juil. 2009 à 14:08
Bonjour,
Merci, de rien.
Et que pensez-vous de mon âge !
0