[Catégorie modifiée VB6 --> VBA] CREATION GRAPHIQUE

RLAGUE Messages postés 5 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 2 juillet 2010 - 1 juil. 2010 à 12:09
RLAGUE Messages postés 5 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 2 juillet 2010 - 2 juil. 2010 à 08:33
bonjour a tous

voici mon probleme

je veux creer des graphiques en prenant des donnees dans un tableau. jusque là cela se passe bien! je n'arrive pas, une fois créé, a mettre en legende le bon libelle. de plus en cas de libelle vide et de valeur 0, la part de camenbert ne se met pas par contre la legende oui.

j espere avoir ete clair sinon je recommencerai. ci joint ce que j'ai deja fait.

merci beaucoup par avance


Dim plage As Range
Dim Nbre_Graphe As Byte

For g = Range("g65536").End(xlUp).Row To 1 Step -1

Set plage = Range("B" & g, "G" & g)
Charts.Add
With ActiveChart
.ChartType = xl3DPieExploded
.SetSourceData Source:=plage
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.Select
.SeriesCollection(1).Select
Selection.Explosion = 36

With ActiveSheet
.SeriesCollection(1).DataLabels.Select
Selection.ShowPercentage = True
Selection.ShowValue = False
Selection.Position = xlLabelPositionOutsideEnd

End With


End With

Next
End Sub

Rémy

8 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 juil. 2010 à 12:26
Salut
Pas clair
Si tu as 1000 lignes de données, tu veux créer 1000 graphiques ?
J'espère que non, ou alors j'espère que tu as de la mémoire sur ta machine !
C'est pourtant ce que tu tentes de faire avec la boucle For-Next

"je n'arrive pas (...) a mettre en legende le bon libelle"
Et où se trouve ce "bon libellé" ?

"en cas de libelle vide et de valeur 0, la part de camenbert ne se met pas"
Oui, ça me semble normal qu'une part de 0 n'affiche rien

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
RLAGUE Messages postés 5 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 2 juillet 2010
1 juil. 2010 à 12:35
merci beaucoup de t'interesser a mon cas

Si tu as 1000 lignes de données, tu veux créer 1000 graphiques ?
J'espère que non, ou alors j'espère que tu as de la mémoire sur ta machine !
C'est pourtant ce que tu tentes de faire avec la boucle For-Next
c'est bien ce que je veux faire mais je n'ai pas mis out le code pour ne pas surcharger le fil
en fait apres la creation du premier je call une macro qui supprime

"je n'arrive pas (...) a mettre en legende le bon libelle"
Et où se trouve ce "bon libellé" ?
dans un onglet de donnees. exemple

Compte Épargne CARAC Retraite Mutualiste du Combattant 44 728,23 € 19 013,21 € 0
Compte Épargne CARAC Retraite Mutualiste du Combattant Compte Épargne Obsèques 13 970,04 € 26 553,23 € 398,14 €


"en cas de libelle vide et de valeur 0, la part de camenbert ne se met pas"
Oui, ça me semble normal qu'une part de 0 n'affiche rien
oui mais la legende elle, s'affiche

merci encore

Rémy
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 juil. 2010 à 14:52
Pas compris ta logique de suppression.
Revois quand même cette histoire de boucle, ça me parait inutile puisque tu ne pourras pas afficher tous ces graphiques en même temps. Mieux vaudrait demander leur création individuellement, mais je ne connais pas ton contexte.

Le libellé d'un secteur se trouve normalement à gauche de la donnée.
Ton exemple n'est pas très détaillé, on ne sait pas où commencent et où finissent les données, ni celles qui te servent au graphique.

Oui, l'étiquette reste, c'est normal aussi de savoir qu'une des composante est nulle.
Non, on ne peut pas dissocier l'affichage ou pas des libellé en fonction de la valeur. Soit tu les affiches, soit tu ne les affiches pas.
0
RLAGUE Messages postés 5 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 2 juillet 2010
1 juil. 2010 à 14:56
merci

l'ideal eut été que je transmette le fichier excel mais je crois que l'on ne peut pas sur ce forum.

