Pb d'actualisation sur graphe avec axe dynamique

Bonjour,

J'ai fait un graphe dynamique avec échelle dynamique.

En VB j'ai réutilisé un programme qui modifie les valeurs de l'échelle des axes

Les valeurs mini et max sont calculées dans 2 cellules.

Tout cela marche correctement.

Mais lors de la mise à jour de ma feuille par une importation, les cellules mini et max se mettent à jour mais pas les échelles automatique du graphe.

Il suffit de rentrer et de valider dans une des cellules mini ou max pour que la mise à jour se fasse.

Il y a une commande d' actualisation qui a l'air de manquer.

Laquelle?

Bonjour,

Un petit fichier serait un plus pour t'aider.

Cordialement

Re,

Cet évènement permet d'intercepter les mises à jour du graphique, notamment la modification des valeurs dans la source de données.

Un exemple pour que la 1ere série du graphique soit toujours de couleur rouge

Cordialement

Private Sub Chart_Calculate()
    Graph1.SeriesCollection(1).Border.ColorIndex = 3
End Sub

Merci cela semble correspondre à mon besoin.

Mais, lorsque l'on a des graphes incorporés, cela est assez compliqué pour les néophytes en VB et en module de classe.

Je mets en oeuvre les programmes situés sur le lien que tu m'as mis à disposition et je tombe sur le beug:

erreur de compilation

membre de methode ou de donnes introuvable sur le mot graph à la ligne suivante

Set ClTabChart(i).Graph = Feuille.ChartObjects(i).Chart

Voici le programme entier dans le module de classe classeAppli

Option Explicit
Public WithEvents XL As Excel.Application
Dim ClTabChart() As ClassChart

'Permet de prendre en compte les graphiques incorporés de la feuille active
Public Sub XL_SheetActivate(ByVal Feuille As Object)
    Dim i As Integer

    'Vérifie qu'il s'agit d'une feuille de calcul
    If TypeOf Feuille Is Worksheet Then
        'Vérifie s'il y a des graphiques dans la feuille
        If Feuille.ChartObjects.Count = 0 Then Exit Sub

        'S'il y a des graphiques,
        'boucle pour les intégrer dans le module de classe
        For i = 1 To Feuille.ChartObjects.Count
            ReDim Preserve ClTabChart(i)
            Set ClTabChart(i) = New ClassChart
            Set ClTabChart(i).Graph = Feuille.ChartObjects(i).Chart
        Next i

    End If
End Sub

voivi le programme dans classgraph
Private Sub Graph_Calculate()
End Sub

voici le progamme d'initialisation dans thisworkbook
Dim XlAppli As New ClasseAppli
Private Sub Workbook_Open()
Set XlAppli.XL = Excel.Application
Application.Run "'Zibase EDF.xls'!MAJautomatiqueZibaseEDF"
End Sub

Bonjour,

Peux-tu envoyer ton fichier?

Cordialement

Voici un fichier reduit

36forum2.zip (12.84 Ko)

Bonjour,

J'ai vu le fichier, le code, et je n'ai rien compris...

Cordialement.

Bonjour

Je mets en oeuvre les programmes situés sur le lien que tu m'as mis à disposition et je tombe sur le beug:

erreur de compilation

membre de methode ou de donnes introuvable sur le mot graph à la ligne suivante

Set ClTabChart(i).Graph = Feuille.ChartObjects(i).Chart

Dans ta recopie du Code ClasseApplin tu as désactivé au début du Code la ligne

Public Sub XL_SheetActivate(ByVal Feuille As Object)

De là provient le premier message d'erreur.

Cette ligne réactivée, le second message d'erreur provient de cette ligne dans WorkBook_Open

Application.Run "'Zibase EDF.xls'!MAJautomatiqueZibaseEDF"

car cette Macro n'existe pas avec ce nom

Cordialement

Merci à Jean-Eric et Amadeus de leur réponse.

Pour Jean-Eric.

Je m'étonne que tu comprennes rien puisque je n'ai fait que recopier (et sans doute mal) les programmes qui étaient sur ton lien.

Pour Amadeus.

Excuse moi pour les faux bug.

Dans sa version normale du fichier il n'y avait aucune ligne occultée, et pour atteindre les 300k il a fallu tailler et le renommer et j'avais oublié que la macro de démarrage ne marche pas avec le changement de nom de fichier.

Je l'ai supprimé et je remets le fichier en lien qui me donne bien l'erreur de mon message précédent.

Il vous faudra travailler avec le fichier précédent corrigé puisque le nouveau fichier ne veut pas s'attacher!!

Bonjour

Je ne vois pas de lien vers un fichier

Pour envoyer TON fichier qui fait plus de 300 Ko, tu peux

  • Le compresser en Zip ou RAR
  • utiliser cjoint.com (gratuit)
Cordialement

Amadeus, comme je le précisais en bas de mon précédent message, le fichier proposé pour ajouter des fichiers joints ne s'attache pas!! (10 essais sans résultat, le champs du nom du fichier se réinitialise à vide)

Peut-être plus tard..

Bonjour

avec Cjoint.com ou

Le Bouton parcourir permet de choisir le fichier

