Pyramide des ages avec deux valeurs (% et nb)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alexandre33260

XLDnaute Occasionnel
Bonjour, je me suis amusé à faire une pyramide des âges et j’aimerais sur le même graphique représenter le résultat en pourcentage et en nombre, en fait, fusionner les deux tableaux du fichier joint. Je ne sais pas si cela est possible et surtout comment faire.
En fait, faire un peu comme axe principal et axe secondaire quand on réalise un graphique avec deux courbes.
Sur le fichier joint, la base de données avec les données en % et en nombre puis les deux graphiques.
Merci pour votre aide ou vos idées.
 

Pièces jointes

Re : Pyramide des ages avec deux valeurs (% et nb)

Bonjour alexandre33260, le forum,

Le code de la feuille "Base de données" (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Deactivate()
Application.ScreenUpdating = False
Graphe Graph3, [M3], "0"
Graphe Graph4, [I3], "0.0%"
End Sub

Sub Graphe(graph As Object, c As Range, fmt$)
Dim i As Byte, j
For i = 1 To 2
  With graph.SeriesCollection(i)
    .HasDataLabels = False 'RAZ
    For j = 1 To .Points.Count
      If IsNumeric(c(j, i)) Then
        If c(j, i) Then 'points <> 0
          .Points(j).HasDataLabel = True
          .Points(j).DataLabel.Text = Format(Abs(c(j, i)), fmt)
        End If
      End If
    Next
  End With
Next
End Sub
Les DataLabels sont les étiquettes de données.

Fichier joint.

Bonne journée et A+
 

Pièces jointes

Re : Pyramide des ages avec deux valeurs (% et nb)

Re,

Une solution à mon avis meilleure car elle ne passe pas par les cellules :

Code:
Private Sub Worksheet_Deactivate()
Application.ScreenUpdating = False
Graphe Graph3, Graph4, "0"
Graphe Graph4, Graph3, "0.0%"
End Sub

Sub Graphe(gr1 As Object, gr2 As Object, fmt$)
Dim i As Byte, tablo, d, j
For i = 1 To 2
  tablo = gr2.SeriesCollection(i).Values
  d = UBound(tablo) 'dimension
  With gr1.SeriesCollection(i)
    .HasDataLabels = False 'RAZ
    For j = 1 To .Points.Count
      If j <= d Then 'sécurité
        If tablo(j) Then 'points <> 0
          .Points(j).HasDataLabel = True
          .Points(j).DataLabel.Text = Format(Abs(tablo(j)), fmt)
        End If
      End If
    Next
  End With
Next
Edit : notez qu'avec cette solution il est inutile de tester par If IsNumeric(tablo(j)) Then.

Par contre il est prudent de vérifier que les séries ont bien les mêmes dimensions.

Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Pyramide des ages avec deux valeurs (% et nb)

Bonjour et merci job75. La solution est sympa, je ne pensais pas à cette solution.
Je pensais par exemple sur le premier graphique qui est en pourcentage, pouvoir afficher une abscisse avec les nombre mais en haut de graphique ou inversement pour le second graphique, les nombres en bas et les pourcentages en haut.
Et tout ça sans macro si possible.
Mais autrement, la solution proposé est très bien. Merci beaucoup.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour