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 :

La méthode Paste de la classe WorkSheet à échoué


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Par défaut La méthode Paste de la classe WorkSheet à échoué
    Bonjour,

    j'obtiens le message d'erreur "erreur d'exécution '1004' : La méthode Paste de la classe WorkSheet à échoué":

    j'ouvre un classeur excel "Code.xlsx", j'incrémente la valeur située en case A5, je copie la valeur obtenue, je sauvegarde et ferme le classeur "Code.xlsx", je me repositionne sur le classeur "xxxx-date.xlsx" et souhaite coller la valeur dans la case A17.

    J'obtiens donc le message "erreur d'exécution '1004' : La méthode Paste de la classe WorkSheet à échoué" et l'erreur semble se situer sur:
    La partie de code (Erreur sur "Récupération code facture"):
    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
     
    Sub facture()
     
    Dim Chemin As String, Fichier As String, Code As String, Chemin2 As String
     
    'Chemin où se trouve le fichier à ouvrir
    Chemin = "C:\Users\XXXX\Desktop\Ent\Facture"
    Chemin2 = "C:\Users\XXXX\Desktop\Ent\"
     
    'Nom du fichier à ouvrir
    Fichier = "facture_client.xlsx"
    Code = "code.xlsx"
    Fichier2 = ThisWorkbook.Sheets("Clients").Range("B4") & "-" & Format(Date, "dd_mm_yy") & ".xlsx"
    Fichier_Client = ThisWorkbook.Sheets("Clients").Range("B4") & ".xlsm"
    MaLigne = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
     
    'Empêche le raffraichissement de l'écran
    Application.ScreenUpdating = False
     
    'Ouverture du fichier
    Workbooks.Open Chemin & "\" & Fichier
    Workbooks(Fichier).SaveAs Filename:=Chemin & "\" & Fichier2
     
    'Récupération code facture
    Workbooks.Open Chemin2 & "\" & Code
    Dim valeur As Integer
    valeur = Worksheets("Code").Range("A5").Value
    Worksheets("Code").Range("A5").Value = valeur + 1
    Worksheets("Code").Range("A5").Copy
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Windows(Fichier2).Activate
    Sheets("Feuil1").Range("A17").Select
    ActiveSheet.Paste
    Je pense que c'est tout con comme erreur, mais je ne vois pas ...

  2. #2
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Change dans un premier temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Feuil1").Range("A17").Select
    ActiveSheet.Paste
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Range("A17").PasteSpecial
    OU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim valeur As Integer
    valeur = Worksheets("Code").Range("A5").Value
    Worksheets("Code").Range("A5").Value = valeur + 1
    Worksheets("Code").Range("A5").Copy
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Windows(Fichier2).Activate
    Sheets("Feuil1").Range("A17").Select
    ActiveSheet.Paste
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Worksheets("Code").Range("A5").Value = Worksheets("Code").Range("A5").Value + 1
    Windows(Fichier2).Sheets("Feuil1").Range("A17").Value = Worksheets("Code").Range("A5").Value
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Windows(Fichier2).Activate

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Citation Envoyé par Al__22 Voir le message
    Change dans un premier temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Feuil1").Range("A17").Select
    ActiveSheet.Paste
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Range("A17").Paste
    Je me trompe peut-être, mais selon moi, la méthode Paste s'utilise sur un objet Worksheet. Pour un objet Range, il faut utiliser la méthode PasteSpecial.

  4. #4
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Je me trompe peut-être, mais selon moi, la méthode Paste s'utilise sur un objet Worksheet. Pour un objet Range, il faut utiliser la méthode PasteSpecial.
    En effet j'ai corrigé juste après

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Par défaut
    Merci à tous pour vos réponses.
    ça marche nickel, merci les gens

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Je ne réponds pas vraiment à la question, mais au lieu de faire un copier-coller pourquoi ne récupères-tu pas valeur à copier pour l'écrire dans la bonne cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim valeur As Integer
    Worksheets("Code").Range("A5").Value = Worksheets("Code").Range("A5").Value + 1
    valeur = Worksheets("Code").Range("A5").Value
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Windows(Fichier2).Activate
    Sheets("Feuil1").Range("A17").Value = valeur

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    evite le decoupage tout droit sorti de l'enregistreur de macro

    Tes donnees copiees dans un classeur disparaissent sous toutes vraisemblance au moment de la fermeture de ton classeur =]

    Essaie avec le plus direct


    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
    Sub facture()
     
    Dim Chemin As String, Fichier As String, Code As String, Chemin2 As String
     
    'Chemin où se trouve le fichier à ouvrir
    Chemin = "C:\Users\XXXX\Desktop\Ent\Facture"
    Chemin2 = "C:\Users\XXXX\Desktop\Ent\"
     
    'Nom du fichier à ouvrir
    Fichier = "facture_client.xlsx"
    Code = "code.xlsx"
    Fichier2 = ThisWorkbook.Sheets("Clients").Range("B4") & "-" & Format(Date, "dd_mm_yy") & ".xlsx"
    Fichier_Client = ThisWorkbook.Sheets("Clients").Range("B4") & ".xlsm"
    MaLigne = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
     
    'Empêche le raffraichissement de l'écran
    Application.ScreenUpdating = False
     
    'Ouverture du fichier
    Workbooks.Open Chemin & "\" & Fichier
    Workbooks(Fichier).SaveAs Filename:=Chemin & "\" & Fichier2
     
    'Récupération code facture
    Workbooks.Open Chemin2 & "\" & Code
    Dim valeur As Integer
    valeur = Worksheets("Code").Range("A5").Value
    Worksheets("Code").Range("A5").Value = valeur + 1
    Worksheets("Code").Range("A5").Copy Destination:=Workbooks(Fichier2).Sheets("Feuil1").Range("A17")
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

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

Discussions similaires

  1. [XL-2010] La méthode Paste de la classe Worksheet a échoué
    Par romain241192 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/07/2015, 18h40
  2. [XL-2010] La méthode Paste de la classe Worksheet a échoué
    Par FK_1509 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/04/2013, 10h01
  3. Méthode Select de la classe worksheet a échoué
    Par marinef dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/07/2009, 13h36
  4. La methode paste de la classe worksheet a échoué
    Par jean-paul lepetit dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/09/2007, 17h59
  5. Méthode Paste de la classe Worksheet a échoué
    Par cerberuspau dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/06/2007, 12h13

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