Menu

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

Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
-
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.
Afficher la suite 

Votre réponse

6 réponses

Messages postés
16665
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 décembre 2018
0
Merci
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"
A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Commenter la réponse de Mike-31
Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
0
Merci
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
Commenter la réponse de Etheldrede85
Messages postés
16665
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 décembre 2018
0
Merci
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
A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Etheldrede85
Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
-
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... :-)
Commenter la réponse de Mike-31
Messages postés
16665
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 décembre 2018
0
Merci
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

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Etheldrede85
Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
-
J'ai malheureusement le même message d'erreur
Commenter la réponse de Mike-31
Messages postés
16665
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 décembre 2018
0
Merci
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
Etheldrede85
Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
-
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.
Mike-31
Messages postés
16665
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 décembre 2018
-
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
Etheldrede85
Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
-
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
Mike-31
Messages postés
16665
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 décembre 2018
-
Re,

n'est elle pas protégé des fois !
Etheldrede85
Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
-
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...
Commenter la réponse de Mike-31
Messages postés
16665
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 décembre 2018
0
Merci
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)
A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Etheldrede85
Messages postés
8
Date d'inscription
mardi 27 novembre 2018
Dernière intervention
27 novembre 2018
-
Ahhh ok c'est bon à savoir!

Merci beaucoup pour ton aide
Commenter la réponse de Mike-31