A voir également:
- Vba copier une feuille dans un autre classeur sans ouvrir
- Vba copier coller une feuille dans un autre classeur - Meilleures réponses
- Copier feuille excel dans un autre classeur vba - Meilleures réponses
- Copier une feuille d'un classeur à l'autre ✓ - Forum - VB / VBA
- VBA : copier-coller une feuille dans un autre classeur ✓ - Forum - VB / VBA
- Copier coller feuille d'un classeur vers un autre classeur ✓ - Forum - VB / VBA
- VBA Excel Copie feuille dans autre classeur ✓ - Forum - VB / VBA
- Référence dans un autre classeur, sans l'ouvrir ✓ - Forum - Excel
7 réponses
Leghe
Merci pour votre réponse.
Quelle est la solution en ce cas ?
Comment limiter la copie aux 65 536 premières lignes ?
Quelle est la solution en ce cas ?
Comment limiter la copie aux 65 536 premières lignes ?
Leghe
De plus, ce code ne fonctionne pas non plus :
Sub Macro1()
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "CIBLE"
Sheets.Add After:=ActiveSheet
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "EXPORT"
Workbooks.Open Filename:="C:\Users\Gérard\Desktop\Export.xls"
' Workbooks(Export.xls).Worksheets("A").Cells.Select
' Selection.Copy
' Workbooks(MaJ.xlsm).Worksheets("EXPORT").Range("A1").Activate
' ActiveSheet.Paste
' Workbooks(Export.xls).Close False
End Sub
Patrice33740
- Messages postés
- 8435
- Date d'inscription
- dimanche 13 juin 2010
- Statut
- Membre
- Dernière intervention
- 20 février 2021
françois
Voici les 5 premières lignes de ta macro "Macro1" :
Je te propose de les remplacer par ces 2 lignes :
Ça marchera même si ton classeur a plusieurs feuilles, et quelle que
soit la feuille active ; rappel : une feuille qui vient d'être ajoutée
devient la nouvelle feuille active => ligne #2 : ok.
-------------------------------------
Autre rappel : un classeur a toujours au minimum une feuille.
Si au départ ton classeur n'a qu'une seule feuille, alors cette feuille
est forcément la feuille active ; dans ce cas, mon code de 2 lignes
ci-dessus peut devenir :
=====================
La ligne suivante de ta macro peut s'écrire plus court :
Si jamais elle plante, ça pourra être à cause de :
a) "Gérard" : c'est peut-être "Gerard", ou un autre nom de User
b) "Desktop" : ton classeur est bien sur le Bureau ? ne serait-il
pas plutôt dans le dossier Documents ?
c) L'extension du fichier est bien .xls ? pas .xlsx ? ou .xlsm ?
-------------------------------------
La correction pourrait être :
J'ai supposé que le nom de ton classeur est quand même
"Export", mais à vérifier au cas où... ;)
=====================
Contrôle déjà tout ça avant de faire la suite de ta macro.
Sheets("Feuil1").Select Sheets("Feuil1").Name = "CIBLE" Sheets.Add After:=ActiveSheet Sheets("Feuil1").Select Sheets("Feuil1").Name = "EXPORT"
Je te propose de les remplacer par ces 2 lignes :
Worksheets(1).Name = "CIBLE": Worksheets.Add , Worksheets(1) ActiveSheet.Name = "EXPORT"
Ça marchera même si ton classeur a plusieurs feuilles, et quelle que
soit la feuille active ; rappel : une feuille qui vient d'être ajoutée
devient la nouvelle feuille active => ligne #2 : ok.
-------------------------------------
Autre rappel : un classeur a toujours au minimum une feuille.
Si au départ ton classeur n'a qu'une seule feuille, alors cette feuille
est forcément la feuille active ; dans ce cas, mon code de 2 lignes
ci-dessus peut devenir :
ActiveSheet.Name = "CIBLE": Worksheets.Add , ActiveSheet ActiveSheet.Name = "EXPORT"
=====================
La ligne suivante de ta macro peut s'écrire plus court :
Workbooks.Open "C:\Users\Gérard\Desktop\Export.xls"
Si jamais elle plante, ça pourra être à cause de :
a) "Gérard" : c'est peut-être "Gerard", ou un autre nom de User
b) "Desktop" : ton classeur est bien sur le Bureau ? ne serait-il
pas plutôt dans le dossier Documents ?
c) L'extension du fichier est bien .xls ? pas .xlsx ? ou .xlsm ?
-------------------------------------
La correction pourrait être :
Workbooks.Open "C:\Users\Gerard\Documents\Export.xlsm"
J'ai supposé que le nom de ton classeur est quand même
"Export", mais à vérifier au cas où... ;)
=====================
Contrôle déjà tout ça avant de faire la suite de ta macro.
Leghe
Merci à tous pour vos réponses.
Les macros sont bien activées, les noms et chemins sont les bons.
J'ai modifié un peu la macro, qui ne s’exécute pas automatiquement (je ne comprends pas pourquoi ???...).
Cela dit, en la sélectionnant "manuellement" via l'onglet développeur, elle fonctionne :
Me reste donc 2 questions :
- Comment l'exécuter automatiquement à l'ouverture du fichier MaJ.xlsm ?
- Comment fermer automatiquement Export.xls à la fin ?
Merci !
Les macros sont bien activées, les noms et chemins sont les bons.
J'ai modifié un peu la macro, qui ne s’exécute pas automatiquement (je ne comprends pas pourquoi ???...).
Cela dit, en la sélectionnant "manuellement" via l'onglet développeur, elle fonctionne :
Sub Macro1()
Dim DerniereColonne As Integer
Dim DerniereLigne As Integer
Dim MaJ As Workbook
Dim Export As Workbook
Set MaJ = ThisWorkbook
Workbooks.Open "C:\Users\Gérard\Desktop\Export.xls"
DerniereColonne = Range("A1").SpecialCells(xlCellTypeLastCell).Column
DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
Sheets("A").Range(Cells(1, 1), Cells(DerniereLigne, DerniereColonne)).Copy
Windows("MaJ.xlsm").Activate
Sheets("Export").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
Me reste donc 2 questions :
- Comment l'exécuter automatiquement à l'ouverture du fichier MaJ.xlsm ?
- Comment fermer automatiquement Export.xls à la fin ?
Merci !
Patrice33740
- Messages postés
- 8435
- Date d'inscription
- dimanche 13 juin 2010
- Statut
- Membre
- Dernière intervention
- 20 février 2021
Bonjour,
essaies :
essaies :
Sub Macro1() Dim Source As Workbook Dim Cible As Range Dim DerniereCellule As Range Set Source = Workbooks.Open("C:\Users\Gérard\Desktop\Export.xls") Set Cible = ThisWorkbook.Worksheets("Export").Range("A1") With Source.Worksheets("A") Set DerniereCellule = .Cells.SpecialCells(xlCellTypeLastCell) .Range(Cells(1, 1), DerniereCellule).Copy Cible End With Source.Saved = True Source.Close End Sub
Patrice33740
- Messages postés
- 8435
- Date d'inscription
- dimanche 13 juin 2010
- Statut
- Membre
- Dernière intervention
- 20 février 2021
- Messages postés
- 8435
- Date d'inscription
- dimanche 13 juin 2010
- Statut
- Membre
- Dernière intervention
- 20 février 2021
PS : Pour lancer ta macro à l'ouverture du fichier, mettre dans
le module ThisWorkbook :
le module ThisWorkbook :
Private Sub Workbook_Open() Call Macro1 End Sub