Bonjour à tous,

J'ai un fichier excel qui contient un tableau avec des données dans la feuille A.
Dessous, je possède 20 graphiques, pour les 20 lignes, représentant mes données.

Le code doit :
  • Récupérer le titre de chaque graphique, qu'il utilisera comme nom de fichier à sauvegarder
  • Sauver chacun des graphiques dans un dossier spécifié.
  • Insérer dans la feuille B l'image sauvée en commentaire pour être affichée au survol de la cellule représentative.


Voici le code qui fonctionne (ou du moins lors des tests sur 3-4 lignes).

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
Sub CMD_EXPORT_GRAPH_FCR()
Dim INT_I As Integer
 
Dim STR_IMAGE As String
Dim STR_FILENAME As String
Dim STR_SHEET As String
 
STR_SHEET = "Resume_2019"
 
For INT_I = 1 To 20
    STR_IMAGE = ActiveSheet.ChartObjects(INT_I).Chart.ChartTitle.Characters.Text
    STR_FILENAME = ThisWorkbook.Path & "\_Graphs\" & STR_IMAGE & ".png"
    ActiveSheet.ChartObjects(INT_I).Chart.Export STR_FILENAME
 
    With Sheets(STR_SHEET).Range("B" & 25 + INT_I)
        .ClearComments
        .AddComment.Text Text:=""
        .Comment.Shape.Fill.UserPicture (STR_FILENAME)
        .Comment.Shape.ScaleHeight 3, msoFalse, msoScaleFormTopLeft
        .Comment.Shape.ScaleWidth 3, msoFalse, msoScaleFromTopLeft
    End With
Next INT_I
 
 
End Sub
Le code en lui-même fonctionne, cependant lorsque j'arrive aux alentours de la 9ème itération, je reçois un message d'erreur de mémoire insuffisante (toujours à la hauteur de cette ligne de code : ".Comment.Shape.Fill.UserPicture (STR_FILENAME)".
J'ai executé l'application sur différentes machines et le problème est le même.

Une piste à m'indiquer afin de corriger le tir ?
A savoir que j'ai initialement ajouté les graphiques en commentaire à la main, ce qui me fait penser qu'il ne peut pas s'agir d'un problème de faisabilité (20 images au total ne me semble pas quelque chose de trop lourd, sauf erreur de ma part).

PS : Si vous avez une idée pour éviter de passer par la sauvegarde des images mais par la récupération directe de mes graph internes au fichier, je suis preneur aussi si toutefois c'est faisable ^^
Merci à tous pour vos retours

Edit 1 : Je viens de tester quelque chose : Si je fais tourner le code une première fois (et qu'il plante à la 9ème itération) et que je sauve. Si je ferme Excel (voire reboot) et que je modifie mon code en faisant la boucle "For INT_I = 9 to 20", il plante encore à l'itération 9 (la première donc), et donc n'avance pas plus loin. Le fait du reboot me laisse penser qu'il ne s'agit pas de soucis de clipboard (bien que je ne sauvais rien dedans dans mon code) mais un semblant de limite d'images dans l'excel via VBA (je rapelle qu'en mode manuel, j'avais su importer les 20 images en commetaire) ... ma piste semble bonne ?