ReBonjour à tous,
J'aurai de nouveau besoin d'un petit éclaircissement sur un problème lié à la génération de graphique par macro.
Je m'explique j'ai un programme VBA (Excel 2003, je précise au passage) qui me récupère entre autre un flot de données générées par un appareil de mesure via un port série (Une série de données toutes les secondes environ). Ce programme traite ensuite ces données pour les afficher dans une feuille excel sous forme de tableau repertoriant des données de mesure en fonction de l'heure. Ce programme effectue le traitement en temps réel c'est à dire que toutes les secondes, il y a une ligne qui se rajoute dans le tableau. J'aimerais maintenant pouvoir à partir de ce même programme et toujours en temps réel pouvoir afficher dans un graphique (avec en abscisse la date colonne 1 et en ordonnée une grandeur quelconque du tableau) un point toute les secondes. J'ai donc commencé à coder pour obtenir ce résultat seulement voilà, j'arrive uniquement à récupérer la génération d'un point toutes les secondes dans une feuille à part spécifique au graphe généré par la ligne de code "Charts.add" alors que j'aimerais pouvoir avoir ce graphique intégré a une feuille déjà existante. Lorsque j'indique au programme d'intégrer ce graphique à la feuille que je veux à l'aide de la commande ".location", celui s'execute bien pour le premier point mais se met en erreur lors du deuxième point. Je sais pas comment pallier à ce problème, si vous aviez une explication et une solution je vous en serais très reconnaissant
Pour essayer de vous rendre ça encore plus clair, voici ma démarche liée à la génération du graphique :
Je commence par générer ce graphique à l'aide de ce code avec la déclaration de objChart qui va bien :
Ce code me génère par l'appui sur un bouton un graphique dans une feuille spécifique nommée "Graphe 1"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Set objChart = Charts.Add With objChart .ChartType = xlXYScatter .SeriesCollection.NewSeries .SeriesCollection(1).Name = "=""Visualisation de données""" End With
J'active ensuite le bouton qui me permet de récupérer les données de la liaison série et j'y incorpore ce code
L'incrémentation de Nbmes s'effectue a chaque fois que une trame complète a été reçu et les lignes de codes précédentes me permette d'aggrandir à chaque trame de une ligne les valeur en X et Y et c'est donc ce code qui marche uniquement pour le premier point et qui cesse de fonctionner après. Et ce même code fonctionne si j'enlève la ligne ".location" mais m'affiche le graphe dans une feuille a part ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 If Graphcheck.Value = True Then With objChart .SeriesCollection(1).XValues = Worksheets("Mode Mesure").Range(Worksheets("Mode Mesure").Cells(3, 1), Worksheets("Mode Mesure").Cells(Nbmes + 2, 1)) .SeriesCollection(1).Values = Worksheets("Mode Mesure").Range(Worksheets("Mode Mesure").Cells(3, 36), Worksheets("Mode Mesure").Cells(Nbmes + 2, 36)) .Location Where:=xlLocationAsObject, Name:="Mode Perturbation" End With End If
Merci d'avance Quentin
Partager