XL 2016 VBA - Mise à jour dynamique des graphiques

Heodrene

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous,

J'aimerais à partir du classeur ci-joint automatiser l'algorithme suivant :

SI (année en cours & "S" & semaine en cours) > dernière valeur de l'abscisse) ALORS
(dernière valeur de l'abscisse) = (année en cours & "S" & semaine en cours)​
FIN SI

Faire de même avec les valeurs en ordonnées.

L'idée est d'automatiser la mise à jour du graphique au fur et à mesure que les semaines s'écoulent sans être obligé d'éditer à la main les données pour incrémenter chaque semaine les plages de valeurs.

Le fichier joint est livré sans code macro, c'est normal ;)

Merci de votre aide,

Héodrène
 

Pièces jointes

  • Mise à jour automatique graphique.xlsm
    186 KB · Affichages: 11
Solution
Bonsoir Heodrene, Modeste geedee, chris,

Voyez le fichier joint, la formule volatile en E2 permet de lancer cette macro :
Code:
Private Sub Worksheet_Calculate()
Dim ligmini&, nbsem&, dat As Date, sem$, ligfin As Variant, ligdeb&, P As Range, n As Byte
ligmini = 22 'modifiable
nbsem = 34 'modifiable
dat = Date 'modifiable pour tester
sem = Year(dat) & "S" & Format(Application.WeekNum(dat), "00")
ligfin = Application.Match(sem, [A:A])
If IsError(ligfin) Then ligfin = ligmini
ligdeb = ligfin - nbsem + 1
If ligdeb < ligmini Then ligdeb = ligmini
Set P = Range("A" & ligdeb & ":A" & ligfin)
With ChartObjects(1).Chart
    For n = 1 To 3
        .SeriesCollection(n).XValues = P
        .SeriesCollection(n).Values = P.Offset(, n)...

Modeste geedee

XLDnaute Barbatruc
Bonsour®
B

L'idée est d'automatiser la mise à jour du graphique au fur et à mesure que les semaines s'écoulent sans être obligé d'éditer à la main les données pour incrémenter chaque semaine les plages de valeurs.
déjà un peu de cohérence ...
calculer le numéro de semaine dynamiquement
=ENT(MOD(ENT((unedate-2)/7)+3/5 ; 1461/28))+1
pour cela utiliser des dates...
ne pas afficher le cumul réalisé pour les dates non échues !!!
ensuite l'utilisation de la fonction DECALER permettra de ne prendre en compte automatiquement que les lignes concernées
 

job75

XLDnaute Barbatruc
Bonsoir Heodrene, Modeste geedee, chris,

Voyez le fichier joint, la formule volatile en E2 permet de lancer cette macro :
Code:
Private Sub Worksheet_Calculate()
Dim ligmini&, nbsem&, dat As Date, sem$, ligfin As Variant, ligdeb&, P As Range, n As Byte
ligmini = 22 'modifiable
nbsem = 34 'modifiable
dat = Date 'modifiable pour tester
sem = Year(dat) & "S" & Format(Application.WeekNum(dat), "00")
ligfin = Application.Match(sem, [A:A])
If IsError(ligfin) Then ligfin = ligmini
ligdeb = ligfin - nbsem + 1
If ligdeb < ligmini Then ligdeb = ligmini
Set P = Range("A" & ligdeb & ":A" & ligfin)
With ChartObjects(1).Chart
    For n = 1 To 3
        .SeriesCollection(n).XValues = P
        .SeriesCollection(n).Values = P.Offset(, n)
    Next
End With
End Sub
A+
 

Pièces jointes

  • Mise à jour automatique graphique(1).xlsm
    192.9 KB · Affichages: 18

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 169
Membres
102 804
dernier inscrit
edaguo