IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur d'exécution 1004 : La méthode Copy de la classe Range a échoué.


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 3
    Points
    3
    Par défaut Erreur d'exécution 1004 : La méthode Copy de la classe Range a échoué.
    Bonjour,
    Je souhaite copier le résultat d'un filtre automatique. J'ai le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub RecupereDataAutofiltreTEST()
     
    Dim Destination As Range
     
    'Définis ta plage où sera copiée les données.
    'si même feuille oublis "Sheets" seulement Range(??)
    Set Destination = Sheets("Vendredi").Range("A2")
     
    Dim MaPlage As Range
     
    'représente les données filtrées et les titres.
    Set MaPlage = Sheets("Feuil1").AutoFilter.Range
     
    'représente seulement les données
    Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1, MaPlage.Columns.Count)
     
    MaPlage.Copy Destination
     
    End Sub
    D'après le support de Microsoft :
    Erreur d'exécution 1004 : La méthode Paste de la classe Worksheet a échoué.
    Erreur d'exécution 1004 : La méthode Copy de la classe Range a échoué.
    Vous recevez l'un de ces messages d'erreur même si les données sont collées dans le classeur.

    Remarque Ce problème ne se produit pas lorsque les données ne sont pas filtrées.

    Retour au début
    Cause
    Ce problème peut se produire lorsque l'une des conditions suivantes est remplie :
    • La macro Microsoft Visual Basic pour Applications (VBA) copie et colle une ligne entière dans un classeur Excel 2003.
    • La macro Microsoft VBA copie et colle une plage de 2 516 lignes ou plus dans un classeur Excel 2003.

    Retour au début
    Contournement
    Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie explicite ou implicite. Ceci inclut, de manière non limitative, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques.

    Pour contourner ce problème si votre macro VBA copie et colle une ligne entière, modifiez le code de la macro pour copier uniquement la section de la ligne contenant des données. Par exemple, utilisez un code de macro VBA semblable au suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Range("A" & ActiveCell.Row), Range("IV" & ActiveCell.Row).End(xlToLeft)).Select
    Pour contourner ce problème si votre macro VBA copie et colle une plage de 2 516 lignes ou plus, modifiez le code de la macro pour s'exécuter en boucle pour copier et coller des plages de données plus réduites jusqu'à ce que toute la plage souhaitée soit copiée et collée.
    Je ne vois pas comment modifier mon code, ça dépasse mes capacités. Mon tableau après filtre ne fait que 50 lignes environ (300 avant filtre), et je ne copie pas toute la ligne.
    Quelles modifications faut-il que j'opère ?

    Merci

  2. #2
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour billou06

    Tu as un problème avec destination ---> c'est un mot réservé :


    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:B10").copy Destination:=Sheets("Vendredi").range("A2")
    avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub RecupereDataAutofiltreTEST()
     
    Dim arrive As Range
     
    'Définis ta plage où sera copiée les données.
    'si même feuille oublis "Sheets" seulement Range(??)
    Set arrive = Sheets("Vendredi").Range("A2")
     
    Dim MaPlage As Range
     
    'représente les données filtrées et les titres.
    Set MaPlage = Sheets("Feuil1").AutoFilter.Range
     
    'représente seulement les données
    Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1, MaPlage.Columns.Count)
     
    MaPlage.Copy Destination:=arrive
     
    End Sub
    bon après-midi

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    ça ne change rien !
    Il n'y a pas de possibilité pour qu'aucun message d'erreur ne soit affiché ? J'ai trouvé On Error Resume Next mais je ne sais pas ou le mettre ni comment l'utiliser !
    Aidez-moi !
    Merci !

  4. #4
    Expert éminent sénior

    Avatar de Deepin
    Homme Profil pro
    Ingénieur - Chef de projet Modélisation/Simulation
    Inscrit en
    Avril 2004
    Messages
    3 164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Ingénieur - Chef de projet Modélisation/Simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 164
    Points : 51 026
    Points
    51 026
    Par défaut
    avant la ligne de l'erreur
    On Error resume Next

    après
    If Err.Number>0 Then '<--il y eu une erreur

  5. #5
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    utiliser on error de corrigera pas l'erreur!!!!!!!!!!!!!!!!!!!!!!

    la copy ne se fera pas !!!!!!!!!!!!!!!!!!!!!!!

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 56
    Points : 64
    Points
    64
    Par défaut Activer la feuille
    Bonjour,
    Je pense qu'en ajoutant un .activate de la feuille avant la copie cela va peut être résoudre le problème.
    A bientôt

  7. #7
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    Je ne sais pas si j'ai bien compris ce que tu cherhes

    Tu cherches à filtrer dans une base de donnée, un certain nombre d'enregistrementsen fonction d'1 ou plusieurs critere, le resultat de ce filtre, doit etre copié dans une autre feuille

    Si c'est cea, les filtres automatiques ne sont d'aucune utilité, ils fonctionnent un peu comme les MFC, c'est un peu compliqué à expliquer, ils font l'effet mais pas l'action --->je precise : il masque les lignes à ecarter, mais quand tu regarde la ligne maquée, sa propriété Hidden est toujours à false au lieu d'etre à true

    Regarde les filtre elaborés, ils font en une seule ois ce que tu cherches,c'est à dire : selection des lignes Ok et recopie à l'endroit désiré

    bonne journée

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Je croyais que les filtre élaboré ne permettaient que la copie dans la même feuille ?

    Je vais verifier ça un peu plus tard je ne peux pas tout de suite.

    Déjà, merci de t'être arrêté sur mon problème.

  9. #9
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    non pas du tout : exemple tu nommes tes deux plages

    Base ----> pour le nom de la base de données
    critere --> pour la plage de criteres à selectioner
    tu te mets sur une feuille differente que celle de la base de données

    quand tu lances ton filtre elaboré, dans la fentre, tu coches à un endroit different et tu liberes à ce moment la 3eme ligne

    Quand tu as fini de tester, tu lances l'enregistreur de macro et tu refais tes manip, le tour et joué, tu as une macro

    bonne journée

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Je confirme que l'on ne peut pas, je viens de vérifier dans un livre (Excel 2003 au quotidien - Microsoft Press) et il est bien spécifier que l'on ne peut pas extraire ver une autre feuille du classeur, mais que la solution est que l'on extrait les resultats vers une autre partie de la feuille et que l'on copie ensuite cette plage vers une autre feuille. Pas très élégant mais ça marche !!

  11. #11
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    les livres ont raison alors.
    C'est dommage, tout ce que j'ai fait l'an passé et qui fonctionne ne marche pas alors. C'est dommage cela fait un an que je travaille sans probleme avec des procedures qui selon les livres ne fontionnent pas, il va te falloir trouver autre chose alors

    ps: regarde ce que je t'ai mis au dessus, la seule restriction est que la plage de critere doive se trouver sur la feuille de la bae de données

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wilfried_42
    re:

    utiliser on error de corrigera pas l'erreur!!!!!!!!!!!!!!!!!!!!!!

    la copy ne se fera pas !!!!!!!!!!!!!!!!!!!!!!!
    Désolé je n'avais pas vu avant mais la copie marche, mais ça affiche un message d'erreur qui bloque l'execution des macro suivante. (J'ai créé une macro qui lance une dizaine de macro à la suite)

    Sinon pour les filtres élaborés (je ne les ai jamais utilisés auparavant) est ce que c'est normal que je sois obligé de repasser par Données/Filtrer/Filtres élaborés pour que le filtrage soit mis a jour quand je change un paramètre dans la zone de critères.

    Merci

    Edit : ortho

  13. #13
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    oui c'est normal

    C'est pour cela que je t'ai dit, une fois tes tests effectués, de refaire les manip avec l'enregistreur de macro, cette macro peut etre ensuite appelée soit par une procedure, soit par un bouton

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Ok merci je suis en train de tester tout ça !

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/03/2015, 19h06
  2. Réponses: 4
    Dernier message: 16/02/2015, 13h06
  3. Réponses: 1
    Dernier message: 18/11/2014, 16h00
  4. [XL-2007] Erreur d'execution "1004" la méthode autofilter de la classe range a échoué
    Par adamskone dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/09/2014, 00h41
  5. [XL-2007] Erreur d'exécution 1004 La méthode Select de l'Objet Worksheet a échoué !
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 08/11/2013, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo