VBA Excel : Echelles et légendes des axes des graphiques

VBA Excel : Echelles et légendes des axes des graphiques - VB/VBA/VBS - Programmation

Marsh Posté le 15-05-2004 à 15:51:15    

Bonjour à tous !
 
Je suis débutant en VBA et en ce moment, j'essaie de construire une pyramide des âges en VBA à partir de données contenues dans une feuille Excel mais là je suis vraiment coincé.
 
Pour créer cette pyramide, j'ai fait un petit peu de bricolage avec 2 graphs en barres pour obtenir quelque chose qui y ressemblait.
 
J'ai transporté, dans une autre feuille (la "feuil3" (voir code ci dessous)), les données correspondant à mon second graph et je les ai rendues négatives.
J'obtiens bien au final (après ajustements des positions des graphs) quelque chose ressemblant à une pyramide des âges mais il reste des problèmes liés aux étiquettes des axes et aux échelles.
 
En effet, l'axe des ordonnées me donne, comme légende (et donc comme ensemble d'étiquettes), le numéro des lignes et moi, ce que je veux, ce sont les valeur d'une certaine plage de cellules (ce sont des âges compris entre 18 et 65 ans). Je n'utilise que 2 séries (2 catégories de population). J'ai pu rectifier cela avec les menus d'excel (mettre la plage en source de valeur de l'axe des ordonnées) mais je veux le faire en VBA pour que ce soit automatisé.
 
Je tiens à préciser que j'ai déja essayé une bidouille qui consiste à transporter les données sur les lignes n°18 à 65. Mais voila, la numérotation sur l'axe reste la même. La seule différence, c'est qu'avant 18 ans, il y 17 blancs. Si jamais je décidais de les retirer, alors je perdrais les quelques blancs situés entre 18 et 65.
 
 
Sinon, autre problème, étant donné qu'un des 2 graphs possède des valeurs négatives, les étiquettes sont à l'intérieur, donc elles chevauchent les barres. J'aimerais pouvoir les supprimer ou, à la limite, les mettre à l'extérieur (j'ai pu le faire avec les menus grâce à la fonction "L'axe des ordonnées(Y) coupe à l'abscisse maximale" ).
 
Dernier problème, je voudrais pouvoir modifier les échelles, pour 2 raisons. Tout d'abord, les 2 graphs en barre n'ont pas la même échelle (sur l'axe des abscisses) à cause des différences de valeurs, ce qui rend la pyramide incohérente.
Deuxièmement, j'aurais aimé, pour pouvoir faire des comparaisons, avoir la possibilité de modifier les échelles.
 
Pour vous aider à y voir plus clair, je vous passe un petit bout de mon code (celui pour la pyramide). Ca ne vaut pas grand chose vu que je ne suis pas doué en programmation mais bon j'espère que ça vous aidera.
 
Dim ch2 As ChartObject
Set ch2 = Worksheets("Feuil2" ).ChartObjects.Add(0, 0, 270, 700)
ch2.Chart.ChartWizard Source:=Worksheets("Feuil3" ).Range("B2:C49" ), _
gallery:=xlBar, PlotBy:=xlColumns
ch2.Chart.PlotArea.Width = 270
ch2.Chart.HasLegend = False
 
Dim ch As ChartObject
Set ch = Worksheets("Feuil2" ).ChartObjects.Add(258, 0, 270, 700)
ch.Chart.ChartWizard Source:=Worksheets("Feuil3" ).Range("E2:F49" ), _
gallery:=xlBar, PlotBy:=xlColumns
ch.Chart.SeriesCollection(1).Name = "Technicien"
ch.Chart.SeriesCollection(2).Name = "Cadre"
ch.Chart.PlotArea.Width = 270
 
La plage que je veux mettre en source de données est (A1;A49).
 
Voila, j'espère que quelqu'un pourra m'aider sur ces points, ça fait déja un sacré bout de temps que je cherche sur le net sans aucune réponse. J'ai même acheté un livre mais il n'y avait pas ce dont j'avais besoin.
 
Je suis actuellement en stage en entreprise, c'est pourquoi je dois effectuer cela en VBA. Dernière précision : j'utilise Office 97.
 
Ce serait vraiment génial si quelqu'un pouvait m'aider un peu ou me mettre sur la voie.

Reply

Marsh Posté le 15-05-2004 à 15:51:15   

Reply

Marsh Posté le 16-05-2004 à 09:03:42    

Salut,
 
Tu devrais essayer de refaire toutes tes manips en faisant une nouvelle macro pour chaque étape (en valeur absolue et relative). Tu pourras ensuite exploiter le code qu'Excel te générera et l'aménager à ta sauce.
 
 

Reply

Marsh Posté le 16-05-2004 à 13:11:13    

Merci pour ta réponse !  
Alors ça veut dire que Excel peut générer le code des manips que l'on fait à partir des menus ?
 
Tout ce que je voulais en fait c'est savoir comment on modifie les étiquettes des axes, voire les sources des étiquettes des axes, ainsi que les échelles.

Reply

Marsh Posté le 16-05-2004 à 13:26:15    

AnAyalMaker a écrit :

Merci pour ta réponse !  
Alors ça veut dire que Excel peut générer le code des manips que l'on fait à partir des menus ?
 


 
--> Vi !
 
Pour savoir comment on modifie les étiquettes des axes, voire les sources des étiquettes des axes, ainsi que les échelles, fais une nouvelle macro et fais les manips sur ton graphe. Ca te donnera une base pour ton code que tu n'auras plus qu'à optimiser.

Reply

Marsh Posté le 16-05-2004 à 15:21:14    

Merci beaucoup ! Je vais faire comme ça !  
Tu es le premier qui ai pu me fournir un indice en 5 jours de recherches !
 
@++

Reply

Marsh Posté le 16-05-2004 à 16:05:53    

Y a pas de quoi sauf que je suis une nénette !!
 

Reply

Marsh Posté le 16-05-2004 à 19:28:19    

Ah? Autant pour moi alors...
 
Si je réussi, je te demanderai peut-être en mariage !  :lol:  

Reply

Marsh Posté le 16-05-2004 à 21:33:10    

Trop tard  :sol:

Reply

Marsh Posté le 20-05-2004 à 13:45:19    

Bon, je récris tard mais j'annonce que j'ai réussi grâce à toi Kanel !
 
Il reste juste un bug. L'axe des abscisses d'un de mes 2 graphs a des abscisses négatives. Mais je ne crois pas que l'on puisse y faire grand chose.
 
Merci encore !

Reply

Marsh Posté le 21-05-2004 à 09:14:25    

Si! Tu peux les rendre "positives" visuellement en changeant le format de nombre des cellules :
    Selection.NumberFormat = "###0;###0;###0"
 
A plus
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed