Erreur 1004 - La méthode Select de la base Range a échoué

Bonjour,

Débutante en VBA je cherche à exécuter une macro qui me permet de copier une plage de données d'un classeur 1 vers la 1ère ligne disponible d'un classeur 2.
J'ai cherché une solution à cette erreur 1004 sur nombre de forums mais je n'ai pas trouvé.

Pourriez-vous SVP m'apportez vos lumières pour corriger cette macro.

Sub Extraction()

Sheets("Feuil1").Range("a5:e18").Copy
Workbooks.Open Filename:="C:\Desktop\Classeur2.xlsm"
With Sheets("Feuil1").UsedRange: NoDeLaDernLig = .Cells(.Rows.Count, .Columns.Count).Row: End With
Sheets("Prélèvements").Cells(NoDeLaDernLig + 1, 1).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub

Merci d'avance pour vos réponses.

6 réponses

  1. Bonjour,

    le problème vient de cette ligne de code ou il manque un anti-slash entre Desktop et le nom de ton classeur
    Workbooks.Open Filename:="C: DesktopClasseur2.xlsm"

    et le chemin d'accès au fichier doit être complet
    Workbooks.Open Filename:="C:\Users\nom utilisateur\Desktop\Classeur2.xlsm"

    éventuellement utilise l'assistant macro pour ouvrir ton Classeur2.xlsm pour le reproduire dans ton code

    par contre si ton fichier est dans le même répertoire tu peux utiliser cette ligne de commande
    Workbooks.Open Filename:=ThisWorkbook.Path & "\Classeur2.xlsm"
    0
    1. Merci pour la réponse et la réactivité malheureusement il s'agit juste d'une erreur lors de mon copier/coller: l'anti-slash n'a pas fonctionné mais il est bien présent sur ma macro...

      Le problème se situe donc ailleurs :-D
      0
      1. Re,

        le code fonctionne parfaitement, mais que veux tu faire exactement une fois l'action COPIER
        tu ouvres le fichier 2 onglet "Prélèvements"

        et après !
        que vient faire cette ligne
        With Sheets("Feuil1").UsedRange: NoDeLaDernLig = .Cells(.Rows.Count, .Columns.Count).Row: End With
        0
        1. Alors je vais tenter d'expliquer ma méthode de travail pour mieux appréhender le contexte.

          Chaque mois je fais mes factures sur Excel: avec un classeur/facture et systématiquement un onglet récapitulatif des prélèvements de chaque facture.

          Je souhaite copier ces données pour les coller dans un classeur qui me regroupe l'ensemble des prélèvements que je vais effectuer dans le mois.

          La finalité étant de contrôler la cohérence entre facturation et prélèvement.

          J'espère avoir été claire... :-)
          0
      2. Re,

        d'après ce que je comprends

        Sheets("Feuil1").Range("A5:E18").Copy
        Workbooks.Open Filename:="C:\Users\nom utilisateur\Desktop\Classeur2.xlsm"
        Sheets("Prélèvements").Cells(NoDeLaDernLig + 1, 1).Range("A65536").End(xlUp)(2, 1).Select
        ActiveSheet.Paste
        ActiveWorkbook.Save
        ActiveWorkbook.Close

        0
        1. J'ai malheureusement le même message d'erreur
          0
      3. Re,

        Bizarre, place les deux classeurs dans le même répertoire, contrôle le nom du fichier nommé "Classeur2.xlsm" qu'il soit exactement orthographié comme dans le code sans espace ou autre
        et remplace ton code par

        Sub Extraction()

        Sheets("Feuil1").Range("A5:E18").Copy
        Workbooks.Open Filename:=ThisWorkbook.Path & "\Classeur2.xlsm"
        Sheets("Prélèvements").Range("A65536").End(xlUp)(2, 1).Select
        ActiveSheet.Paste
        ActiveWorkbook.Save
        ActiveWorkbook.Close

        End Sub
        0
        1. Pour des raisons d'organisation je ne peux pas modifier l'emplacement de mes classeurs.
          Ce qui est le plus rageant c'est que j'ai essayé avec des fichiers "test" et le code que j'ai mis initialement dans ma question et tout fonctionne à merveille.
          Mais sur ma matrice de facture ça ne veux pas!
          Je vais m'assurer de la bonne orthographe des noms.
          0
        2. Re,

          rien ne t'empêche de créer un dossier et de non pas déplacer tes fichiers de travail mais de les dupliquer pour pouvoir y travailler dessus et donc COPIER tes deux fichiers dans le dossier.
          De toute façon contrôle l'orthographe de tes fichiers ainsi que les noms de tes feuilles citées dans le code
          0
        3. Tu m'as donné une idée: j'ai tenté de coller dans une autre feuille de mon classeur 2 et là ça fonctionne!

          Je pense que la feuille de destination (n°1) a été corrompue ou je ne sais quoi....

          Un grand merci en tout cas
          0
        4. Re,

          n'est elle pas protégé des fois !
          0
        5. Je ne l'ai pas protégée et je pense que ça vient du nom de la feuille car quand je la renomme à l'identique de ce qu'elle était le problème réapparaît.
          Je pense que la bestiole n'aime pas les accents...
          0
      4. Re,

        tout à fait évite les noms composés, les caractères spéciaux surtout si tu dois utiliser les noms ou tu peux remplacer dans le code le nom de ta feuille ("Prélèvements") sont numéro Sheets(1)

        lorsque tu es dans le VBA regarde le numéro de ta feuille si par exemple tu vois Feuil(3)Prélèvements il s'agit de la troisième page mémorisé par Excel alors essaye de remplacer Sheets("Prélèvements") par Sheets(3)
        0
        1. Ahhh ok c'est bon à savoir!

          Merci beaucoup pour ton aide
          0