Graphique dynamique

Bonjour,
Je souhaite réaliser un graphique en barre. En Ordonnées se trouve "la consommation d'aliment" et en Abscisse les semaines. Je souhaite que les barres correspondants aux semaines antérieurs soient en pointillées.
Je ne sais pas si je dois passer par un code VBA pour réaliser cela. Si oui, quelqu'un aurait-il une idée du code ?
Merci d'avance pour votre réponse.
Cordialement

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    Oui il faut passer par un code VBA de ce style :
    Sub pointilles()
    
    sem = Format(Date, "WW")
    ActiveSheet.ChartObjects("Graphique 1").Activate
    ActiveChart.SeriesCollection(1).Select
    With ActiveChart.SeriesCollection(1)
         For i = 1 To .Points.Count
            a = ActiveChart.SeriesCollection(1).XValues
                With .Points(i).Border
                If a(i) < sem Then .LineStyle = xlDash Else .LineStyle = xlContinuous
                End With
        Next
    End With
    End Sub

    Cdlmnt
    Via
    1. Bonjour,
      Merci pour cette réponse.
      Quels sont les éléments à changer dans cette formule pour qu'elle doit adaptée à mon fichier ?
      A quoi correspond "i" et "a" ?
    2. Bonjour

      i est l'indice de la boucle qui passe en revue tous les points de la série du graphique, il n'y a pas lieu de le changer
      De même a est un indice correspondant à la valeur en abscisse et a(2) renvoie la valeur de l’abscisse du point 2, donc rien à changer non plus

      En principe la seule chose à modifier si nécessaire c'est le nom du graphique s'il est différent dans ton fichier (ici "Graphique 1")

      Si tu avais posté un exemple de ton fichier sur mon-partage .fr, fait créé un lien, l'avoir copié puis collé ici d'ès le départ cela aurait été plus simple pour te proposer tout de suite la macro adaptée

      Cdlmnt
      Via


    3. Voici une image représentant un extrait de mon fichier.
      Je veux représenter ce tableau par un histogramme.
      Je souhaite que les données antérieures à la semaine actuelle soient en pointillées (ou transparents, peu m'importe, faut juste qu'elles soient représentées différemment que les données postérieures à la semaine actuelle.
      Merci de votre aide.
    4. Ce n'est pas une image qui peut être utile mais un extrait du fichier à poster selon la procédure indiquée précédemment sur le site de partage de fichier mon-partage.fr
    5. https://mon-partage.fr/f/PEpSJAgp/

      Voici le lien avec l'extrait de mon fichier
  2. Bonjour,

    Antérieur a quoi ?

    Crdlmt
    1. Antérieur à la semaine actuelle. Ce qui fait que chaque semaine mon graphique change
  3. Bonjour,

    Sinon, tu peux le faire sans macro, mais avec deux colonnes supplémentaires. Les numéros de semaine étant en colonne A et les conso en colonne B, en C2, à recopier vers le bas, mets :
    =SI(A2<NO.SEMAINE.ISO(AUJOURDHUI());B2;NA())
    et en D2 :
    =SI(ESTNA(C2);B2;NA()), à recopier vers le bas.
    Le graphique est construit sur les colonnes A, C et D.

    https://mon-partage.fr/f/mxfTUQ9V/

    Cordialement.

    Daniel
    1. Re

      Ton fichier avec macro en retour
      La macro se déclenche dès qu'on active la feuille Graph et met en transparence les semaines précédentes
      Elle est basée sur le n° de semaine en C1 du tableau (modifie C1 pour voir)
      https://mon-partage.fr/f/1OPPMTQ2/

      Cdlmnt
      Via
      1. Bonjour,
        Merci beaucoup pour cette solution qui fonctionne presque à merveille.
        J'ai adapté la formule VBA à mon fichier. Cela fonctionne. Cependant même si la macro fonctionne, j'ai toujours un message d'erreur "Erreur d'exécution 1004, Paramètre non valide". Je clique sur debug et le graphique apparaît comme je le souhaite.
        As tu une solution pour supprimer ce message d'alerte ?

        Merci d'avance
    2. Bonjour

      Sans ton fichier je ne peux rien dire
      Postes le sur mon-partage.fr et communiques moi le lien
      1. Voici le lien
        https://mon-partage.fr/f/ujDMsrkP/
    3. Il n'y a pas de macro dans le fichier que tu m'as envoyé ! donc pas de bug

      1. Oups... je n'ai pas enregistré le fichier avec la macro
        https://mon-partage.fr/f/4CqI39Zd/

        Le voici à nouveau
    4. Bon ce n'est pas grave
      Dans le 1er graphique il y avait 8 items pour chaque semaine du graphique, celui là n'en a plus que 6
      Il suffit donc de corriger la ligne dans la Marco transparence du Module 1 et remplacer :
      For n = 1 To 7
      par For n = 1 To 6

      Cdlmnt
      Via