Erreur d'exécution 1004 qui apparait d'un coup

Ewigefrost

XLDnaute Junior
Bonjour !

J'ai un problème avec une macro qui avait toujours très bien marché jusque là ...
Lorsque je change une cellule dans une des 2 feuilles "TCD ALU" et "TCD ACIER", le classeur doit s'exporter en HTM, s'enregistrer en XLS et également exporter la plage de O2 à X37 de la feuille "TCD ALU" en JPG. De plus, une image de la date de l'enregistrement est exportée en JPG.

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Sheets("Date").[B2] = Now
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim DernièreLigne As Long
DernièreLigne = [V65536].End(xlUp).Row
wshSheets = [{"TCD ACIER", "TCD ALU"}]
If Not IsError(Application.Match(Sh.Name, wshSheets, 1)) Then
With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
"C:\blabla\test.htm" _
, "TCD ALU", "$N$2:$X$" & DernièreLigne, xlHtmlStatic, "Suivi Prod_2012_S05_21297", "")
.Publish (True)
.AutoRepublish = True
End With
Dim shp As Shape
With Sheets("date")
.Range("B2").CopyPicture xlScreen, xlBitmap
'Créer un graphique qui contiendra l'image et l'exporter en tant qu'image .jpg
With .ChartObjects.Add(0, 0, .Range("B2").Width, .Range("B2").Height).Chart
.Paste
.Export ThisWorkbook.Path & "\date.png", "PNG"
End With
'Supprime le graphique
.ChartObjects(Sheets("date").ChartObjects.Count).Delete
End With

With Sheets("TCD ALU")
ActiveWindow.Zoom = 110
.Range("O2:X37").CopyPicture xlScreen, xlBitmap
'Créer un graphique qui contiendra l'image et l'exporter en tant qu'image .jpg
With .ChartObjects.Add(0, 0, .Range("O2:X37").Width, .Range("O2:X37").Height).Chart
.Paste
.Export ThisWorkbook.Path & "\test1.jpg", "JPG"
End With
'Supprime le graphique
.ChartObjects(Sheets("TCD ALU").ChartObjects.Count).Delete
End With


ActiveWorkbook.Save
End If
End Sub

Mais maintenant, lorsque je change une cellule dans une des 2 feuilles concernées, ça m'affiche :

Erreur d'exécution '1004' :

Erreur définie par l'application ou par l'objet

et ça me surligne la ligne que j'ai coloré en rouge sur mon code.

J'ai redémarré le PC, changé l'ordre des "With" et "End With" mais ça me le fait toujours, je ne sais plus quoi faire ...

Pourriez-vous me donner des pistes SVP ?

Merci !
 

Ewigefrost

XLDnaute Junior
Re : Erreur d'exécution 1004 qui apparait d'un coup

J'aimerais juste rajouter que lorsque la macro s'exécute, il y a tout de même un rectangle blanc qui s'affiche sur ma feuille (correspondant au graphique vide je pense).

Et lorsque j'exécute plusieurs fois la macro, les rectangles se superposent. Peut-être cela peut m'aider à trouver d'où le problème vient ?
 

Ewigefrost

XLDnaute Junior
Re : Erreur d'exécution 1004 qui apparait d'un coup

Bonjour tototiti, merci pour votre réponse.

En fait, toutes les colonnes de A à K fonctionnent, mais à partir de L ça fait erreur 1004 ...

Je remarque que sur les colonnes A à K se trouve un TCD, puis sur les autres colonnes jusqu'à W se trouve un tableau normal, mais je ne vois pas pourquoi ça créerait une erreur, sachant que ça a toujours très bien marché jusque là !

Merci d'avance !

PS: le fichier sur lequel je travaille est confidentiel, je ne peux donc pas le partager.
 

tototiti2008

XLDnaute Barbatruc
Re : Erreur d'exécution 1004 qui apparait d'un coup

Re,

PS: le fichier sur lequel je travaille est confidentiel, je ne peux donc pas le partager.

Oui, mais ça limite grandement notre visibilité
Un coup à l'aveugle pour voir : essaye d'exécuter seulement
.Range("O2:X37").CopyPicture xlScreen, xlBitmap
puis de coller à la main (Ctrl+C) pour voir ce qui est collé ?
après ça, je range ma canne blanche...
 

Ewigefrost

XLDnaute Junior
Re : Erreur d'exécution 1004 qui apparait d'un coup

Re,

Je ne peux pas exécuter seulement, vu que ma macro est placée dans "ThisWorkbook", à moins que je n'aie pas bien compris ce que vous vouliez dire par exécuter seulement ?

J'ai copié/collé à la main pour voir ce qui se passe :

-lorsque je colle sur la même feuille, le tableau est vide (ainsi que les graphes qui vont avec)
-lorsque je colle sur une autre feuille, j'ai un "avertissement de référence circulaire"
-lorsque je colle sur un PPT, tout s'affiche correctement

De plus, je ne l'ai pas précisé mais mon tableau contient des formules sur l'ensemble des cellules.

Je vais essayer de voir ce que ça fait lorsque je copie ma macro sur une copie de ce fichier datant d'il y a quelques semaines, merci pour votre aide ! ;)
 

Ewigefrost

XLDnaute Junior
Re : Erreur d'exécution 1004 qui apparait d'un coup

Bon j'ai essayé sur l'autre fichier et ça fait pareil, je ne comprends vraiment pas comment c'est possible ...

Du coup, j'ai pensé à une bidouille pour contourner le problème : placer un offset sur le range du CopyPicture, mais du coup il faut que je crée une plage avec un nom, et qui serait définie par le range et par l'offset.

Mais après est-ce que c'est possible d'écrire quelque chose comme :
.nomdelaplage.CopyPicture xlScreen, xlBitmap

au lieu de
.Range("O2:X37").CopyPicture xlScreen, xlBitmap

?
 

Ewigefrost

XLDnaute Junior
Re : Erreur d'exécution 1004 qui apparait d'un coup

Bon alors je viens d'observer un autre truc bizarre dans la macro. Lorsque j'écris :
.Range("O2:X37").CopyPicture xlScreen, xlBitmap
With .ChartObjects.Add(0, 0, .Range("K2:X37").Width, .Range("K2:X37").Height).Chart

au lieu de

.Range("O2:X37").CopyPicture xlScreen, xlBitmap
With .ChartObjects.Add(0, 0, .Range("N2:X37").Width, .Range("N2:X37").Height).Chart

ça fonctionne bien, sauf que bien sûr l'image est trop large du coup.

Mais là c'est donc clairement un problème de propriétés de hauteur et de largeur non ? D'où est-ce que ça peut venir ? Largeur des colonnes trop importantes peut-être ?

PS: j'espère que ça ne dérange pas si je crée un message toutes les 10 minutes. Mais ça permet au moins de bien dissocier les étapes de ce que je fais ;).

Edit : la largeur des colonnes n'a pas d'influence sur le problème ... Je ne vois vraiment pas pourquoi ça bug comme ça !
 
Dernière édition:

Discussions similaires