Convertir plage cellule en image pour courriel

Jen - Modifié le 10 avril 2024 à 15:43
 Jen - 10 avril 2024 à 21:04

Bonjour,

Mon code ici copie une plage de cellule pour l'intégrer à un courriel. Tout fonctionne bien, mais j'aimerais convertir cette plage de cellule en image avec des dimensions que je pourrais ajuster. Quelqu'un peut m'aider ?

Merci à l'avance!

Sub EnvoyerEmail()
    
       
    Dim réponse As Integer
    
    réponse = MsgBox("Est-ce que votre application Outlook est ouvert?", vbYesNo, "Attention!")
    If réponse = vbNo Then
    MsgBox ("Vous devez ouvrir votre application pour continuer")
        Exit Sub
    End If
            
    Dim oOutlook As Object
    Set oOutlook = CreateObject("Outlook.Application")
    
    Dim oMail As Object
    Set oMail = oOutlook.CreateItem(0)
    
       
    With oMail
    
        Dim oObjetword As Object
        Set oObjetword = .GetInspector.WordEditor
        .To = ""
        .Subject = "Voici votre HORAIRE 2024-2025 : " & Range("B6").Value & " - " & Range("C6")
'       .Body = ""
        ActiveSheet.Range("A1:O12").Copy
        oObjetword.Range(0).Paste
        .Display
    End With
        Application.CutCopyMode = False
        Range("D6").Select
        

End Sub
A voir également:

1 réponse

Bruno83200_6929 Messages postés 282 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 23 octobre 2024 57
10 avril 2024 à 15:53

Bonjour,

Pour convertir une plage de cellules en image dans Excel VBA, vous pouvez utiliser la méthode ExportAsFixedFormat pour exporter la plage sélectionnée en tant que fichier image. Voici comment vous pouvez le faire dans votre code :

Sub EnvoyerEmail()

    Dim réponse As Integer
    réponse = MsgBox("Est-ce que votre application Outlook est ouverte?", vbYesNo, "Attention!")
    
    If réponse = vbNo Then
        MsgBox ("Vous devez ouvrir votre application pour continuer")
        Exit Sub
    End If
            
    Dim oOutlook As Object
    Set oOutlook = CreateObject("Outlook.Application")
    
    Dim oMail As Object
    Set oMail = oOutlook.CreateItem(0)
    
    With oMail
        Dim oObjetword As Object
        Set oObjetword = .GetInspector.WordEditor
        .To = ""
        .Subject = "Voici votre HORAIRE 2024-2025 : " & Range("B6").Value & " - " & Range("C6")
        .Body = ""
        ' Exporter la plage de cellules en tant qu'image
        ActiveSheet.Range("A1:O12").ExportAsFixedFormat Type:=xlTypePicture, Filename:="C:\Temp\Plage_Cellules.png", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        ' Insérer l'image dans le courriel
        oObjetword.InlineShapes.AddPicture "C:\Temp\Plage_Cellules.png", LinkToFile:=False, SaveWithDocument:=True
        ' Afficher le courriel
        .Display
    End With
    
    Application.CutCopyMode = False
    Range("D6").Select

End Sub
 

Dans ce code, la plage de cellules sélectionnée est exportée en tant qu'image au format PNG dans le répertoire C:\Temp\ avec le nom de fichier Plage_Cellules.png. Ensuite, l'image est insérée dans le corps du courriel à l'aide de la méthode InlineShapes.AddPicture. Assurez-vous de spécifier le chemin d'accès correct pour l'exportation de l'image. Une fois le courriel affiché, l'image sera visible dans le corps du courriel.

En espérant vous apporter la solution. Ca devrait fonctionner.

1

Merci beaucoup pour toute ces infos!

J'imagine que c'est impossible de seulement coller l'image dans le courriel sans l'enregistrer ?

0
Bruno83200_6929 Messages postés 282 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 23 octobre 2024 57 > Jen
10 avril 2024 à 16:16

Si vous souhaitez insérer l'image directement dans le corps du courriel sans enregistrer de fichier image, vous pouvez le faire en copiant la plage de cellules sous forme d'image dans le Presse-papiers, puis en collant cette image dans le corps du courriel. Voici comment vous pouvez le faire :

Sub EnvoyerEmail()

    Dim réponse As Integer
    réponse = MsgBox("Est-ce que votre application Outlook est ouverte?", vbYesNo, "Attention!")
    
    If réponse = vbNo Then
        MsgBox ("Vous devez ouvrir votre application pour continuer")
        Exit Sub
    End If
            
    Dim oOutlook As Object
    Set oOutlook = CreateObject("Outlook.Application")
    
    Dim oMail As Object
    Set oMail = oOutlook.CreateItem(0)
    
    With oMail
        Dim oObjetword As Object
        Set oObjetword = .GetInspector.WordEditor
        .To = ""
        .Subject = "Voici votre HORAIRE 2024-2025 : " & Range("B6").Value & " - " & Range("C6")
        .Body = ""
        ' Copier la plage de cellules comme une image dans le Presse-papiers
        ActiveSheet.Range("A1:O12").CopyPicture Appearance:=xlScreen, Format:=xlPicture
        ' Coller l'image dans le corps du courriel
        oObjetword.Range.Paste
        ' Afficher le courriel
        .Display
    End With
    
    Application.CutCopyMode = False
    Range("D6").Select

End Sub
 

Voilà. Pas de souci.

0
Jen > Bruno83200_6929 Messages postés 282 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 23 octobre 2024
10 avril 2024 à 16:22

Je vous remercie infiniment ! Je peux enfin clore mon projet ! Tout fonctionne à merveille. Je vais garder en note vos explications précieusement.

Bonne journée à vous!

1
Jen > Bruno83200_6929 Messages postés 282 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 23 octobre 2024
10 avril 2024 à 17:05

Dernière petite question, est-ce qu'il est possible donner à l'image une dimension spécifique ? :)

0
Jen > Bruno83200_6929 Messages postés 282 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 23 octobre 2024
10 avril 2024 à 21:04

C'est génial!! Je vous remercie beaucoup pour votre précieux temps ainsi que les explications. :)

Bonne fin de journée!

1