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 Paste : la méthode paste a échoué


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut Erreur Paste : la méthode paste a échoué
    Bonjour tout le monde.

    De manière aléatoire, lorsque je colle une image dynamiquement d'une feuille dans une autre, j'ai une erreur qui bloque mes traitement : "La méthode paste de l'objet worksheet a échoue".

    Si je rentre dans debugeur et que je fais "continuer", la plupart du temps, ça passe, mais le code a été bloqué.

    Je précise que les feuilles ne sont pas protégées et que les images existent bien sur la feuille source (COMMENTAIRES)

    Qu'est-ce que je fais mal :

    Code Excel : 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
            Workbooks(WClasseurSource).Sheets("COMMENTAIRES").Select
            Workbooks(WClasseurSource).ActiveSheet.Shapes("Image_DGAC").Select
            Selection.Copy
            Workbooks(WClasseurSource).Sheets(WNomFeuille).Select
            Cells(1, 1).Select
            Workbooks(WClasseurSource).ActiveSheet.Paste
            Workbooks(WClasseurSource).ActiveSheet.Shapes("Image_DGAC").Left = 1
            Workbooks(WClasseurSource).ActiveSheet.Shapes("Image_DGAC").Top = 1
            
            Workbooks(WClasseurSource).Sheets("COMMENTAIRES").Select
            Workbooks(WClasseurSource).ActiveSheet.Shapes("Image_SNARP").Select
            Selection.Copy
            Workbooks(WClasseurSource).Sheets(WNomFeuille).Select
            Cells(1, 15).Select
            Workbooks(WClasseurSource).ActiveSheet.Paste
            Workbooks(WClasseurSource).ActiveSheet.Shapes("Image_SNARP").Left = 610
            Workbooks(WClasseurSource).ActiveSheet.Shapes("Image_SNARP").Top = 0

    j'ai cherché sur le site, mais je n'ai rien trouvé qui corresponde a mon problème.

    Merci d'avance pour votre aide.
    Zeb'...

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Zebulon, bonsoir le forum,

    Peut-être comme ça :

    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
    Sub Macro1()
    Dim CS As Workbook 'déclare la variable CS (Classeur Source)
    Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
    Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
     
    Set CS = ThisWorkbook 'définit le classeur source CS (à adapter à ton cas)
    Set OS = CS.Worksheets("COMMENTAIRES") 'définit l'onglet source OS
    Set OD = CS.Worksheets("Blablabla") 'définit l'onglet destination OD (à adapter à ton cas)
    OS.Shapes("Image_DGAC").Copy 'copie l'image
    OD.Paste 'colle l'image dans OD
    OD.Activate 'active l'onglet OD
    Selection.Name = "Image_DGAC" 'renomme l'image sélectionnée dans OD
    OD.Shapes("Image_DGAC").Top = 1 'placement vertical
    OD.Shapes("Image_DGAC").Left = 1 'placement horizontal
    OS.Shapes("Image_SNARP").Copy 'copie l'image
    OD.Paste 'colle l'image dans OD
    OD.Activate 'active l'onglet OD
    Selection.Name = "Image_SNARP" 'renomme l'image sélectionnée dans OD
    OD.Shapes("Image_SNARP").Top = 1 'placement vertical
    OD.Shapes("Image_SNARP").Left = 610 'placement horizontal
    OD.Range("A1").Select 'sélectionne la celllue A1 de l'onget OD (pour désélectionner la dernière image)
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Bonjour et merci de ta réponse.
    J'ai essayé tout une partie de la mâtinée, je pensais que tu avais trouvé la solution, mais ça vient de recommencer.
    Je ne comprends vraiment pas d'où ça peut venir.
    Zeb'...

  4. #4
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    Moi non plus...
    À plus,

    Thauthème

    Je suis Charlie

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Avec VBA, il faut éviter les .Select, Selection, Activate, ....

    Essaies ce 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
    Option Explicit
    Sub Test()
    Dim wshDst As Worksheet
    Dim shpSrc As Shape
    Dim shpDst As Shape
     
      Set shpSrc = ThisWorkbook.Worksheets("COMMENTAIRES").Shapes("Image_DGAC")
      Set wshDst = ThisWorkbook.Worksheets("FeuilleCible")
      shpSrc.Copy
      wshDst.Paste
      Set shpDst = wshDst.Shapes("Image_DGAC")
      shpDst.Left = 1
      shpDst.Top = 1
      Set shpSrc = ThisWorkbook.Worksheets("COMMENTAIRES").Shapes("Image_SNARP")
      shpSrc.Copy
      wshDst.Paste
      Set shpDst = wshDst.Shapes("Image_SNARP")
      shpDst.Left = 640
      shpDst.Top = 1
     
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  6. #6
    Membre habitué
    Homme Profil pro
    Gestionnaire de projet dans le BTP
    Inscrit en
    Janvier 2017
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestionnaire de projet dans le BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2017
    Messages : 86
    Points : 134
    Points
    134
    Par défaut
    Quand on passe par le presse papiers, le processus échappe à Excel.
    Et Excel n'attends pas que ce soit fini : résultat le copy n'est pas forcément fini quand on demande le paste. D'où plantage aléatoire.

    Plus simplement, ceci peut peut-être marcher :
    wshDst.shapes.addshape (paramètres)
    set wshDst.shapes(sans doute la dernière de la collection) = shpSrc

  7. #7
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Merci.

    Pour le moment, nous avons décidé de désactiver les copier / coller des images car il y avait trop de plantages aléatoires.
    Ca fonctionnait 20, 30, 50 fois, puis ça se mettait à planter plusieurs fois.
    Bref...

    Je tâcherai de refaire des tests avec cette dernière solution et reviendrai mettre le résultat.
    Mais toutes les solutions testées à ce jours n'ont pas fonctionné à terme.
    Zeb'...

Discussions similaires

  1. [XL-2010] Mail par Excel 2010 : la méthode Chart.Paste a échoué
    Par MarcelG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2013, 10h29
  2. [XL-2000] Erreur 1004 méthode global a échoué
    Par Sierra dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2010, 22h21
  3. erreur 1004 'la méthode paste à échoué'
    Par zit_zit dans le forum Excel
    Réponses: 10
    Dernier message: 29/11/2008, 00h23
  4. Réponses: 3
    Dernier message: 16/11/2008, 00h30
  5. Erreur 1004: La méthode "Range" de l'objet "_global" a échoué
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/09/2008, 23h05

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