Copie d'une feuille d'un classeur vers un autre classeur [Résolu]

Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Dernière intervention
14 février 2017
- 10 mai 2014 à 18:02 - Dernière réponse :
Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Dernière intervention
14 février 2017
- 10 mai 2014 à 18:45
Bonjour à tous,

Comme indiqué dans le titre, je cherche à copier une feuille d'un classeur vers un autre classeur.

Le problème, c'est que j'obtiens le message d'erreur suivant :
"Erreur d'exécution 1004 - Erreur définie par l'application ou par l'objet"

J'avoue avoir vu beaucoup de propositions sur Internet mais aucune ne s'avère fonctionner... Ci-dessous mon code :

Private Sub Workbook_Open()

    ' Désactivation de la mise à jour de l'écran
    Application.ScreenUpdating = False
    
    ' Déclaration des variables
    Dim oFDlg As Object
    Dim sFichier As String
    Dim Workbook1 As Workbook, Workbook2 As Workbook
    Set Workbook1 = ThisWorkbook
    
    ' Initialisation variable objet oFDlg
    Set oFDlg = Application.FileDialog(1)  ' msoFileDialogOpen = 1, msoFileDialogSaveAs = 2
    ' Titre de la boîte de dialogue
    oFDlg.Title = "Sélection de la feuille de route..."
    ' Dossier de départ
    oFDlg.InitialFileName = ThisWorkbook.Path
    ' Sélection multiple = Non
    oFDlg.AllowMultiSelect = False
    ' Filtre
    oFDlg.Filters.Clear
    oFDlg.Filters.Add "Fichier Excel", "*.xlsx;*.xls;*.xlsm"
    
    ' Affichage de la boîte de dialogue
    If oFDlg.Show Then
        
        ' Ouverture de la feuille de route (Lancement de la macro intégrée désactivée)
        Application.EnableEvents = False
        sFichier = oFDlg.SelectedItems(1)
        Set Workbook2 = Workbooks.Open(Filename:=sFichier)
    
        ' Suppression de la protection de la feuille de route
        Workbook2.Worksheets("Feuille de route").Unprotect "XXX"
        
        ' Copie de la feuille de route du classeur 2 vers le classeur 1
        Workbook2.Sheets("Feuille de route").Select
        Workbook2.Sheets("Feuille de route").Copy after:=Workbook1.Sheets(1)

        ' Fermeture forcée du classeur 2 (pas d'enregistrement)
        Application.DisplayAlerts = False
        Workbook2.Close
        
        ' Libération variable objet
        Set oFDlg = Nothing
        
    End If

End Sub



Pour information, le programme bloque à la ligne 37 et j'utilise office 2010.

Merci pour votre aide...
Afficher la suite 

Votre réponse

1 réponse

Messages postés
31
Date d'inscription
jeudi 22 juillet 2010
Dernière intervention
14 février 2017
- 10 mai 2014 à 18:45
0
Merci
Je viens de trouver la solution.

En faite, j'importais une feuille d'un classeur .xlsm vers mon classeur de type .xls... et l'erreur venait du nombre de lignes qui n'est pas la même dans chacun de mes classeurs.

J'ai enregistré mes deux documents en .xlsm (car utilisation de macros dans les deux fichiers) et çà fonctionne parfaitement.
Commenter la réponse de dammex

Vous n'êtes pas encore membre ?

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

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 et codes sources.

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