IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier une plage de cellules dans une image et la coller dans Outlook [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 201
    Par défaut re
    re
    a ben vla que je fait les choses a l'envers maintenant
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub test()
    CopyOBJECTInImagePNG ActiveSheet.UsedRange.Resize(, [o1].Column), Environ("userprofile") & "\desktop\monimage.png"
    End Sub
     
    Function CopyOBJECTInImagePNG(ObjectOrRange, _
                                  Optional cheminx As String = "", _
                                  Optional transparency As Boolean = False) As String
        Dim Graph As Object
        If cheminx = "" Then cheminx = ThisWorkbook.Path & "\imagetemp.png" 'path du fichier par defaut
     
        With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text") 'on vide le clipboard entre chaque copie pour tester vraiment le available
        End With
     
        ObjectOrRange.CopyPicture 'Format:=IIf(Notransparency, xlBitmap, xlPicture)
        Set Graph = ObjectOrRange.Parent.ChartObjects.Add(0, 0, 0, 0).Chart
        Graph.Parent.ShapeRange.Line.Visible = msoFalse
        With Graph.Parent
            .Width = ObjectOrRange.Width: .Height = ObjectOrRange.Height: .Left = ObjectOrRange.Width + 20:
            .Select
            Do: DoEvents: .Chart.Paste: Loop While .Chart.Pictures.Count = 0
     
            With .Chart
                .ChartArea.Fill.Visible = msoTrue
                .ChartArea.Fill.Solid
                If transparency Then
                    If TypeOf ObjectOrRange Is Range Then
                          .ChartArea.Format.Fill.transparency = 0.1
                 Else:
                        .ChartArea.Format.Fill.transparency = 1
                         End If
                Else
                    .ChartArea.Format.Fill.transparency = 0
                End If
                .Export cheminx, Split(cheminx, ".")(1)
            End With
        End With
        Graph.Parent.Delete
        CopyOBJECTInImagePNG = cheminx
    End Function

  2. #2
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    en supprimant ce code, ça fonctionne aussi ...

    A qoui sert ce code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    '            If transparency Then
    '                If TypeOf ObjectOrRange Is Range Then
    '                    .ChartArea.Format.Fill.transparency = 1
    '                    Else:
    '                    .ChartArea.Format.Fill.transparency = 0.99
    '                End If
    '            Else
    '                .ChartArea.Format.Fill.transparency = 0
    '            End If

  3. #3
    Membre chevronné
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 201
    Par défaut re
    re
    oui mais ce n'est pas du vrai png
    c'est pas pour rien que je ne supprime pas le fillarea et le garde comme calque transparent
    sans ce code tu sauve avec le nom "blblbla.png" mais c'est un .jpg en fait
    allez pour faire bien les choses on change le switch
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub test()
    CopyOBJECTInImagePNG ActiveSheet.UsedRange.Resize(, [o1].Column), Environ("userprofile") & "\desktop\monimage.png"
    End Sub
     
    Function CopyOBJECTInImagePNG(ObjectOrRange, _
                                  Optional cheminx As String = "", _
                                  Optional transparency As Boolean = False) As String
        Dim Graph As Object
        If cheminx = "" Then cheminx = ThisWorkbook.Path & "\imagetemp.png" 'path du fichier par defaut
     
        With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text") 'on vide le clipboard entre chaque copie pour tester vraiment le available
        End With
     
        ObjectOrRange.CopyPicture 'Format:=IIf(Notransparency, xlBitmap, xlPicture)
        Set Graph = ObjectOrRange.Parent.ChartObjects.Add(0, 0, 0, 0).Chart
        Graph.Parent.ShapeRange.Line.Visible = msoFalse
        With Graph.Parent
            .Width = ObjectOrRange.Width: .Height = ObjectOrRange.Height: .Left = ObjectOrRange.Width + 20:
            .Select
            Do: DoEvents: .Chart.Paste: Loop While .Chart.Pictures.Count = 0
     
            With .Chart
                .ChartArea.Fill.Visible = msoTrue
                .ChartArea.Fill.Solid
                If transparency Then
                        .ChartArea.Format.Fill.transparency = 1
                    Else
                    .ChartArea.Format.Fill.transparency = 0.01
                End If
                .Export cheminx, Split(cheminx, ".")(1)
            End With
        End With
        Graph.Parent.Delete
        CopyOBJECTInImagePNG = cheminx
    End Function
    true si tu veux transparent rien si tu veux plein pour le 3eme argument

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Copier une plage de cellules dans un autre fichier
    Par Naoned005 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/04/2012, 17h02
  2. Copier une plage de cellule dans un autre fichier
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/04/2012, 21h31
  3. Copier une plage de cellules dans un fichier fermé
    Par COCONUT2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/07/2007, 17h23
  4. Copier une image jpg dans une cellule dun DrawGrid
    Par ero-sennin dans le forum Delphi
    Réponses: 13
    Dernier message: 10/07/2007, 15h57
  5. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo