Erreur 1004 - La méthode Select de la base Range a échoué
Etheldrede85
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Etheldrede85 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Etheldrede85 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- La méthode select de la classe range a échoué
- L'accès a la carte sd a échoué 3ds - Forum Jeux vidéo
- La méthode range de l'objet _global a échoué ✓ - Forum VB / VBA
- Méthode Select de la classe Range ✓ - Forum VB / VBA
- Input signal out of range - Forum Ecran
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? ✓ - Forum Word
6 réponses
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"
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"
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
Le problème se situe donc ailleurs :-D
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
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
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... :-)
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... :-)
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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
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)
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)