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.