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

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel
Le #4605311
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" 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.


ericlbt
Le #4605171
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
Daniel
Le #4605031
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" 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


Daniel
Le #4604931
Plus simplement :
http://cjoint.com/?hfpfKYDOSk
Daniel
"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" 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






ericlbt
Le #4603111
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
Daniel
Le #4603101
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" 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



Publicité
Poster une réponse
Anonyme