Graphique dynamique
Bonjour à tous,
Je souhaiterai créer dans une feuille de calcul Excel un graphique dynamique.
Je m'explique car je sais qu'il y a des tonnes de sujets là-dessus, mais rien de ce que j'ai lu ne m'a permis de résoudre mon problème.
Voilà, j'ai effectué un petit montage Arduino qui envoie sur la liaison série de mon ordinateur, le taux d'humidité dans l'air.
Ces données, j'arrive à les transcrire dans la feuille de calcul via une macro sous forme de colonne nommée "Humidité". Il y a également une autre colonne nommée "Heure" qui, à chaque donnée reçue indique l'heure du relevé à coté de la mesure de l'humidité.
J'effectue une mesure toutes les 30 secondes, vous comprendrez donc que les colonnes s'agrandissent assez vite ! Et en une nuit, ma feuille de calcul est déjà bien remplie.
C'est pourquoi, j'aimerai traduire ces données grâce à un graphique (humidité en fonction de l'heure). J'aimerai que ce graphique affiche l'évolution de l'humidité ambiante sur, par exemple, 1000 mesures. Et que les données antérieures n'apparaissent plus sur ce graphique.
J'ai essayé la fonction =DECALER(), mais ça ne marche vraiment pas.
Auriez-vous une idée afin que je puisse régler ce problème s'il vous plaît ?
De plus, je souhaiterai même effacer les données antérieures à la 1000ième mesures. Est-ce donc possible de supprimer automatiquement des données d'une feuille de calcul Excel ? Peut-être en passant par une macro, mais je ne sais pas comment faire, je l'avoue, je ne suis pas un pro des macros...
J’espère vraiment avoir expliquer mon problème clairement. Je reste, bien entendu, à votre entière disposition si vous avez la moindre question à me poser !
Cordialement,
Nicolas
Bonjour,
Une piste :
Sub ZoneGraph()
Dim Fe As Worksheet
Dim Obj As ChartObject
Dim Graph As Chart
Dim Lig As Long
Set Fe = Worksheets("Feuil1")
Set Obj = Fe.ChartObjects(1)
Set Graph = Obj.Chart
'recherche la dernière ligne non vide
With Fe: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row: End With
'déplace le graphique vers le bas afin d'éviter sa suppression
Obj.Top = Fe.Range("A" & Lig - 995).Top
'si plus de mille, supprime les lignes inutiles en début de feuille à partir de la ligne 2 (ligne 1 = entêtes)
If Lig > 1001 Then Fe.Rows("2:" & Lig - 1000).EntireRow.Delete
'les valeurs à prendre en compte pour le graphique sont en "A2:B1001"
Graph.SetSourceData Fe.Range("A2:B1001")
End Sub
Comme tu entres tes valeurs dans le tableau à l'aide d'une macro (ajoutées en fin de tableau je suppose), il te suffit d'appeler la procédure "ZoneGraph()" à la fin de ta procédure :
Sub MaMacro()
'ici tes lignes de code important les valeurs qui sont, je suppose ajoutées en fin de tableau
'...
'...
'...
'appel de la procédure ZoneGraph() pour supprimer les lignes inutiles et redéfinir la zone du graphique
ZoneGraph
End Sub
Bonjour Theze,
Merci beaucoup de ta réactivité et de ta réponse.
J'ai essayé de mettre en place ce que tu m'as dit, mais j'ai encore un problème.
Alors, tout d'abord, une capture de ma page Excel :
Comme tu peux le voir, on voit apparaître la macro que j'ai trouvée sur internet :
La feuille 1 ne s'appelle pas "Feuil1", donc dans le code que tu m'as donné, j'ai changé en "Simple Data"
Ensuite, Excel détecte une erreur à la ligne suivante :
Je ne comprend pas cette erreur, pourrais-tu m'éclairer s'il te plaît ?
Cordialement,
Nicolas
Bonjour,
Il faut que ton graphique existe et soit posé sur la feuille.