Copie d'une feuille d'un classeur vers un autre classeur

Résolu
dammex Messages postés 31 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 14 février 2017 - Modifié par dammex le 10/05/2014 à 18:06
dammex Messages postés 31 Date d'inscription jeudi 22 juillet 2010 Statut Membre 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...

1 réponse

dammex Messages postés 31 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 14 février 2017 1
10 mai 2014 à 18:45
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.
0