[Excel 2007]Histogramme variable evolutif

Résolu
Bonjour,

Je sais que j'abuse beaucoup de ce forum, mais vous êtes tellement plus compétent que moi!!

Cette fois ci ma demande n'est pas seulement de la programmation. C est carrément un modèle de graphique que je voudrais inventé j'ai l'impression.

Cela consisterait en un histogramme au la hauteur des colonnes est définie par une variable. Et la largeur est définie par une autre variable ! alors que jusqu'à présent je n ai trouvé que le moyen de faire un colone par série, sans prendre en compte un axe des abscisse.

Ce que je veux faire ressemble un peu à un diagramme de Pareto, dans le concept.

Comme je suis nul pour expliquer les choses, voici ci joint un fichier(.xls) avec un tableau de données de base et le graphique que je voudrais obtenir (dessiner a la main).

http://www.cijoint.fr/cjlink.php?file=cj201012/cijPiWTD0F.xls

MErci pour votre patience !!!

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,
    Eh bien dans se cas vous devez supprimer l'ancienne série et la remplacer par la nouvelle.
    Vous avez l'exemple [Sub MAJ_Graph_Bulle(nbser As Long, lideb As Long)] dans le classeur [Pyvoudelet_ccm_bul.xlsm].

    Dans votre code il manque le code :
    .SeriesCollection.NewSeries 

    juste à la suite de la ligne
    With Sheets("Compare Products")........

    Note ne pas oublier de supprimer les anciennes séries ... !
    1. ok. jsutement je l avais supprimer en voulant passer outre la suppression de series. mais apparement c est inevitable.

      MErci bien.
  2. Bonjour,
    Ce que vous voulez faire n'est pas clair.
    Si les séries ne changent pas et que seul les valeurs changent alors le graphique se met à jour automatiquement (pas besoin de code).
    Exemple : toujours les composants n°1, 5, 6 et 9 et les valeurs (Cost) passent de 10,12,18 et 3% à 25,8,10 et 11%. Le graphique se met à jour automatiquement.

    Salutations.
    Le Pingou
    1. ben en fait ce qui change c est le nbre de composant (tjrs le meme probleme que mes autres posts) donc c est pour cela que je fais des plages qui varie (lideb1+nbser1, etc..)
  3. Bonjour à tous. Merci pour vos propositions.

    JE reviens vers vous car j ai un probleme avec une procedure que j ai ecrite pour tracer un graph en m inspirant d ,une procedur duPingou. Cette procedure est appellé dans une autre, et permet de mettre a jour le graph. mon but initial, n etait de ne pas forcement changer les series a chaque fois mais uniquement remettre a jour leur valeur.

    mais j ai un message d erreur " LA méthode "Xvalues" de l'objet "Series" a échoué" ....

    voila procedure en question:

    Sub MAJ_GraphA(nbser1 As Long, nbser2 As Long, lideb1 As Long)
    Dim c As Long
    ActiveSheet.Unprotect
    With Sheets("Compare Products").ChartObjects("Graphique 10").Chart

    .SeriesCollection(1).XValues = Sheets("Calcul 2.5").Range("D3:D" & lideb1 + nbser1)
    .SeriesCollection(1).Values = Sheets("Calcul 2.5").Range("G3:G" & lideb1 + nbser1)

    .SeriesCollection(2).XValues = Sheets("Calcul 2.5").Range("L3:L" & lideb1 + nbser2)
    .SeriesCollection(2).Values = Sheets("Calcul 2.5").Range("O3:O" & lideb1 + nbser2)

    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End With

    End Sub

    appellée par :

    Private Sub Worksheet_Calculate()
    Dim ser1 As Long, ser2 As Long
    ser1 = Sheets("Calcul 2.5").Range("A1")
    ser2 = Sheets("Calcul 2.5").Range("I1")

    MAJ_GraphA ser1, ser2, 3
    MAJ_GraphB ser1, ser2, 28
    MAJ_GraphC ser1, ser2, 53
    MAJ_GraphD ser1, ser2, 78

    End Sub

    (4 sous procédure pour 4 graphiques....)
    1. Bonjour Pyvoudelet,
      J'ai une idée qui me trotte dans ma tête, je regarde si c'est faisable, un peu de patience.
      1. Contributeur
        Bonjour.

        Tu as parfaitement cerné le problème : Il faudrait inventer un nouveau type de graphique ...

        Alors soumets ton souhait aux informaticiens-concepteurs de Microsoft Office.

        Nous autres, simples utilisateurs comme toi, nous ne pouvons rien !