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 :

[VBA-E] exporter plage de cellules en gif


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 118
    Par défaut [VBA-E] exporter plage de cellules en gif
    Bonjour,

    J'ai testé la fonction proposée par Caféine ici, et tout fonctionne très bien, je l'ai un peu adaptée à ma sauce... je défini la plage (toujours la même) et sauve directement sans passer par la boîte de dialogue...

    Le seul petit hic, c'est que j'ai un bord blanc tout autour de mon image...

    J'ai donc suivi pas à pas et je vois que c'est au niveau de la zone graphique que se situe le "problème".

    Est-il possible d'avoir l'image seule, ou la copie juste au bord de la zone graphique ??

    J'ai essayé ça http://www.developpez.net/forums/showthread.php?t=14723, mais le rendu de l'image n'est pas pareil...

    Voici ce que ça donne...
    Classeur xls :


    Zone Graphique créée :


    Image Gif exportée : il y a la bordure en trait noir + une zone de blanc entre le bord de la zone graphique et l'image...


    Avec l'autre méthode : pas de bordure mais qualité moins bonne ! On voit que les textes en blanc, dans le haut, sont beaucoup moins nets!!


    Je ne sais pas trop s'il existe d'autres solutions ? si qlq à une idée?
    merci

    PS : voilà mon code...
    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
    Private Sub BtImage_Click()
     
    Dim r As Range
    Dim x As Integer, y As Integer
    Dim varFullPath As Variant
    Dim Graph As String
     
    Set r = Range("A2:AH30")
    r.Select
     
    ' copie de la plage en format image grâce à .CopyPicture
    Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
    x = Selection.Width
    y = Selection.Height
    ' on utilise l'objet Chart pour sa facilité d'export
    ' création du graphique
    Workbooks.Add (1)
    ActiveSheet.Name = "enGIF"
    Charts.Add
    ActiveChart.ChartType = xl3DArea
    ActiveChart.SetSourceData r
    ActiveChart.Location xlLocationAsObject, "enGIF"
    ' le graph n'est là que comme réceptacle de l'image, on le vide avec .ClearContents
    ActiveChart.ChartArea.ClearContents
    ' on colle l'image qui réside dans le presse papier
    ActiveChart.Paste
    ' redimensionnement
    ' on récupére le nom du graph de la collection Shapes
    Graph = Mid(ActiveChart.Name, Len(ActiveSheet.Name) + 1)
    ' on effectue un redimensionnement
    ActiveSheet.Shapes(Graph).ScaleWidth x / ActiveChart.ChartArea.Width, msoFalse, msoScaleFromTopLeft
    ActiveSheet.Shapes(Graph).ScaleHeight y / ActiveChart.ChartArea.Height, msoFalse, msoScaleFromTopLeft
     
    ActiveChart.Export (ThisWorkbook.Path & "\" & Replace(Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4), " ", "") & "_tempsdejeu" & Format(Now, "yyyymmddhhnn") & ".gif")
     
    ActiveChart.Pictures(1).Delete
    ActiveWorkbook.Close False
    Range("A3").Select
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as essayé de supprimer le fond de ta zone de graphique et de supprimer la bordure ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 118
    Par défaut
    en VBA ?? je ne sais pas trop ??

    Mais je l'ai fait manuellement, et la taille du graph reste pareil, donc quand on redimensionne pour exporter l'image, on le fait part rapport à la zone graphique.
    A mon avis ça ne changera pas la dimension, ça changera juste au niveau de la bordure noire qu'on ne verra plus...

    j'ai essayé de bidouiller un peu au niveau des lignes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' on effectue un redimensionnement
    ActiveSheet.Shapes(Graph).ScaleWidth x / ActiveChart.ChartArea.Width, msoFalse, msoScaleFromTopLeft
    ActiveSheet.Shapes(Graph).ScaleHeight y / ActiveChart.ChartArea.Height, msoFalse, msoScaleFromTopLeft
    Mais je n'ai pas tout saisi et je n'arrive pas à modifier la zone d'exportation...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne parlais pas des dimensions mais de la zone blanche autour de la plage de cellules.
    Pour les dimensions, je peux te passer un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        ActiveSheet.ChartObjects(NomDuGraph).Activate
        With Sheets(NomDeLaFeuille).DrawingObjects(NomDuGraph)
            .Placement = xlFreeFloating
            .Height = 338
            .Width = 273
            .Top = 385
            .Left = 390
            .Interior.ColorIndex = xlNone
            .Border.LineStyle = 0
        End With
    Tu supprimes les propriétés inutiles
    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 118
    Par défaut
    j'ai essayé...
    il n'y a plus de bordure noire, mais l'image sauvegardée conserve toujours le bord blanc...

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Et si tu donnes à ton "plotarea la taille de ton "drawingobjects"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        With Sheets(NomDeLaFeuille).DrawingObjects(NomDuGraph)
            .Height = 338
            .Width = 273
            With .PlotArea   'Zone de traçage
                .Height = Sheets(NomDeLaFeuille).DrawingObjects(NomDuGraph).Height
                .Width = Sheets(NomDeLaFeuille).DrawingObjects(NomDuGraph).Width
            end with
        End with
    Pas testé (...)

Discussions similaires

  1. VBA Effacer une plage de cellules
    Par monsterfab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2006, 17h18
  2. [VBA E]effacement plage de cellule
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/06/2006, 20h02
  3. [VBA-E]Selection plage de cellules variable
    Par julien5 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 14h51
  4. [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
  5. [VBA] Parcourir une plage de cellule
    Par Dinytro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2005, 08h18

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