IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Refresh / Actualisation graphiques


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut Refresh / Actualisation graphiques
    Bonjour,

    J'ai fait un petit code pour la mise en forme de mes graphs, il s'agit de modifier l'épaisseur du tracé. Tout fonctionne c'est tout simple.

    - La procédure est lancée avec l'évènement Change.
    - Les graphs sont dans la feuille 2.

    Lorsque la procédure s’exécute et que je suis dans la feuille 2, les 2 graphs se mettent à jour.

    MAIS, lorsque la procédure s'exécute depuis la feuille 1 -> code identique dans feuil1 et feuil2 (évenement change) avec un trigger dans la feuille 1.
    Lorsque je vais dans la feuille 2 pour voir mes graphs, je ne vois que le graph1 à jour. Il faut que je change d'onglet puis que je revienne à nouveau dans la feuille 2 pour que le graph2 se mette à jour.

    Pourquoi??

    Merci à vous si vous avez des explications.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Trigger dans la "feuil1"
     
    AdrCell = Target.Address        'récupère adresse cellule dans variable
     
    Select Case AdrCell
     
        Case "$B$4" ', "une autre cellule", "encore une"....
     
            Sheets("feuil2").ChartObjects("Graphique 2").Activate   'les graphs sont dans la feuille 2
     
                With ActiveChart
                .FullSeriesCollection(1).Format.Line.Weight = 2 * Sheets("feuil3").Range("D11").Value   'épaisseur série de donnée 1 (valeur dans la feuille 3 mais peu importe)
                .FullSeriesCollection(2).Format.Line.Weight = 2 * Sheets("feuil3").Range("D12").Value   'épaisseur série de donnée 2
                .Refresh    'le .Refresh ne change rien à mon problème
                End With
     
     
            Sheets("feuil2").ChartObjects("Graphique 1").Activate   'pareil pour le deuxième graph 
                With ActiveChart
                .FullSeriesCollection(1).Format.Line.Weight = 2 * Sheets("feuil2").Range("I5").Value
                .FullSeriesCollection(2).Format.Line.Weight = 2 * Sheets("feuil2").Range("I6").Value
                .Refresh
                End With
     
     
                With Worksheets("feuil1")   'Pour remettre le curseur sur la cellule trigger (ne pas perturber l'utilisateur)
                .Activate                   'je ne sais pas s'il y a une meilleure méthode mais ça fonctionne
                .Range(AdrCell).Activate
                End With
     
        End Select
     
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Ca fonctionne chez moi, j'ai remplacé "FullSeriesCollection" par "SeriesCollection".
    vous confirmez bien que les valeurs de l'épaisseur pour le graphique 1 sont bien dans la feuill2 et non la feuille 3?
    A quoi sert le "Select case" si n'y a qu'une cellule à tester?

    Revoici votre code tel qu'il fonctionne chez moi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Worksheet_Change(ByVal Target As Range)
        'Trigger dans la "feuil1"
        AdrCell = Target.Address        'récupère adresse cellule dans variable
        Select Case AdrCell
        Case "$B$4" ', "une autre cellule", "encore une"....
            Sheets("feuil2").ChartObjects("Graphique 2").Activate   'les graphs sont dans la feuille 2
            With ActiveChart
                .SeriesCollection(1).Format.Line.Weight = 2 * Sheets("feuil3").Range("D11").Value   'épaisseur série de donnée 1 (valeur dans la feuille 3 mais peu importe)
                .SeriesCollection(2).Format.Line.Weight = 2 * Sheets("feuil3").Range("D12").Value   'épaisseur série de donnée 2
            End With
            Sheets("feuil2").ChartObjects("Graphique 1").Activate   'pareil pour le deuxième graph
            With ActiveChart
                .SeriesCollection(1).Format.Line.Weight = 2 * Sheets("feuil2").Range("I5").Value
                .SeriesCollection(2).Format.Line.Weight = 2 * Sheets("feuil2").Range("I6").Value
            End With
        End Select
    End Sub

    Cdlt

  3. #3
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut
    vous confirmez bien que les valeurs de l'épaisseur pour le graphique 1 sont bien dans la feuill2 et non la feuille 3?
    Oui.

    A quoi sert le "Select case" si n'y a qu'une cellule à tester?
    Il y en a plein dans la "vraie" version de le feuille de calcul.

    Je me permets de repréciser mon problème. Le code marche très bien pour moi aussi.

    C'est l'actualisation du graphique qui fait défaut :
    -je suis dans l'onglet 1
    -le code est lancé depuis l'onglet 1
    -passage dans l'onglet 2 --> le graph 1 a été modifié, le graph 2 n'a pas été modifié (du moins ça n'apparait pas)
    -passage dans un autre onglet (peu importe)
    -REtour dans l'onglet 2 --> oh! magie le graphique 2 est modifié...

    Bon je pense que vous aviez compris mais ca ne coute rien de préciser.

    J'ai essayé avec "SeriesCollection" mais ça ne change rien

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Dans quel module se trouve la macro? N'est-elle pas dans le module de la "feuil1"?

  5. #5
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut
    Une version du code est intégrée au module de la feuille 1 et au module de la feuille 2. C'est la même chose excepté les adresses des cellules trigger.
    Le code que j'ai partagé est tiré du module de la feuille 1 bien entendu.

    Lorsque la macro est exécutée depuis la feuille 2 tout se passe bien. Lorsqu'elle l'est depuis la feuille 1 il y a ce problème d'actualisation/affichage différé du graph 2.
    Étrange n'est-ce pas.

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    J'essaie de reproduire la structure de votre fichier. Pour ma part tout fonctionne bien.
    Alors il faudrait que je puisse reproduire votre fichier pour trouver l'erreur.
    - S'il y a des données dans la feuille 1,quelle plage? quelle plage de cellules permet de déclencher la macro?
    - S'il y a des données dans la feuille 2,quelle plage? quelle plage de cellules permet de déclencher la macro?

  7. #7
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut
    Ok, n'est-ce pas plus simple si je joins le ficher. Il s'agit d'un fichier teste de toute façon donc très léger.

    Graph.xlsm

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Je ne comprends pas, tout fonctionne correctement, la preuve en vidéo.

    Dans un premier temps je change les paramètres de l'épaisseur du trait de chaque graphique, puis je vais sur la feuille1 ou je modifie la valeur du "trigger" et on voit bien que les 2 graphiques se mettent à jour, idem quand on fait la même opération à partir de la feuille 2.
    Pièce jointe 597011

    Cdlt

  9. #9
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut
    Aha intéressant, moi aussi ca fonctionne lorsque j'affiche les 2 fenêtres en même temps!

    Mais ça fonctionne en différé lorsque je suis en affichage "classique" et que je passe d'un onglet à l'autre.
    Je ne sais pas quoi en penser...

    edit:
    je viens de découvrir que lorsque je clique sur une cellule au hasard dans l'onglet 2 cela provoque l'actualisation du graph2.
    Donc pour l'instant il me faut soit switcher d'onglet, soit cliquer dans la feuille. Mais le simple passage de la feuille 1 vers la feuille 2 ne suffit pas si je puis dire.

  10. #10
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    je viens de découvrir que lorsque je clique sur une cellule au hasard dans l'onglet 2 cela provoque l'actualisation du graph2.
    Pour que les graphiques se rafraîchissent, il faut soit modifier la valeur de la feuille1 en B4, soit une des deux valeurs en B5 ou B8 de la feuille 2, si vous cliquez ailleurs que dans ces cellules et que les graphiques se met à jour, c'est que vous avez défini ces cellules comme étant possibles d'interagir en les incluant dans le select case.

  11. #11
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut
    Pour que les graphiques se rafraîchissent, il faut soit modifier la valeur de la feuille1 en B4, soit une des deux valeurs en B5 ou B8 de la feuille 2, si vous cliquez ailleurs que dans ces cellules et que les graphiques se met à jour, c'est que vous avez défini ces cellules comme étant possibles d'interagir en les incluant dans le select case.
    Alors non. Je parle toujours du rafraichissement de l'affichage et non pas de l’exécution du code. Il n'y a pas de problème avec la macro.

    -je suis dans feuille 2 + je change la valeur de B5 ou B8 = les graphs sont modifiés, cela s'affiche directement donc tout va bien.
    -je suis dans feuille 1 + je change B4
    -je vais dans feuille 2 -> seul le graph1 S'AFFICHE modifié. Le graph 2 à pris en compte la modification mais ça ne s'affiche pas, c'est ca mon problème.

    Pour que ca s'affiche comme par magie, il faut soit que je change d'onglet puis que je revienne dans feuille 2 / SOIT comme j'ai précisé tout à l'heure, que je clic dans la feuille 2 après m'y être rendu.

    Ca donne :
    -je suis dans feuille 1 + je change B4
    -je vais dans feuille 2 -> seul le graph1 S'AFFICHE modifié.
    -je clic au hasard dans la feuille et paf le graph2 s'actualise. Ce qui indique qu'il a bien pris en compte la modification au préalable, c'est juste que pour je ne sais quelle raison obscure il ne l'affiche pas.

    C'est un problème lié à l'appli je pense mais ça dépasse ma compréhension, surtout que ça fonctionne normalement quand j'ai les 2 fenêtres d'ouvertes en même temps (feuille 1 + feuille 2).

  12. #12
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut
    J'ai testé ce matin avec un autre ordinateur et une autre version d'excel c'est pareil.

    Vous n'avez pas réussi à reproduire mon problème? Il vous faut ouvrir le classeur et rester "en mode une seule feuille".
    De cette manière vous serez obligé de modifier la valeur en feuille 1 puis de passer en feuille 2 et constater que...tout va à vau-l’eau !

  13. #13
    Membre averti
    Homme Profil pro
    Secteur construction
    Inscrit en
    Juin 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Secteur construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2018
    Messages : 22
    Par défaut
    Bonjour, du coup j'ai réussi à faire comme vous, un gif de mon écran.
    Comme on peut le voir, à la fin de la séquence je clique au hasard dans la feuille et le graph2 s'actualise.

    A défaut de pouvoir m'éclairer, pourriez-vous me dire quels outils vous avez utilisé pour enregistrer l'écran puis faire le Gif?
    J'ai utilisé des outils en ligne pour le Gif et le résultat n'est pas très concluant (et peut-on supprimer les pj dans le gestionnaire?)

    Nom : ExcelGif.gif
Affichages : 448
Taille : 889,6 Ko

Discussions similaires

  1. Actualisation Graphique Individuel
    Par tanou44 dans le forum Excel
    Réponses: 2
    Dernier message: 29/05/2018, 11h35
  2. Aide Actualisation graphique
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/06/2015, 01h19
  3. [XL-2010] Actualisation graphique dans userform excel
    Par sam0027 dans le forum Excel
    Réponses: 1
    Dernier message: 12/12/2013, 16h11
  4. Bouton "Refresh", actualiser TextCtrl
    Par Kexian_ dans le forum wxPython
    Réponses: 5
    Dernier message: 09/05/2012, 17h36
  5. [AC-2007] Actualiser Graphique Rapport avant extraction vers image
    Par philippe123 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/10/2009, 19h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo