Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2011, 17h10   #1
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 0
Points : 0
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 :
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
julienbx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 17h56   #2
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 0
Points : 0
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 :
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
julienbx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 17h59   #3
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour
essaie ca
Code :
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/11/2011, 18h23   #4
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 0
Points : 0
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 :
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
julienbx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h28.


 
 
 
 
Partenaires

Hébergement Web