Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création d'un graphique à partir de données qui changent en temp s

6 réponses
Avatar
ericlbt
Bonjour,

J'ai besoin d'aide.

Je cherche à construire un graphique à partir de données qui évoluent dans
le temps, tout en étant capable de gérer les intervalles temps.

Exemple :
A1 = cellule qui affiche un chiffre (par exemple une hauteur) qui peut
changer à n'importe quel moment
A2 = comme A1 mais pas égale.(par exemple une température)
A3 = choix de l'intervalle de temps en minutes

Je cherche à pouvoir afficher sur un même graphique l'évolution de A1 et de
A2 à des intervalles (A3) réguliers.
Un fois l'intervalle de temps A3 décidé, celui-ce n'est plus modifié.

A1 et A2 doivent être sur les deux axes des ordonnées (un à gauche du
graphique et l'autre à droite).
A3 est sur l'axe des abscisses.

Merci par avance pour vos commentaires, vos solutions.

6 réponses

Avatar
Daniel
Bonjour.
Regarde le classeur à l'adresse (je me suis servi de A1, B1 et C1 au lieu de
A1, A2 et A3 (ça fait pas mal de modifs; si tu n'y arrives pas, poste un
nouveau message :
http://cjoint.com/?hfksNiDTQX
Cordialement.
Daniel
"ericlbt" a écrit dans le message de
news:
Bonjour,

J'ai besoin d'aide.

Je cherche à construire un graphique à partir de données qui évoluent dans
le temps, tout en étant capable de gérer les intervalles temps.

Exemple :
A1 = cellule qui affiche un chiffre (par exemple une hauteur) qui peut
changer à n'importe quel moment
A2 = comme A1 mais pas égale.(par exemple une température)
A3 = choix de l'intervalle de temps en minutes

Je cherche à pouvoir afficher sur un même graphique l'évolution de A1 et
de
A2 à des intervalles (A3) réguliers.
Un fois l'intervalle de temps A3 décidé, celui-ce n'est plus modifié.

A1 et A2 doivent être sur les deux axes des ordonnées (un à gauche du
graphique et l'autre à droite).
A3 est sur l'axe des abscisses.

Merci par avance pour vos commentaires, vos solutions.


Avatar
ericlbt
Bonjour Daniel,

Merci pour la réponse.
Je ne suis pas certain que cela fonctionne.

Même quand les valeurs de A1 et B1 changent (lien avec autre feuille Excel)
le graphique ne se met pas automatiquement à jour.
La graphique, tout comme la liste des valeurs, se mettent à jour si je
change la valeur de C1 ou si je change manuellement la valeur de A1 ou de B1.
Je voudrais par exemple que le graphique se mette à jour toutes les 20
minutes (donc valeur 20 dans C1). Mais je n'ai pas besoin d'afficher les
valeurs A1 et B1 obtenues pendant les 20 minutes : une valeur à t et une
autre, peut être la même, 20 minutes plus tard.
Si la gestion du timing est trop compliquée je reste preneur d'un graphique
qui se met à jour à chaque changement de valeur (A1 ou B1).

Encore merci.
Eric
Avatar
Daniel
Regarde le classeur à l'adresse :
http://cjoint.com/?hfoj2xqZCs
Dans "ThisWorkBook" :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'arrêt de l'exécution périodique à la fermeture du classeur
On Error Resume Next
Application.OnTime Heure, "MAJ", , False
End Sub

Private Sub Workbook_Open()
'démarrage de l'exécution de l'exécution périodique à l'ouverture du
classeur
Application.OnTime Now + TimeValue("00:01:00"), "MAJ"
End Sub

Dans le code de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lignes As Long
If Target.Column > 3 Or Target.Row > 1 Then Exit Sub
Application.EnableEvents = False
If Application.CountA(Range("A1:C1")) = 3 Then
Lignes = Range("A1", Range("A65536").End(xlUp)).Rows.Count
[A2].Offset(Lignes - 1) = [A1]
[B2].Offset(Lignes - 1) = [B1]
End If
Application.EnableEvents = True
End Sub

Dans un module :

Public Heure As Date
Sub MAJ()
'Macro de mise à jour des cellules A1:B1
intervalle = Sheets("Feuil1").Range("C1")
Heure = Now + TimeSerial(0, intervalle, 0)
Application.OnTime Heure, "MAJ"
With Sheets("Feuil1")
.Range("A1") = .Range("A1") + 1
.Range("B1") = .Range("B1") + 1
End With
End Sub

La partie entre "With Sheets("Feuil1")" et "End With" doit être modifiée
pour alimenter automatiquement A1 et B1. L'intervalle de temps en C1 est
actuellement réglé à 1 mn. Il peut être modifié n'importe quand.
Daniel
"ericlbt" a écrit dans le message de
news:
Bonjour Daniel,

Merci pour la réponse.
Je ne suis pas certain que cela fonctionne.

Même quand les valeurs de A1 et B1 changent (lien avec autre feuille
Excel)
le graphique ne se met pas automatiquement à jour.
La graphique, tout comme la liste des valeurs, se mettent à jour si je
change la valeur de C1 ou si je change manuellement la valeur de A1 ou de
B1.
Je voudrais par exemple que le graphique se mette à jour toutes les 20
minutes (donc valeur 20 dans C1). Mais je n'ai pas besoin d'afficher les
valeurs A1 et B1 obtenues pendant les 20 minutes : une valeur à t et une
autre, peut être la même, 20 minutes plus tard.
Si la gestion du timing est trop compliquée je reste preneur d'un
graphique
qui se met à jour à chaque changement de valeur (A1 ou B1).

Encore merci.
Eric


Avatar
Daniel
Plus simplement :
http://cjoint.com/?hfpfKYDOSk
Daniel
"Daniel" a écrit dans le message de news:

Regarde le classeur à l'adresse :
http://cjoint.com/?hfoj2xqZCs
Dans "ThisWorkBook" :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'arrêt de l'exécution périodique à la fermeture du classeur
On Error Resume Next
Application.OnTime Heure, "MAJ", , False
End Sub

Private Sub Workbook_Open()
'démarrage de l'exécution de l'exécution périodique à l'ouverture du
classeur
Application.OnTime Now + TimeValue("00:01:00"), "MAJ"
End Sub

Dans le code de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lignes As Long
If Target.Column > 3 Or Target.Row > 1 Then Exit Sub
Application.EnableEvents = False
If Application.CountA(Range("A1:C1")) = 3 Then
Lignes = Range("A1", Range("A65536").End(xlUp)).Rows.Count
[A2].Offset(Lignes - 1) = [A1]
[B2].Offset(Lignes - 1) = [B1]
End If
Application.EnableEvents = True
End Sub

Dans un module :

Public Heure As Date
Sub MAJ()
'Macro de mise à jour des cellules A1:B1
intervalle = Sheets("Feuil1").Range("C1")
Heure = Now + TimeSerial(0, intervalle, 0)
Application.OnTime Heure, "MAJ"
With Sheets("Feuil1")
.Range("A1") = .Range("A1") + 1
.Range("B1") = .Range("B1") + 1
End With
End Sub

La partie entre "With Sheets("Feuil1")" et "End With" doit être modifiée
pour alimenter automatiquement A1 et B1. L'intervalle de temps en C1 est
actuellement réglé à 1 mn. Il peut être modifié n'importe quand.
Daniel
"ericlbt" a écrit dans le message de
news:
Bonjour Daniel,

Merci pour la réponse.
Je ne suis pas certain que cela fonctionne.

Même quand les valeurs de A1 et B1 changent (lien avec autre feuille
Excel)
le graphique ne se met pas automatiquement à jour.
La graphique, tout comme la liste des valeurs, se mettent à jour si je
change la valeur de C1 ou si je change manuellement la valeur de A1 ou de
B1.
Je voudrais par exemple que le graphique se mette à jour toutes les 20
minutes (donc valeur 20 dans C1). Mais je n'ai pas besoin d'afficher les
valeurs A1 et B1 obtenues pendant les 20 minutes : une valeur à t et une
autre, peut être la même, 20 minutes plus tard.
Si la gestion du timing est trop compliquée je reste preneur d'un
graphique
qui se met à jour à chaque changement de valeur (A1 ou B1).

Encore merci.
Eric






Avatar
ericlbt
Il y a toujours un petit problème.
Je lance le classeur en mettant 1 comme valeur pour A1, B1 et C1.
Après 1 minute le graphique se met correctement à jour mais les valeurs A1
et B1, qui devraient rester à 1 augmentent de 1 !
1...2 après 1mn...3 après 2mn, etc. !
Peut-être serait-il plus facile de ne prendre qu'une seule série (A1
uniquement, plus de B1) en compte ?

Merci
Avatar
Daniel
Regarde plutôt le classeur dans mon post de 15:06. J'avais mis un incrément
de 1 pour simuler une évolution et en précisant qu'il fallait adapter la
macro à tes besoins.
Daniel
"ericlbt" a écrit dans le message de
news:
Il y a toujours un petit problème.
Je lance le classeur en mettant 1 comme valeur pour A1, B1 et C1.
Après 1 minute le graphique se met correctement à jour mais les valeurs A1
et B1, qui devraient rester à 1 augmentent de 1 !
1...2 après 1mn...3 après 2mn, etc. !
Peut-être serait-il plus facile de ne prendre qu'une seule série (A1
uniquement, plus de B1) en compte ?

Merci