Transformer une zone de texte en image jpg
Bonjour,
J'ai ce code qui me permet de créer une zone de texte
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 30, 30, 55, 30).Select
Selection.Name = "Ma_zone"
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 27
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Selection.Characters.Text = Range("F1").Text
With Selection.Characters(Start:=1, Length:=26).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 14
.Bold = True
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End WithJe n'arrive pas à centrer le texte mais ce n'est pas bien grave
Je voudrais à la suite de code transformer cette zone de texte en image jpg
est-ce possible svp?
Je vous remercie
Cordialement
Bonsoir Sylvainpyc,
Rajouter en fin de macro après le End With de ta macro
les lignes ci-dessous.
Note: la cellule B4 (ou tout autre cellule choisie) doit être à la taille de la zone de texte.
'Positionne la zone de texte sur la cellule de copie. Pour l'exemple en B4
Selection.Top = Range("B24").Top
Selection.Left = Range("B24").Left
Call ZoneImage
End SubEt Ajouter cette nouvelle macro
Sub ZoneImage()
'Caractèristiques
Dim objChrt As Chart
Dim rngImage As Range
Dim strFile As String
'Gestion erreur
On Error GoTo ErrExit
'Nom de la feuille (à modifier, ici pour exemple) ou se trouve la zone de texte
With Sheets("Resultats")
'Choisir la cellule ou est positionnée la zone de texte selon fin de 1ière macro
Set rngImage = .Range("B24")
'puis copie de la cellule contenant la zone de texte
rngImage.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
'Sous le dossier Images du disque C, Ici le dossier Images. Sinon changer par le chemin (Disque, dossier et sous-dossier) souhaité
strFile = "C:\Users\X Cellus\Pictures\CopieNote.jpg"
'Selon taille de la zone de texte
Set objChrt = .ChartObjects.Add(rngImage.Left, rngImage.Top, rngImage.Width, rngImage.Height).Chart
'Réalise l'export avec l'objet Chart
With objChrt
.Parent.Activate
.ChartArea.Format.Line.Visible = msoFalse 'Ligne du cadre non visible
.Paste
.Export strFile
.Parent.Delete
End With
End With
'Libère les objets
ErrExit:
Set objChrt = Nothing
Set rngImage = Nothing
End SubL'image CopieNote au format jpg sera visible dans le répertoire Images.
C'est super
Merci
Est-il possible svp de centrer le texte dans la zone de texte ?
Je vous remercie
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour,
As-tu essayé de voir avec l'enregistreur de macro ce que cela donne ?
Ca ne paraît pas être une tâche insurmontable et c'est un bon exercice pour progresser
Bonjour,
J'ai essayé avec l'enregistreur mais je n'arrive pas à adapter le code obtenu à mon code ???
Je vais réessayer
Merci
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
n'hésite pas à poster le code obtenu ;)
Voici mon code
Sub Ellipse3_Cliquer()
Dim t1 As Integer
Dim H%, HH, Mn As String
Dim s As Integer
Phrase = Range("a2").Value
Phrase = Replace(Phrase, " ", "00", 1): H = InStr(1, Phrase, "h") - 1
If IsNumeric(H) Then HH = Replace(Trim(Mid(" " & Phrase, H, 5)), "h", ":"): Mn = Right(HH, 2)
HH = Left(CStr(TimeValue(HH)), 5 + (Mn = "00") * 2)
HH = Replace(HH, ":", "h")
If Left(HH, 1) = 0 Then
HH = Right(HH, Len(HH) - 1)
End If
Select Case Len(HH)
Case Is = 5
t1 = 55
Case Is = 4
t1 = 50
Case Is = 3
t1 = 100
Case Is = 2
t1 = 35
End Select
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 30, 30, t1, 30).Select
Selection.Name = "Ma_zone"
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 27
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Selection.Characters.Text = HH
With Selection.Characters(Start:=1, Length:=26).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 14
.Bold = True
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
ActiveSheet.Shapes.Range(Array("Ma_zone")).Select
Selection.ShapeRange.TextFrame2.TextRange.ParagraphFormat.Alignment = _
msoAlignCenter
'Positionne la zone de texte sur la cellule de copie. Pour l'exemple en B4
Selection.Top = Range("B24").Top
Selection.Left = Range("B24").Left
Call ZoneImage
End SubJ'ai rajouté en fin de code le résultat obtenu avec l'enregistreur de macro
ActiveSheet.Shapes.Range(Array("Ma_zone")).Select
Selection.ShapeRange.TextFrame2.TextRange.ParagraphFormat.Alignment = _
msoAlignCenterCa ne bug pas mais ca ne centre pas non plus
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Supprime ce que tu as rajouté et ne garde que la ligne :
Selection.ShapeRange.TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenterEt tu la colles au milieu des autres lignes qui commencent par Selection.shaperange.....
Et ça fonctionne.
Je n'ai pas suivi, mais le code proposé par X cellus ne convient pas mieux que le tien ?
Edit : Oh, ce n'était qu'un complément. Le code proposé par Algoplus est mieux que ce qui a été généré par l'enregistreur de macro. Mais ça veut dire qu'il faut l'intégrer dans un nouveau with ... end with. Mais c'est comme ça qu'on progresse ;)
Bonjour à tous,
essayer:
With ActiveSheet.Shapes("Ma_zone").TextFrame
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End WithA+
Merci beaucoup
Ca fonctionne parfaitement, votre aide m'ait précieuse. Merci
Il ne me reste plus qu'à régler le début du code concernant la recherche d'une heure dans une chaine de caractère que j'ai exposé dans un autre sujet "Récupérer heure dans une chaîne de caractère d'une variable"
Merci encore à tous de votre aide
Cordialement