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 :

Graphique TCD - Slicer - Actualisation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut Graphique TCD - Slicer - Actualisation
    Bonjour, Forum,

    Un petit retour parmi vous une petite question.

    J'ai une base de données assez simple à laquelle sont liés des TCD qui génèrent des graphiques. Jusque là, c'est OK. Voilà ce que cela donne :
    Nom : Image 3.png
Affichages : 407
Taille : 92,6 Ko

    J'ai une petite macro qui me permet d'actualiser les données en fonction du mois ou du service sélectionné. Cette macro permet d'adapter l'ordonnées car des différences substantielles sont présentes ; on peut passer de 500 à 5000.
    Nom : Image 4.png
Affichages : 308
Taille : 73,6 Ko

    Mais comme mon nombre de mois augmente ... tous les mois (c'est pour ceux qui ne suivent pas), je me disais qu'il serait bien de créer une petite macro pour n'afficher que les 12 derniers mois. C'est plus beau et plus lisible et cela permet à l'utilisateur de quand même avoir accès aux autres données au cas où. Exemple :
    Nom : Image 7.png
Affichages : 297
Taille : 67,5 Ko

    J'ai placé cette macro dans une Private Sub Workbook_Open mais ce qui n'est pas cool, c'est que, comme la première macro est dans une Private Sub Worksheet_Change, il me fait un recalcul pour chaque mois du slicer qu'il désélectionne. Du coup, 1 minute pour ouvrir le fichier. C'est court 1 minute mais pour l'utilisateur qui attend, il croit qu'Excel a planté.

    Donc, ma demande est de savoir si vous pensez à un moyen de contourner ce truc qui me fait perdre du temps. Si vous avez des questions, je suis là.

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Citation Envoyé par QuestVba Voir le message
    J'ai placé cette macro dans une Private Sub Workbook_Open mais ce qui n'est pas cool, c'est que, comme la première macro est dans une Private Sub Worksheet_Change, .
    Si tu ne veux pas interférer avec Sub Worksheet_Change, il te suffit en début de Workbook_Open de mettre "Application.EnableEvents = False"
    puis en fin le remettre "Application.EnableEvents = True".

    à moins que je n'ai pas compris ton souci... ^-^

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Il faudrait peut-être essayer en bloquant les calculs, le temps de l’exécution de la macro de sélection des mois.

    Un truc comme ça
    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 Workbook_Open()
    Dim MemoCalculation As XlCalculation
     
    'On mémorise le mode de calclul actuel
    MemoCalculation = Application.Calculation
     
    'On empêche les recalcul le temps de l'execution du code
    Application.Calculation = xlCalculationManual
     
    'Ici tu places ta macro qui selectionne les mois
    '[...]
     
    'On remet le mode de calcul comme il était
    Application.Calculation = MemoCalculation
     
    End Sub
    J'espère avoir compris le besoin, je n'en suis pas sûr.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Malheureusement, j'ai bien pris le temps et rien n'y fait. Les deux solutions n'apportent pas d'amélioration.

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Hum, sans avoir ni le fichier entre les doigts, ni le code sous les yeux ça n'est pas facile de deviner...

    Essaie de mettre des points d'arrêt sur les procédures, effectue l'action qui te parait trop lente et suis le parcours des appels de procédure, si ça se trouve, ton code appel une procédure en boucle sans que tu ne le vois à la lecture du code (un OnChange par exemple suite à la modification d'une cellule ou d'un composant si tu en utilises).

    [Edit]
    En relisant ton message, il faudrait voir ce qu'il est possible de faire à ce niveau du code
    Citation Envoyé par QuestVba Voir le message
    J'ai placé cette macro dans une Private Sub Workbook_Open mais ce qui n'est pas cool, c'est que, comme la première macro est dans une Private Sub Worksheet_Change, il me fait un recalcul pour chaque mois du slicer qu'il déselectionne.
    Le mieux serait sans doute de placer une variable boolean (False à la création par défaut) dans le Sub Worksheet_Change, qui tant qu'elle est False empêche l'exécution du code et ne la passer à True qu'une fois les jeux de desélections terminés.
    [/Edit]
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    si j'ai bien compris c'est la désactivation des slicers qui entraine un rafraichissement du TCD, ce que tu n'arrives pas à bloquer.
    Une suggestion en attendant mieux : réduire la source data à 1 ligne, rétablir ensuite.
    eric

Discussions similaires

  1. [XL-2010] Graphique TCD et SLICER
    Par QuestVba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2017, 20h46
  2. Réponses: 16
    Dernier message: 14/10/2014, 18h12
  3. [XL-2010] Graphique TCD - Aligner étiquettes de données
    Par Ginette54 dans le forum Excel
    Réponses: 0
    Dernier message: 26/01/2014, 18h34
  4. [XL-2010] Problème graphique lorsque j'actualise une feuille excel
    Par CristofMartins dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/10/2012, 15h21
  5. Réponses: 8
    Dernier message: 30/03/2009, 15h31

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