Le Bouton "Créer le lien Cjoint" affiche un lien que tu copies et que tu viens coller dans ton message sur le Forum

Cordialement

et voilà

on en apprend tous les jours avec excel-pratique

11500 messages, Amadeus, je suis impressioné.

Bonjour

Le fichier envoyé avec Cjoint est strictement le même que le simplifié du début (46 Ko)

Tu as du te tromper de fichier

Cordialement

Bonjour

Après avoir réussi la recup des données EDF et la mise à jour du graphique, je m'aperçois (Mais j'aurais du le voir dès ta question du début) que ton axe des X est immuable puisque le Private Sub de la Feuille active le graphe et l'initialise avec des valeurs fixes des cellules E1 et F1.

En résumé, la définition des champs des valeurs sont sur le jour complet et ton axe des X reste bloqué de 0h à 6h.

D'où ma question:

Tu veux le graphe avec les valeurs du jour de 0h à 6h ou avec les heures de la partie de la journée au moment de l'importation des données (Ex, de 0h00 à 10h) si l'import se fait à 10h?

Cordialement

Bonjour,

Avant tout quelques mots de l'application pour comprendre.

L'objectif est d'identifier les grands types de consommation (cuisine, lave linge, éclairage, clim...) pour faire des économies.

Mais on fait beaucoup d'actes de consommations par jour.

La façon de les identifier est de les isoler en fonction du rythme de vie (de 0-6 il ne se passe pas grand chose mais le lave linge a peut-être fonctionné etc.....), donc il existe d'autres plages horaire (6-10,10-14...)

Donc pour ce graphe 0-6 la valeur des axes est fixe, il y a toujours un graphe présent.

En fonction de l'heure d'importation les cellules E1 et F1 se réactualisent et fixe les valeurs de la série soit le jour ou la veille.

Tout cela fonctionne parfaitement.

Si j'ai fait une importation à 9h les cellules E1 et F1 donnent les limites inférieures et supérieures des données du jour mais le graphe reste sur les valeurs de la veille, en selectionnant et validant E1 le graphe se réactualise

D'où ma première question sur l'actualisation, la copie du code que m'a donné jean éric pour un graphe incorporé et le bug à la compilation pour lequel je cherche une réponse.

J'espère avoir été clair. As-tu reproduit le bug?

Question subsidiaire qui pourra faire l'objet d'une autre discussion:

La courbe de consommation d'une machine à laver a un spectre particulier, y a t-il un moyen de la repérer sur la courbe de consommation (une sorte de filtre qui comparerait les courbes)

Bonjour

Donc pour ce graphe 0-6 la valeur des axes est fixe, il y a toujours un graphe présent.

En fonction de l'heure d'importation les cellules E1 et F1 se réactualisent et fixe les valeurs de la série soit le jour ou la veille.

Tout cela fonctionne parfaitement.

Je ne vois rien de tel dans ton fichier. Pour moi, il n'y a pas de corrélation cohérente entre E1 et F1 et le graphe. A moins que tu n"ais pas fourni tous les éléments du fichier concernant une éventuelle modification de ces 2 cellules. Parce que, je me répéte, en l'état des formules présentes, E1 et F1 sont immuables.

Mon esprit serait plus serein si le code utilisait l'heure de l'import, à la place d'AUJOURDHUI et les valeurs correspondantes dans le graphe (comme expliqué dans mon message précédent).

Bref. Si cela doit être en l'état, fin des remarques

J'ai ouvert le fichier ce matin et n'ai obtenu la mise à jour des valeurs sans aucun bug. Le résultat est joint. (J'ai désactivé la ligne Application.Run dans ThisWorkBook pour que tu puisses voir la même chose que moi. Tu réactiveras la ligne ensuite)

Cordialement

Bonjour,

Ce n'est pas facile de se comprendre.

Amadéus a écrit :

J'ai ouvert le fichier ce matin et n'ai obtenu la mise à jour des valeurs sans aucun bug. Le résultat est joint.

1- je ne comprends pas la négation ci dessus "ai obtenu" ou "n'est pas obtenu"

2-pour moi j'ai récupéré ton fichier avec les données que tu as rajouté

  • à l'ouverture la date de E1 est bien celle d'aujourdui
  • le graphe est celui d'hier
  • j'entre dans la cellule E1 et la valide; le graphe se met alors à jour
c'est bien le problème qui fait l'objet de la discussion.

il n'y a pas de bug mais toujour pas de mise à jour

petit détail technique:

tu as activé le graphe dans la feuille plutôt qu'à l'ouverture et tu utilises "Application.Intersect", peux-tu m'expliquer?

If Not Application.Intersect(Target, Range("E1:F1,a:a")) Is Nothing Then

ActiveSheet.ChartObjects(1).Activate

With ActiveChart.Axes(xlPrimary)

.MinimumScale = Range("E1").Value

.MaximumScale = Range("F1").Value

End With

End If

Bonjour

J'ai tout repris à 0

Voudrais-tu tester

Cordialement

18forum3.zip (56.65 Ko)

Merci Amadeus

Je devrais pouvoir m'en sortir.

Rechercher des sujets similaires à "actualisation graphe axe dynamique"