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 Paste de la classe Worksheet a échoué [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Directrice générale
    Inscrit en
    Mars 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Directrice générale
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2018
    Messages : 6
    Par défaut Erreur d'exécution 1004: La méthode Paste de la classe Worksheet a échoué
    Bonjour,


    J'ai un fichier dans lequel je copie une plage donnée, et la colle dans un autre classeur.
    J'obtiens ce message d'erreur dans un fichier Excel durant l'exécution de la macro: «Erreur d'exécution 1004: La méthode Paste de la classe Worksheet a échoué» à la ligne «ActiveSheet.Paste».
    Cette macro est utilisée depuis plus d'un an sans problème et le message a commencé à apparaitre après avoir modifié le titre du fichier (de 2017_2018 à 2018_2019).
    J'ai fait plusieurs tests mais en vain.
    Le problème semble provenir du presse-papier qui ne copie par toujours les données depuis le mois de février.

    Points à savoir
    - Oui, j'ai des cellules fusionnées cependant la feuille d'origine et celle de destination sont identiques en tout point.
    - Ça fonctionnait par le passé sans problème.
    - Ça fonctionne manuellement.

    Je joins une image de mon code.

    Merci à l'avance


    Catherine

    Nom : Bogue_VBA_Collage.jpg
Affichages : 3312
Taille : 215,5 Ko

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Commence par supprimer le DisplayAlert = False qui pourrait masquer des informations utiles au débugage.
    Ensuite, juste avant la ligne qui plante, ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print ActiveWorkbook.Name
    Debug.Print ActiveSheet.Name
    Et regarde dans la fenêtre d'exécution ce qui s'affiche pour vérifier ce qui est actif à ce moment-là.

    Je joins une image de mon code.
    C'est peu pratique vu que ça empêche les copier/coller.
    Il est préférable de faire une copie texte du code, encadré de balises CODE (l'icone #).

  3. #3
    Membre régulier
    Femme Profil pro
    Directrice générale
    Inscrit en
    Mars 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Directrice générale
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2018
    Messages : 6
    Par défaut
    Bonjour Menhir

    Merci pour la réponse.

    Voici mon 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub Cmd_Copier()
     
        'Déclaration des variables
        Dim FormulaireTMIR As Worksheet
     
        'Initialisation des variables
        Set FormulaireTMIR = Sheets("FormulaireTMIR")
     
     
        Application.ScreenUpdating = False
     
     
        Workbooks.Open ("P:\NouveauCommun\19_ContactClient\E_TMIR\03_SuiviClients\SuiviTMIR_2017_2018.xlsm")
            ThisWorkbook.Activate
     
     
        Windows("SuiviTMIR_2017_2018.xlsm").Activate
        Sheets("Suivi_TMIR").Visible = True
        Sheets("Suivi_TMIR").Select
        ActiveSheet.Unprotect Password:="SAC"
        FormulaireTMIR.Activate
        FormulaireTMIR.Range("A6:M56").Select
        Selection.Copy
        'Application.DisplayAlerts = False
        Windows("SuiviTMIR_2017_2018.xlsm").Activate
        Range("A6").Select
    Debug.Print ActiveWorkbook.Name
    Debug.Print ActiveSheet.Name
        ActiveSheet.Paste
        ActiveSheet.Protect Password:="SAC"
     
        Application.Run "SuiviTMIR_2017_2018.xlsm!Transfert"
     
     
        Sheets("Suivi_TMIR").Visible = False
     
        FormulaireTMIR.Activate
        ThisWorkbook.Close Savechanges:=False
        Application.ScreenUpdating = True
    ' Application.DisplayAlerts = True
     
    End Sub

    Debug.Print ActiveWorkbook.Name --> SuiviTMIR_2018_2019.xlsm
    Debug.Print ActiveSheet.Name --> Suivi_TMIR

    La ligne en erreur est la ActiveSheet.Paste.
    C'est à ce moment que j'obtiens le message d'erreur
    Erreur d'exécution 1004: La méthode Paste de la classe Worksheet a échoué
    Ce que je ne comprends pas, c'est que le fichier fonctionnait sans erreur d'exécution auparavant.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je pense que c'est parce que ton Copy s'applique à une zone de cellule alors que tu essayes de coller un Worksheet.
    Tout ce qui se trouve entre Unprotect et Protect peut se faire en une seule ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormulaireTMIR.Range("A6:M56").Copy Workbooks("SuiviTMIR_2017_2018.xlsm").Worksheets("Suivi_TMIR").Range("A6")

  5. #5
    Membre régulier
    Femme Profil pro
    Directrice générale
    Inscrit en
    Mars 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Directrice générale
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2018
    Messages : 6
    Par défaut
    Ça fonctionne parfaitement.

    Merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/02/2015, 13h06
  2. Réponses: 1
    Dernier message: 18/11/2014, 16h00
  3. [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
  4. Réponses: 13
    Dernier message: 29/06/2007, 18h03

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