Pyramide des ages avec deux valeurs (% et nb)

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

  • Pyramide.xlsx
    56 KB · Affichages: 66
  • Pyramide.xlsx
    56 KB · Affichages: 79
  • Pyramide.xlsx
    56 KB · Affichages: 83

job75

XLDnaute Barbatruc
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

  • Pyramide(1).xls
    218 KB · Affichages: 50
  • Pyramide(1).xls
    218 KB · Affichages: 59
  • Pyramide(1).xls
    218 KB · Affichages: 56

job75

XLDnaute Barbatruc
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

  • Pyramide(2).xls
    219 KB · Affichages: 49
  • Pyramide(2).xls
    219 KB · Affichages: 54
  • Pyramide(2).xls
    219 KB · Affichages: 65
Dernière édition:

alexandre33260

XLDnaute Occasionnel
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.
 

Discussions similaires

Réponses
2
Affichages
401

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan