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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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?

Discussions similaires

  1. Actualisation Graphique Individuel
    Par tanou44 dans le forum Excel
    Réponses: 2
    Dernier message: 29/05/2018, 12h35
  2. Aide Actualisation graphique
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/06/2015, 02h19
  3. [XL-2010] Actualisation graphique dans userform excel
    Par sam0027 dans le forum Excel
    Réponses: 1
    Dernier message: 12/12/2013, 17h11
  4. Bouton "Refresh", actualiser TextCtrl
    Par Kexian_ dans le forum wxPython
    Réponses: 5
    Dernier message: 09/05/2012, 18h36
  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, 20h00

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