Copie feuille dans un autre classeur
Résolu
diabolo162
Messages postés
1002
Date d'inscription
Statut
Membre
Dernière intervention
-
diabolo162 Messages postés 1002 Date d'inscription Statut Membre Dernière intervention -
diabolo162 Messages postés 1002 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je sollicite votre aide sur une macro que j'ai composé...
Elle permet de choisir un classeur ("MenuNormalPrintemps")et de choisir aussi une feuille("feuil1"). Elle copie la feuille sélectionner et la colle dans mon dossier de destination ("Menu")sur la feuille ("Menu Normal").
ps :J'utilise cette méthode car le classeur et les feuilles changent souvent de nom.
La macro s'exécute bien mais ne colle pas le texte sur la feuille("Menu Normal")
Il y a t'il une solution pour corriger le probleme?
Merci de votre aide
Je poste mes deux fichiers :https://www.cjoint.com/?BCfqfM2oiQt
Je sollicite votre aide sur une macro que j'ai composé...
Elle permet de choisir un classeur ("MenuNormalPrintemps")et de choisir aussi une feuille("feuil1"). Elle copie la feuille sélectionner et la colle dans mon dossier de destination ("Menu")sur la feuille ("Menu Normal").
ps :J'utilise cette méthode car le classeur et les feuilles changent souvent de nom.
La macro s'exécute bien mais ne colle pas le texte sur la feuille("Menu Normal")
Il y a t'il une solution pour corriger le probleme?
Merci de votre aide
Je poste mes deux fichiers :https://www.cjoint.com/?BCfqfM2oiQt
A voir également:
- Copie feuille dans un autre classeur
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Excel reporter des données sur une autre feuille avec conditions - Forum Excel
25 réponses
je m'aperçois que ma macro ne copie pas les liaisons....
peut etre 2 possibilités :
- comment utiliser la fonction "ActiveCell.FormulaR1C1 " mais je ne sais pas la mettre en place et de plus il me demande le chemin d'acces alors que mon classeur et la feuille peuvent changer de nom
ou
-transformer la liaison en texte....avec l'enregistreur de macro ca ne fonctionne pas
ou
peut etre 2 possibilités :
- comment utiliser la fonction "ActiveCell.FormulaR1C1 " mais je ne sais pas la mettre en place et de plus il me demande le chemin d'acces alors que mon classeur et la feuille peuvent changer de nom
ou
-transformer la liaison en texte....avec l'enregistreur de macro ca ne fonctionne pas
ou
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Pour ne pas tout refaire votre code, je vous propose de passer par le presse-papier pour faire vos copier/coller.
Code pour Menu.xls bouton "Nouveau menu"
Private Sub CommandButton3_Click()
Dim Classeur
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
Workbooks.Open Filename:=Classeur
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
Application.DisplayAlerts = False
End Sub
Code pour Menu Normal Printemps.xls Bouton UserForm "Valider"
Private Sub CommandButton1_Click()
Sheets(ComboBox1.Value).Select
Sheets(ComboBox1.Value).Range("A1:C100").Select
'copy selection dans presse-papier
Selection.Copy
Unload Me
End Sub
Bonne suite
Pour ne pas tout refaire votre code, je vous propose de passer par le presse-papier pour faire vos copier/coller.
Code pour Menu.xls bouton "Nouveau menu"
Private Sub CommandButton3_Click()
Dim Classeur
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
Workbooks.Open Filename:=Classeur
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
Application.DisplayAlerts = False
End Sub
Code pour Menu Normal Printemps.xls Bouton UserForm "Valider"
Private Sub CommandButton1_Click()
Sheets(ComboBox1.Value).Select
Sheets(ComboBox1.Value).Range("A1:C100").Select
'copy selection dans presse-papier
Selection.Copy
Unload Me
End Sub
Bonne suite
ok merci la macro s'execute et met une valeur text mais le soucis est que ca me decale tout d'une colonne (c et d) au lieu de (b et c).
voici le résultat :https://www.cjoint.com/?3Cfvc5QXxKV
J'ai aussi l'impression que qq chose tourne en boucle et ma feuille "Menu Normal printemps est figé???? tant que je ne ferme pas le 1er doc et second reste bloqué
Peut etre mieux vaut refaire tout le code?
voici le résultat :https://www.cjoint.com/?3Cfvc5QXxKV
J'ai aussi l'impression que qq chose tourne en boucle et ma feuille "Menu Normal printemps est figé???? tant que je ne ferme pas le 1er doc et second reste bloqué
Peut etre mieux vaut refaire tout le code?
bon en fait ca plante et excel se ferme...mémoire insuffisant on dirait!
cette macro a l'air interressante...est elle exploitable?
https://forums.commentcamarche.net/forum/affich-4521474-vba-excel-bug-copie-feuille#8
cette macro a l'air interressante...est elle exploitable?
https://forums.commentcamarche.net/forum/affich-4521474-vba-excel-bug-copie-feuille#8
Bonjour,
Le decalage, c'est pour moi: B1 au lieu de A1
Private Sub CommandButton3_Click()
Dim Classeur
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
Workbooks.Open Filename:=Classeur
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("A1").Select
ActiveSheet.Paste
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
Application.DisplayAlerts = False
End Sub
Pour le reste, je regarde.
A plus
Le decalage, c'est pour moi: B1 au lieu de A1
Private Sub CommandButton3_Click()
Dim Classeur
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
Workbooks.Open Filename:=Classeur
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("A1").Select
ActiveSheet.Paste
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
Application.DisplayAlerts = False
End Sub
Pour le reste, je regarde.
A plus
Bonjour,
merci pour le coup de pouce....
En fait c'est le classeur "MenuNormalPrintemps"qui plante tout à la fermeture.
D'ailleurs si j'ajoute la fonction "ActiveWindow.Close" la macro ne s'execute pas
merci pour le coup de pouce....
En fait c'est le classeur "MenuNormalPrintemps"qui plante tout à la fermeture.
D'ailleurs si j'ajoute la fonction "ActiveWindow.Close" la macro ne s'execute pas
Re,
Private Sub CommandButton3_Click()
Dim Classeur
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("A1").Select
ActiveSheet.Paste
'fermeture Classeur
Wb.Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Cela devrait le faire
A bientot
Private Sub CommandButton3_Click()
Dim Classeur
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("A1").Select
ActiveSheet.Paste
'fermeture Classeur
Wb.Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Cela devrait le faire
A bientot
Encore mille fois merci pour ton aide...c'est bien plus pratique avec ta macro...
j'ai du insérer la macro sur une nouvelle feuille et pour le moment ca l'air de fonctionner... En revanche j'ai toujours le message "image trop grande, la feuille va etre tronquée" sur le classeur "Menu Normal printemps" puis apres tout excel se ferme.
Sans vouloir abuser de ton aide j'aurais une dernière petite question...
Est il possible de copier ce userform avec son module qui se trouve dans "Menu Normal printemps" vers le dossier "Menu Normal" mais sachant que les autres userform je n'en veux pas?
Private Sub CommandButton1_Click()
'Sheets(ComboBox1.Value).Activate
'Unload Me
Sheets(ComboBox1.Value).Select
Sheets(ComboBox1.Value).Range("B1:C65").Select
'copy selection dans presse-papier
Selection.Copy
Unload Me
'ActiveWindow.Close
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim WK As Worksheet
For Each WK In ThisWorkbook.Worksheets
ComboBox1.AddItem WK.Name
Next
End Sub
Sub go()
UserForm1.Show
End Sub
j'ai du insérer la macro sur une nouvelle feuille et pour le moment ca l'air de fonctionner... En revanche j'ai toujours le message "image trop grande, la feuille va etre tronquée" sur le classeur "Menu Normal printemps" puis apres tout excel se ferme.
Sans vouloir abuser de ton aide j'aurais une dernière petite question...
Est il possible de copier ce userform avec son module qui se trouve dans "Menu Normal printemps" vers le dossier "Menu Normal" mais sachant que les autres userform je n'en veux pas?
Private Sub CommandButton1_Click()
'Sheets(ComboBox1.Value).Activate
'Unload Me
Sheets(ComboBox1.Value).Select
Sheets(ComboBox1.Value).Range("B1:C65").Select
'copy selection dans presse-papier
Selection.Copy
Unload Me
'ActiveWindow.Close
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim WK As Worksheet
For Each WK In ThisWorkbook.Worksheets
ComboBox1.AddItem WK.Name
Next
End Sub
Sub go()
UserForm1.Show
End Sub
1/Le fichier "Menu Normal printemps" plante à la fermeture après l'utilisation de la macro
2/dans le fichier "Menu Normal Printemps" je souhaiterais que Userform1 se copie dans le fichier "Menu Normal" avec son exécutable dans Thisworkbook. est ce réalisable?
fichiers ci joint :
https://www.cjoint.com/?3CgqofEBgcc
2/dans le fichier "Menu Normal Printemps" je souhaiterais que Userform1 se copie dans le fichier "Menu Normal" avec son exécutable dans Thisworkbook. est ce réalisable?
fichiers ci joint :
https://www.cjoint.com/?3CgqofEBgcc
Re,
1/
'ce que vous avez ajoute, qui ne peut pas marcher
Windows("Menu Normal Printemps.xls").Activate
ActiveWindow.Save
ActiveWindow.Close
'fermeture Classeur
'ce que vous avez enlevez
'Wb.Close
pourquoi avez vous fait cette modif.
2/ Un UserForm ne peut pas etre mis dans ThisWorkbook
A+
1/
'ce que vous avez ajoute, qui ne peut pas marcher
Windows("Menu Normal Printemps.xls").Activate
ActiveWindow.Save
ActiveWindow.Close
'fermeture Classeur
'ce que vous avez enlevez
'Wb.Close
pourquoi avez vous fait cette modif.
2/ Un UserForm ne peut pas etre mis dans ThisWorkbook
A+
Re,
Sub Copie4()
Dim Classeur
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
'Sauvegarde et fermeture Classeur
Wb.Save
Wb.Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Ajoute sauvegarde Menu Normal Printemps.xls
A+
Sub Copie4()
Dim Classeur
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
'Sauvegarde et fermeture Classeur
Wb.Save
Wb.Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Ajoute sauvegarde Menu Normal Printemps.xls
A+
Re,
Chez moi, pas de probleme pour fermer le fichier.
Essayez ca
Sub Copie4()
Dim Classeur, Nom_Fichier
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
Nom_Fichier = Wb.Name
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
'Save et fermeture Classeur
Workbooks(Nom_Fichier).Activate
Workbooks(Nom_Fichier).Save
Workbooks(Nom_Fichier).Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
A+
Chez moi, pas de probleme pour fermer le fichier.
Essayez ca
Sub Copie4()
Dim Classeur, Nom_Fichier
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
Nom_Fichier = Wb.Name
On Error Resume Next
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
'Save et fermeture Classeur
Workbooks(Nom_Fichier).Activate
Workbooks(Nom_Fichier).Save
Workbooks(Nom_Fichier).Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
A+
Désolé de revenir à la charge mais ca fonctionne pas non plus.....
J'ai bien l'impression qu'il ne se passe plus rien après "ActiveSheet.Paste" et mon second fichier plante toujours avec le message "cette image est trop grande et elle va etre tronquée"
J'ai bien l'impression qu'il ne se passe plus rien après "ActiveSheet.Paste" et mon second fichier plante toujours avec le message "cette image est trop grande et elle va etre tronquée"
oui le programme s'arrete sur le point d'arret...ensuite j'arrive jusqu'a "ActiveSheet.Paste" puis c'est le bug!
-"erreur d'execution'-2147417848...la méthode 'Paste de l'objet'_Worksheet à échoué
Quelque chose de Bizarre, entre "Range("B1").Select" et "ActiveSheet.Paste" la fonction F8 passe par une autre macro qui se situe sur la Feuil 3
Je la place ci dessous :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("B9:C13,B17:C21,B25:C29,B33:C37,B41:C45,B49:C53,B57:C61"), Target) Is Nothing And Target.Count = 1 Then
adrcelmemu = Target.Address
colcelmenu = Target.Column
UFplat_menu.Show
End If
End Sub
j'ai essayé en enlevant la macro ci dessus mais c toujours pareil.
-"erreur d'execution'-2147417848...la méthode 'Paste de l'objet'_Worksheet à échoué
Quelque chose de Bizarre, entre "Range("B1").Select" et "ActiveSheet.Paste" la fonction F8 passe par une autre macro qui se situe sur la Feuil 3
Je la place ci dessous :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("B9:C13,B17:C21,B25:C29,B33:C37,B41:C45,B49:C53,B57:C61"), Target) Is Nothing And Target.Count = 1 Then
adrcelmemu = Target.Address
colcelmenu = Target.Column
UFplat_menu.Show
End If
End Sub
j'ai essayé en enlevant la macro ci dessus mais c toujours pareil.
Re,
Si vous annuler lors du choix de la feuille dans Menu Normal Printemps.xls alors oui il y a :
-"erreur d'execution'-2147417848...la méthode 'Paste de l'objet'_Worksheet à échoué .
Je regarde cde que je peux faire
Pour la macro feuil3
C'est normal, puisque l'objet de cette macro est d'intercepter les changements de selection cellule sur cette feuille.
Qui a ecrit tout ca? Il faudrait faire un peu de menage.
A+
Si vous annuler lors du choix de la feuille dans Menu Normal Printemps.xls alors oui il y a :
-"erreur d'execution'-2147417848...la méthode 'Paste de l'objet'_Worksheet à échoué .
Je regarde cde que je peux faire
Pour la macro feuil3
C'est normal, puisque l'objet de cette macro est d'intercepter les changements de selection cellule sur cette feuille.
Qui a ecrit tout ca? Il faudrait faire un peu de menage.
A+
Re,
Je n'avais pas traite l'annulation et fermeture sans choix feuille (fais plusieurs chose a la fois donc...)
Sub Copie4()
Dim Classeur, Nom_Fichier
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
Nom_Fichier = Wb.Name
'pour annuler ou fermeture sans choix feuille
On Error GoTo suite
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
suite:
'Save et fermeture Classeur
Workbooks(Nom_Fichier).Activate
Workbooks(Nom_Fichier).Save
Workbooks(Nom_Fichier).Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Nous devrions y arriver
A+
Je n'avais pas traite l'annulation et fermeture sans choix feuille (fais plusieurs chose a la fois donc...)
Sub Copie4()
Dim Classeur, Nom_Fichier
Dim Wb As Workbook
Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
If Classeur = False Then Exit Sub
'arret raffraichisement ecran
Application.ScreenUpdating = False
'arret alertes excel
Application.DisplayAlerts = False
Set Wb = Workbooks.Open(Filename:=Classeur)
Nom_Fichier = Wb.Name
'pour annuler ou fermeture sans choix feuille
On Error GoTo suite
'Passe par le presse-papier pour restituer
Windows("Menu.xls").Activate
Sheets("Menu Normal").Select
Range("B1").Select
ActiveSheet.Paste
suite:
'Save et fermeture Classeur
Workbooks(Nom_Fichier).Activate
Workbooks(Nom_Fichier).Save
Workbooks(Nom_Fichier).Close
'mise en forme largeur colonne
Cells.Select
Cells.EntireColumn.AutoFit
'vider presse-papier
Application.CutCopyMode = False
'activation alertes EXCEL et raffraichissement
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Nous devrions y arriver
A+
Le fichier "Menu Normal Printemps" plante toujours avec le message "cette image est trop grande et elle va etre tronquée" puis fermeture de toute application excel.
Sur le fichier ca tourne en boucle et c'est impossible de le fermer...
Je te fais confiance pour y arriver!!!
Sur le fichier ca tourne en boucle et c'est impossible de le fermer...
Je te fais confiance pour y arriver!!!
Bonjour,
Merci de votre confiance, mais je ne vois pas ce qui ne va pas. Mon PC est en XP, vos fichiers tournent sans probleme. J'ai fait des essais sur un autre PC en W7, sans probleme. La seule difference avec vous, c'est que je ne peux pas faire les mises a jour de liaisons classeurs a cause des repertoires qui n'existe pas sur mon PC. En principe, cela ne devrait pas etre la cause de nos soucis.
A defaut de trouver le pourquoi du comment (je seche pour l'instant), dites moi s'il ne serait pas possible batir votre application differemment. Est-ce-que tout le code du fichier "Menu Normal Printemps" est utile, ainsi que tous les liens de classeurs??
A+
Merci de votre confiance, mais je ne vois pas ce qui ne va pas. Mon PC est en XP, vos fichiers tournent sans probleme. J'ai fait des essais sur un autre PC en W7, sans probleme. La seule difference avec vous, c'est que je ne peux pas faire les mises a jour de liaisons classeurs a cause des repertoires qui n'existe pas sur mon PC. En principe, cela ne devrait pas etre la cause de nos soucis.
A defaut de trouver le pourquoi du comment (je seche pour l'instant), dites moi s'il ne serait pas possible batir votre application differemment. Est-ce-que tout le code du fichier "Menu Normal Printemps" est utile, ainsi que tous les liens de classeurs??
A+