Exportation cellules en jpeg via VBA

Bonjour à toutes et à tous !

Ceci étant mon premier message parmi vous, j'en profite pour remercier l'ensemble de la communauté ; j'ai en effet déjà trouvé pas mal de réponses dans le passé sur ces forums !

Je m'inscris aujourd'hui suite à un petit mystère qui je n'arrive pas à résoudre. Le but de mon opération est la conversion d'une plage de cellules Excel en jpeg, pour l'exporter dans le dossier de travail. J'ai trouvé un code de base que j'ai modifié à ma sauce pour qu'il fonctionne, et je dois dire que les résultats sont mitigés.

Chose qui me laisse perplexe, quand je lance le code en sélectionnant les cellules A1:A5, il fonctionne. Quand je sélectionne AA1:AD5, là ça plante, mais si je copie les données contenues dans AA1:AD5 en A1:AD5, il fonctionne parfaitement .. Vous comprendrez mes interrogations !

Je vous poste ci dessous mon code VBA :

Option Explicit
Sub Export_plage_jpeg()
' Archive les plages sélectionnées au format jpeg.
' Touche de raccourci du clavier : Aucune
    Static i As Integer ' Permet de créer des fichiers différents à chaque lancement sans écraser les autres
    Dim Source, wbk, gr As Variant
    Dim F_file As String
    Set Source = Selection
    Source.CopyPicture xlScreen, xlPicture
    Set wbk = ThisWorkbook
    F_file = "jpeg"
    Set gr = ActiveSheet.ChartObjects.Add(0, 0, Source.Width, Source.Height)
    gr.Chart.Paste ' LIGNE OU CA PLANTE §
    gr.Chart.Export wbk.Path & "\Cellules" & i & "." & F_file
    gr.Delete
    i = i + 1
End Sub

Le debuggeur me donne la fameuse erreur 1004 : erreur définie par l'application ou par l'objet.

Quelqu'un voit il la source de ce phénomène, qui m'échappe complètement ?

Je vous remercie d'avance pour votre aide

PS : Désolé pour l'absence de fichier exemple, je travaille sur des données strictement confidentielles, j'imagine que ça aurait peut être été plus simple pour vous avec le fichier d'origine ...

Bonjour et bienvenu(e)

Pas de souci particulier

Testé avec XL 2010 et XL 2013

Puisque le problème n'a pas l'air reproductible si facilement que ça, je poste un petit morceau de fichier. Je viens de tester, et le problème apparait. Lorsque l'on sélectionne les cellules A1:F5, aucun souci. Par contre quand on va les prendre en AA1:AC6 plus rien se passe comme il faut.

30classeur1.xlsm (15.45 Ko)

Bonjour

Je pense avoir trouver la cause du problème (le pourquoi je ne sais pas)

Il faut que la copie de la zone sélectionnée dans le graphique soit visible à l'écran

Moi j’essayais (pour plus de commodité) en masquant des colonnes entre les 2 zones, comme ça j'avais les 2 zones en visu direct

Et là ça fonctionnait impeccablement bien

J'allais te préparer un message pour t'indiquer qu'il y avait pas de soucis

Mais je suis dit allez un dernier test en affichant les colonnes masquées

Et badaboum plantage lorsque la sélection est AA1:AC6

Donc une solution

Modifies ta macro

Sub Export_plage_jpeg()
' Archive les plages sélectionnées au format jpeg.
' Touche de raccourci du clavier : Aucune
    Static i As Integer ' Permet de créer des fichiers différents à chaque lancement sans écraser les autres
    Dim Source, wbk, gr As Variant
    Dim F_file As String
    Set Source = Selection
    Source.CopyPicture xlScreen, xlPicture
    Set wbk = ThisWorkbook
    F_file = "jpeg"
    Set gr = ActiveSheet.ChartObjects.Add(Source.Left, Source.Top, Source.Width, Source.Height)
    gr.Chart.Paste
  '  gr.Chart.Export wbk.Path & "\Cellules" & i & "." & F_file
    'gr.Delete
    i = i + 1
End Sub

Alors là, je n'aurais jamais pensé à un truc comme ça. Effectivement, comme tu le dis, je ne comprends absolument pas le pourquoi du plantage, mais je dois dire que cela m'importe moins que la résolution du problème !

Merci beaucoup, je viens de modifier ma macro et tout fonctionne parfaitement !

Je te souhaite une bonne soirée, et encore merci pour ton efficacité

Rechercher des sujets similaires à "exportation jpeg via vba"