Exporter le contenu d'une cellule Excel en image JPEG
Bonjour,
Je cherche une solution pour exporter en image JPEG le contenu d'une cellule excel dans laquelle je met en forme un code barre 128 C à partir d'un nombre à 12 chiffres.
Merci d'avance pour votre aide
Bonjour Dom38, le forum,
Voici une macro qui te montrera la démarche.
Vérifier et régler les hauteur et largeur du graphique temporaire créé.
Tu as interêt à centrer Verticalement et horizontalement le contenu de la cellules.
Sub CelluleToJpeg()
With Feuil1
'Copie la cellule en tant qu'image
.Range("A1").CopyPicture
'Créer un graphique temporaire
With .ChartObjects.Add(Cells(1, 1).Left, Cells(1, 1).Top, Cells(1, 1).Width + 8, Cells(1, 1).Height + 8).Chart
'Y passe l'image
.Paste
'Exportation dans le répertoire du fichier xl
.Export ThisWorkbook.Path & "\monImage.jpg", "JPG"
End With
'Supprimer le graphique temporaire
.ChartObjects(Feuil1.ChartObjects.Count).Delete
End With
End SubA bientôt
Bonjour,
Si tu disposes d'une version 2003 ou ultérieure, je te conseille l'appareil photo, puis coller dans PowerPoint et clic droit - enregistrer en tant qu'image.
Cordialement,
Bonjour,
Même solution que celle proposée par VElbie mais en la collant dans un logiciel photo genre IRFANVIEW plutôt que directement dans POWERPOINT pour éviter les pb de résolution si la photo devait être utilisée ailleurs.
Attention également que coller un photo en direct dans Powerpoint peut augmenter le poids du fichier Powerpoint de manière considérable. Le mieux est d'utiliser INSERTION / IMAGE ou INSERTION / OBJET.
Amicalement
Dan
hasco a écrit :Bonjour Dom38, le forum,
Voici une macro qui te montrera la démarche.
Vérifier et régler les hauteur et largeur du graphique temporaire créé.
Tu as interêt à centrer Verticalement et horizontalement le contenu de la cellules.
Sub CelluleToJpeg() With Feuil1 'Copie la cellule en tant qu'image .Range("A1").CopyPicture 'Créer un graphique temporaire With .ChartObjects.Add(Cells(1, 1).Left, Cells(1, 1).Top, Cells(1, 1).Width + 8, Cells(1, 1).Height + 8).Chart 'Y passe l'image .Paste 'Exportation dans le répertoire du fichier xl .Export ThisWorkbook.Path & "\monImage.jpg", "JPG" End With 'Supprimer le graphique temporaire .ChartObjects(Feuil1.ChartObjects.Count).Delete End With End SubA bientôt
Bonjour hasco,
Merci tout d'abord pour ton aide. Ta solution me semble la plus adaptée pour ce que je veux faire. En effet j'ai quelques centaines de codes barre en image JPEG à générer. Dans mon fichier excel sur la feuille 1 que j'ai renommé en "base de données", j'ai tous les chiffres dont je dois générer mes codes barre. Je vais les lire 1 par 1 à l'aide d'une boucle. La feuille 2 que j'ai renommé "code barre" me sert à mettre en forme le code barre dans la cellule A1 à l'aide de la police BCW_Code128C_1.
Voici ton code que j'ai tapé.
Sub Code_barre_jpeg()
With Feuil2
'copie la cellule en tant qu'image
Range("A1").CopyPicture
' Créer un graphique temporaire
With .ChartObjects.Add(Cells(1, 1).Top, Cells(1, 1).Width + 8, Cells(1, 1).Height + 8).Chart
.Paste
.Export ThisWorkbook.Path & "\monimage.jpg", "JPG"
End With
End With
End Sub
Mais quand j'arrive à la ligne :
With .ChartObjects.Add(Cells(1, 1).Top, Cells(1, 1).Width + 8, Cells(1, 1).Height + 8).Chart
J'ai le message
"Erreur d'execution "449"
Argument non facultatif.
Peux-tu m'aider de nouveau STP.
Peux-tu également me détailler la syntaxe de cette phrase:
With .ChartObjects.Add(Cells(1, 1).Top, Cells(1, 1).Width + 8, Cells(1, 1).Height + 8).Chart
pour que je puisse comprendre ce qu'elle fait.
En te remerciant par avance pour ton aide précieuse.
A bientôt.
Dom38
Bonjour Dom,
Voici un type de boucle que tu peux éventuellement adapter:
Sub CelluleToJpeg()
Dim i As Integer
Dim oChart As Chart
With Feuil1
'Créer un graphique temporaire
For i = 1 To 4
'Copie la cellule en tant qu'image
.Range("A" & i).CopyPicture
With .ChartObjects.Add(Cells(i, 1).Left, Cells(i, 1).Top, Cells(i, 1).Width + 8, Cells(i, 1).Height + 8).Chart
'Y passe l'image
.Paste
'Exportation dans le répertoire du fichier xl
.Export ThisWorkbook.Path & "\monImage_" & i & ".jpg", "JPG"
End With
'Supprimer le graphique temporaire
.ChartObjects(Feuil1.ChartObjects.Count).Delete
Next
End With
End SubTu as oublié un argument.
Extrait de l'aide en ligne sur la méthode Add de ChartObjects
Il n'y a que 4 arguments.(Excel 2002):
'.ChartObjects.Add(Left, Top, Width, Height)
'Left, Top Argument de type Double obligatoire. Coordonnées initiales du nouvel objet (en points), par rapport au coin supérieur gauche de la cellule A1 d'une feuille de calcul ou du coin supérieur gauche d'un graphique.
'Width, Height Argument de type Double obligatoire. Taille initiale du nouvel objet, en points.
Je ne sais pas ce que tu comptes en faire ensuite mais cela risque d'être long sur plusieurs centaines d'images.
Ne serait-il pas préférable de les imprimer dans un fichier pdf au moyen d'une imprimante virtuelle pdf style PdfCreator après avoir défini ta zone d'impression?
Ou de les imprimer sur des étiquettes?
A+
A+