non? (je suis nouveau et non rompu aux regles d'utilisation)


Rémy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 juil. 2010 à 16:44
Pour joindre un fichier, il faut que celui-ci soit accessible par tous sur le net.
Des <solutions de stockage temporaires> existent

Mais le plus important est que tu saches expliquer ton problème. Avant de connaitre le langage VB, on a tous appris le français : utilisons-le.
0
RLAGUE Messages postés 5 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 2 juillet 2010
1 juil. 2010 à 17:11
merci

eh bien soit, je vais essayer d'expliquer

les donnees de depart sont sous forme de colonnes (6). les trois premieres donnent le nom d'un produit. les trois dernieres donnent des montants.
le nombre de lignes peut varier.(d'ou ma boucle)

1. je veux creer un graphique en secteur 3d reprenant les trois valeurs avec les les trois legendes. normalement ca c'est bon a l'exception des legendes qui m'affichent "1,2,3". le deuxieme probleme reside, sur cette partie, dans le fait que quand une des cellules "montant" est a zero. le code n'affiche pas la part correspondante du secteur mais affiche une legende. (pour moi, pas logique)

la suite de mon code, une fois le secteur terminé, exporte le graph en jpg


Sub Export_jpeg()
' Archive les graphiques du classeur au format gif
Dim F_file As String, ficG As String
Dim graph As Chart, wbk As Workbook

' Variables
Set wbk = ThisWorkbook
F_file = "jpeg"
' Desactive le rafraichissement d'écran
Application.ScreenUpdating = False

' Exporte les feuilles graphiques
For Each Shapes In Worksheet
'wbk.Charts
ficG = wbk.Path & "" & graph.Name & "." & F_file
graph.Export Filename:=ficG, FilterName:="jpeg"
Next Shapes

là sur l'export, pas de souci si ce n'est que je n'ai pas trouvé le moyen de redimentionner le graph avant l'export

la fin du code supprime le graph avant d'en creer un autre


Sub delete()
Dim Compteur As Integer, toto As String
Application.DisplayAlerts = False
For Compteur = Worksheets.Count To 1 Step -1
toto = Sheets(Compteur).Name
Select Case Nom
Case "feui12", "feui14", "rangement", "total"

Case Else
Sheets(Compteur).delete
End Select
Next Compteur
Application.DisplayAlerts = True
End Sub
voilou je pense ne rien avoir oublié. c'est tout.... pour le moment et merci encore
Rémy
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 juil. 2010 à 19:14
Ok, je comprends beaucoup mieux.
Par contre, ton format d'origine n'est pas vraiment standard : 3 libellés suivis de 3 valeurs : Difficile pour Excel de savoir que la valeur de la colonne 3 correspond au descriptif de la colonne 1, et ça, je ne pense pas qu'on puisse le lui dire.
Les camemberts ne fonctionnent que si les valeurs sont en dessous des libellés.

La seule solution que tu aies, est de recopier ces six cellules sur deux lignes dans une feuille de travail, et d'utiliser ces données comme source du graphe.

Profites-en pour palier à la "normalité" de Excel dont tu ne veux pas :
Lors de la recopie des données, si la valeur (colonne 4, 5 ou 6) est à zéro, ne la colle pas, comme ça ces données à 0 n'apparaitront pas dans ton graphe.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
RLAGUE Messages postés 5 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 2 juillet 2010
2 juil. 2010 à 08:33
bonjour jack et merci pour tes commentaires

je ne comprends pas une petite chose. quand tu dis

3 libellés suivis de 3 valeurs : Difficile pour Excel de savoir que la valeur de la colonne 3 correspond au descriptif de la colonne 1, et ça, je ne pense pas qu'on puisse le lui dire

la colonne 3 correspond au libelle de la colonne 4 (je ne sais pas si ca change grand chose, mais bon!

Les camemberts ne fonctionnent que si les valeurs sont en dessous des libellés.

comment se fait-il alors que quand on fait un secteur manuellement, avec des données en lignes, on y arrive?

pour terminer, as tu une idée pour redimensionner le graph avant son exportation? là je sèche

merci encore
Rémy
0