Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/09/2011, 16h59   #1
Invité de passage
 
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 3
Points : 3
Par défaut Une macro enregistrée renvoie une erreur

Bonjour,

J'ai enregistré une macro qui copie/colle un graphique

Code :
1
2
3
4
5
 
    ActiveSheet.ChartObjects("Graphique 1125").Activate
    ActiveChart.ChartArea.Copy
    Range("A56").Select
    ActiveSheet.Paste
et quand je l'exécute juste après, j'ai le message d'erreur suivant

Citation:
La methode paste de la classe worksheet a échoué
L'erreur est à la ligne "Activesheet.paste"

J'ai googleisé le truc mais je n'ai pas réussi à trouver un topic avec le problème sans même toucher à la macro enregistrée!

J'avoue que je ne sais pas trop quoi faire pour résoudre un truc pareil!

Merci d'avance

Excel 2010 pro 64bits
cailloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 17h30   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
Enlève la ligne 4 de ton code et re teste.

Sinon, le but étant de copier ton graphique et le placer en A56 de la même feuille?
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/09/2011, 17h36   #3
Invité de passage
 
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 3
Points : 3
J'ai essayé, même problème

Mon but est de copier coller le graphique en tant qu'image vers un autre onglet

J'ai testé:
pastespecial en tant qu'image vers autre onglet: bug
en tant que graph: bug
en tant qu'image vers meme onglet: bug
en tant que graph vers meme onglet: bug

et avec seulement ces 3 lignes

Code :
1
2
3
ActiveSheet.ChartObjects("Graphique 1125").Activate
    ActiveChart.ChartArea.Copy
    ActiveSheet.Paste
ça bug pareil
cailloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 17h40   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Pour copier le graphique nommé Graphique 1 de Feuil1 vers A56 de Feuil2 en tant qu'image (à adapter):
Code :
1
2
3
Application.ScreenUpdating = False
Worksheets("Feuil1").ChartObjects("Graphique 1").Copy
Worksheets("Feuil2").Range("A56").PasteSpecial
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/09/2011, 22h37   #5
Invité de passage
 
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 3
Points : 3
Je ne comprends pas

Code :
1
2
3
Worksheets("Accueil").ChartObjects("Graphique 1118").Copy
Worksheets("Sauvegarder (2)").Range("A32").PasteSpecial Format:="Image (PNG)", Link:=False, DisplayAsIcon _
        :=False
Citation:
Erreur définie par l'application ou par l'objet
Je ferme et réouvre le fichier

Citation:
La méthode Paste de la classe worksheets à échoué
Je relance la macro et là ça marche

Je relance, "La méthode..."
etc

???????????

en fait quoi que j'essaye, soit ça marche pas, soit ça ne marche pas à tous les coups ...

Code :
1
2
Worksheets("Accueil").ChartObjects.Item(1).CopyPicture
Worksheets("Sauvegarder (2)").Paste Destination:=Worksheets("Sauvegarder (2)").Range("A32")
ça ça marche ... parfois ...

le seul élément que je vois c'est que les graphiques changeraient d'ordre ou de nom au fur et à mesure qu'on lance la macro
cailloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 09h04   #6
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
bonjour,

Citation:
("Graphique 1118")
tu as combien de graphs ?

As-tu essayé sur un classeur vierge avec juste ce qu'il faut pour un graph voir si le comportement est identique ?


la limitation aux nombre de graph sous 2010 est la mémoire sinon je crois.

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 13h38   #7
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour

la solution serais de enregistrer le graph en tant qu'image sur le disque dur

et de mettre l'image dans le sheet de destination

tu a divers exemple dans les contributions

un peu de recherche et tu trouvera


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 21h47   #8
Invité de passage
 
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 3
Points : 3
alors alors

Ormonth: mon 1er message du topic, c'est avec un classeur vide, et ça me le fait à tous les coups! j'enregistre ma macro de copié collé de graph et paf erreur. Donc même si mon problème réel n'est pas celui la, ça reste surprenant ce truc!
Pour le nombre de graph je ne sais pourquoi il a numéro si élevé, j'ai une macro qui modifié mes graph, peut etre que ça incrémente à chaque fois, mais là je viens de faire le test sur Excel 2010 et ça n'a pas incrémenté, bref.

patricktoulon: finalement le soucis n'est pas là ou je pensais mais merci pour l'idée

Au départ mon fichier est développé en excel 2003, et c'est en faisant un test de compatibilité avec excel 2010 que ça a commencé à merder

Il s'avère que le soucis n'est pas là ou je pensais et je vous ai un peu fait bosser pour rien

Sur 2003, il me disait "impossible de vider le presse papier" au moment de copier le graph, j'avais donc rajouté une fonction vidage de presse papier trouvé sur ce même forum

Code :
1
2
3
4
5
6
7
8
9
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
 
Private Sub Commande0_Click()
    OpenClipboard Me.hwnd
    EmptyClipboard
    CloseClipboard
End Sub
en passant à excel 2010 64bits, ça ne marchait plus

J'ai cherché autre chose et j'ai mis

Code :
application.cutcopymode=false
Pour Excel2003 c'était bon, pour 2010 c'était toujours pas bon mais l'erreur n'était plus la même, cette fois c'était "la méthode paste de la classe worksheets à échouée", j'ai donc cherché dans cette direction mais finalement il s'avère que le soucis viens de la ligne application.cutcopymode=false puisque ça marche maintenant que je l'ai (enfin) enlevée...............

Je pars donc à la recherche d'une solution pour ça
Pourquoi pas une detection de la version d'Excel avec un if sur la ligne qui pose problème
cailloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 09h29   #9
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
à défaut de faire perdre du temps aux autres, tu as du en perdre bien plus, d'où l'intérêt de ne pas se précipiter

surtout que tu, surement, donnais l'élément principal de ta solution pour peu que tu fournisses le bon contexte.

Citation:
Excel 2010 pro 64bits
voir ce sujet

http://www.developpez.net/forums/d96...its-grr-rr-rr/

Si on est Api-culteur, il faut butiner partout...

Arkham46 nous a fait un tuto d'ailleurs : Développer avec Office 64 bits


cordialement,

Didiier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 09h02   #10
Invité de passage
 
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 3
Points : 3
Voila comme ça ça marche sur 2003 32bits et 2010 64bits

Code :
1
2
3
4
5
6
7
8
If Win64 Then
Else
Application.CutCopyMode = False
End If
 
'Copier le graphique et le coller dans le nouvel onglet
Worksheets("Accueil").ChartObjects.Item(num_moteur).CopyPicture
Worksheets("Sauvegarder (2)").Paste Destination:=Worksheets("Sauvegarder (2)").Range("A32")
Je n'ai pas de 2010 32bits pour tester, mais à priori mon fichier ne sera pas utilisé dessus.

Merci pour votre aide

J'indique résolu
cailloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h40.


 
 
 
 
Partenaires

Hébergement Web