Copier une feuille d'un autre classeur dans mon classeur actuel
Bonjour,
J'aimerais savoir s'il est possible de copier une feuille d'un autre classeur dans le classeur que j'utilise et dans lequel j'ai ma macro.
Je sais que dans l'autre sens c'est possible, mais je n'ai rien trouvé pour le sens inverse.
MonClasseur.xlsm → classeur ouvert sur lequel je déclenche ma macro
Classeur1.xlsx → classeur actuellement fermé que je veux ouvrir avec ma macro et dans lequel je veux copier la feuille "Feuil1"
Pour l'instant, j'ai cette macro, mais elle copie du classeur actuel vers un autre :
Sub CopieFeuilleCalcul()
Dim monclasseur As Workbook
Dim mafeuille As Object
Set mafeuille = ActiveSheet
Application.ScreenUpdating = False
On Error Resume Next
Set monclasseur = Workbooks.Open _
("F:\Ferme des Vallons\App\acopier.xlsx")
mafeuille.Copy Before:=monclasseur.Sheets(1)
monclasseur.Save
monclasseur.Close
Application.ScreenUpdating = True
End SubBonjour, à partir du moment ou vous connaissez le nom de fichier , le chemin d'accés et le nom de la feuille à copier.
c'est pratiquement le même principe.
quelque chose dans ce genre là :
Sub Macro1()
'variables classeurs
Dim classeurimport as workbook
Dim classeurexport as workbook
classeurimport=activeworkbook.name
Application.ScreenUpdating = False
'on ouvre le fichier
Workbooks.Open Filename:="F:\Ferme des Vallons\App\acopier.xlsx"
classeurexport=activeworkbook.name
'on copy la feuille 1 vers le classeur import emplacement à adapter before ou after la feuille que vous souhaitez
Sheets("Feuil1").Copy After:=Workbooks(classeurimport).Sheets(1)
'On referme le classeur
classeurexport.Close
Application.ScreenUpdating = True
End SubMerci @Xmenpl pour ton aide.
J'ai quelque peu modifier la formule car j'avais un problème sur le classeImport qui était déclaré en workbook mais qui recevez un string.
Et j'ai rajouté une ligne pour choisir le fichier dans lequel est présent la feuille à copier et ensuite pour la renomer afin que mes autre macro fonctionne bien et supprimer l'ancienne feuille.
Sub importTabCommande()
'variables classeurs
Dim classeurimport As String
Dim classeurexport As String
classeurimport = ActiveWorkbook.Name
Application.ScreenUpdating = False
'déclarions + ouverture d'un explorateur de fichier pour choisir le fichier dans lequel est présent la feuille à copier
Dim cheminComplet As String
cheminComplet = Application.GetOpenFilename
Debug.Print cheminComplet
'si on quitte l'explorateur sans choisir de fichier alors on quitte la macro et ducoup rien n'est copié ni modifier ni supprimé.
If cheminComplet = "Faux" Then
Exit Sub
End If
'on ouvre le fichier
Workbooks.Open Filename:=cheminComplet
classeurexport = ActiveWorkbook.Name
'on copy la feuille 1 vers le classeur import emplacement à adapter before ou after la feuille que vous souhaitez
Sheets(1).Copy After:=Workbooks(classeurimport).Sheets(1)
'On referme le classeur
Workbooks(classeurexport).Close
'on désactive les alerte pour supprimer l'ancienne feuille sans demander confirmation
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
'suppression de l'ancienne feuille
Worksheets(3).Delete
'on renomme la nouvelle feuille pour permettre au autre macro de s'exécuter
Worksheets(2).Name = "Commande"
Application.ScreenUpdating = True
End SubBien vu effectivement pour le string.