Signaler

Copier une feuille d'un classeur à l'autre [Résolu]

Posez votre question Leghe - Dernière réponse le 13 juin 2017 à 13:59 par Leghe
Bonjour,

J'essaye de faire une macro qui me permet d'importer dans la feuille EXPORT de mon classeur MaJ.xlsm, la feuille A de mon classeur EXPORT.xls.
J'ai tenté ça mais cela ne fonctionne pas :


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


Pourquoi ??
Utile
+0
plus moins
Merci pour votre réponse.
Quelle est la solution en ce cas ?
Comment limiter la copie aux 65 536 premières lignes ?
Donnez votre avis
Utile
+0
plus moins
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 6141Messages postés dimanche 13 juin 2010Date d'inscription 16 octobre 2017 Dernière intervention - 12 juin 2017 à 19:57
Ne fonctionne pas, c'est très vague !
Que se passe-t-il exactement, Y-a-t'il un message d'erreur ? Lequel ? Sur quelle ligne ?
Répondre
Donnez votre avis
Utile
+0
plus moins
Je sais...
Aucun message d'erreur, rien ne se passe... Tout "simplement"...
Donnez votre avis
Utile
+0
plus moins
Re,

C'est pas normal, ta macro ne s'exécute pas !
Les macros sont-elles activées ?

Tu devrais avoir ce message d'erreur :

Et si tu fais débogage :

Donnez votre avis
Utile
+0
plus moins
Voici les 5 premières lignes de ta macro "Macro1" :

  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.
 
Donnez votre avis
Utile
+0
plus moins
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 :

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 6141Messages postés dimanche 13 juin 2010Date d'inscription 16 octobre 2017 Dernière intervention - 13 juin 2017 à 13:50
Bonjour,

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
Répondre
Patrice33740 6141Messages postés dimanche 13 juin 2010Date d'inscription 16 octobre 2017 Dernière intervention - 13 juin 2017 à 13:56
PS : Pour lancer ta macro à l'ouverture du fichier, mettre dans
le module ThisWorkbook :
Private Sub Workbook_Open()
  Call Macro1
End Sub
Répondre
Donnez votre avis
Utile
+0
plus moins
Super, cela fonctionne à merveille.
Merci, problème résolu ! :)
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !