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 :

Macro Changer Plage de source Graphiques [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Par défaut Macro Changer Plage de source Graphiques
    Bonjour à Tous,

    Je cherche à créer une macro me permettant de :

    Sélectionner la plage B2:D2 de mon tableau en tant que source du graphique circulaire présent sur mon fichier excel, et exporter ensuite ce graphique en tant que fichier image.
    La macro doit ensuite se poursuivre pour changer la source du graphique en B3:D3 et enregistrer à son tour ce nouveau graphique en image
    Ensuite avec la plage B4:D4, puis B5:D5... et ainsi de suite.

    Mon fichier contient plus de 2000 lignes,

    J'ai réussi à créer une macro qui fonctionne mais sur laquelle je spécifie la plage variable sur chaque nouvelle ligne de ma procédure.

    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
    Sub ExportGraphenGIF()
    
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:D1,B2:D2"), PlotBy:=xlRows: ActiveChart.Export Filename:=Range("A2") & "_" & "Graph_Remu" & ".gif"
    
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:D1,B3:D3"), PlotBy:=xlRows: ActiveChart.Export Filename:=Range("A3") & "_" & "Graph_Remu" & ".gif"
    
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:D1,B4:D4"), PlotBy:=xlRows: ActiveChart.Export Filename:=Range("A4") & "_" & "Graph_Remu" & ".gif"
    
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:D1,B5:D5"), PlotBy:=xlRows: ActiveChart.Export Filename:=Range("A5") & "_" & "Graph_Remu" & ".gif"
    
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:D1,B6:D6"), PlotBy:=xlRows: ActiveChart.Export Filename:=Range("A6") & "_" & "Graph_Remu" & ".gif"
    
    'et ainsi de suite pour arriver à la ligne 2000'
    
    end sub
    Comment modifier ma macro pour que la plage dynamique et non pas entrée manuellement sur chaque nouvelle ligne de ma macro ?

    Merci pour toute aide qui me serait bien précieuse,

    Cdt

  2. #2
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Par défaut
    Pour info, j'avance (je crois...) mais mes fichiers gif générés sont tous les mêmes, si quelqu'un sait pourquoi ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ExportGraphenGIF()
    For i = 2 To 20
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:D1,Bi:Di"), PlotBy:=xlRows
    ActiveChart.Export Filename:=Range("A" & i) & "_" & "Graph_Remu" & ".gif"
    Next i
    End Sub

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu...!!!
    bonjour
    essaie ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'Voila mais sur 2000 lignes sa doit etre long
    For i = 1 To Sheets(1).Range("B65530").End(xlUp).Row
    nom = "graphique " & i & " de " & "B1,D1,B" & i & ",D" & i
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1,D1,B" & i & ",D" & i), PlotBy:=xlRows: ActiveChart.Export Filename:=nom & ".gif"
    ActiveChart.ChartArea.Select
        ActiveChart.Parent.Delete
    Next
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 3
    Par défaut
    Un Grand merci à toi, je m'arrache les cheveux depuis 3 jours sur cette macro !!!

    POur info au lieu de B1,D1 j'utilise B1:D1 car sinon la colonne C n'est pas récupérée dans mes Graphs...

    Voici mon code final qui fonctionne comme je le souhaite grâce à toi :-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ExportGraphenGIF()
    For i = 2 To 20
    NomGraphique = i & " Rému"
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:D1,B" & i & ":D" & i), PlotBy:=xlRows
    ActiveChart.Export Filename:=NomGraphique & ".gif"
    ActiveChart.ChartArea.Select
    Next
    End Sub
    J'ai remplacé le Sheets(1).Range("B65530").End(xlUp).Row par une valeur fixe (20) pour des raisons de tests (2000 lignes c'est effectivement un peu long, mais ça fonctionne), je ne souhaitais pas aller jusqu'au bas de ma liste pour tester, mais ta méthode fonctionne très bien.

    UN Grand grand Grand Merci encore...

    Julien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Macro modification des plages de données graphiques
    Par FP789 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/08/2013, 10h42
  2. [XL-2003] Source Graphique et plage avec dernière colonne inconnue
    Par TheFlow dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/08/2009, 16h50
  3. changer l'objet source d'un sous formulaire
    Par wag71 dans le forum IHM
    Réponses: 9
    Dernier message: 29/12/2006, 14h38
  4. Plage de données graphique
    Par pierrOPSG dans le forum Général VBA
    Réponses: 1
    Dernier message: 19/12/2006, 00h05
  5. Changer les données source d'un graphe en vba
    Par amka dans le forum Access
    Réponses: 11
    Dernier message: 30/08/2006, 10h39

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