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 :

macro lente à s'éxécuter


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut macro lente à s'éxécuter
    Bonjour à tous,

    En tant que débutant, je m'adresse à vous pour savoir si ce code peut s'éxécuter de manière plsu rapide...

    Globalement, j'ai l'impression qu'elle met longtemps à éxécuter la ligne en rouge ci-dessous
    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
    Application.screenUpdating=false
    
    Tb = Worksheets("code").Range("S3:S100")
    
    Set PVT = Worksheets("PIVOT for Region").PivotTables("PivotTable1").PivotFields("dbo_t_BUSINESS_LINE_Name")
    
    
    With PVT
        .ClearAllFilters
        On Error Resume Next
        .PivotItems(Tb(1, 1)).Visible = True
        For i = 1 To .PivotItems.Count
            .PivotItems(i).Visible = .PivotItems(i) = Tb(1, 1) Or Not .PivotItems(i).Visible   
     Next i
        For i = 2 To UBound(Tb)
            .PivotItems(Tb(i, 1)).Visible = True
        Next i
    End With
    Application.screenUpdating=true
    Merci de m'aider
    Cdlt
    DoDo

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 596
    Points : 34 282
    Points
    34 282
    Par défaut
    salut,

    une attribution de valeur comme ca avec un or c'est moyen.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .PivotItems(i).Visible = .PivotItems(i) = Tb(1, 1) Or Not .PivotItems(i).Visible
    Deja a la lecture j'etais comme ca
    Tu peux simplement remplacer par une test if en amont sur les cas que tu souhaites traiter
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Bonjour jpcheck,

    Merci pour ta réponse qui me semble être une bonne idée

    Mais je tavouerai ne pas comprendre l'éxécution de ce code :s
    Il m'a été fourni par mercatoq, que je remercie d'ailleurs

    http://www.developpez.net/forums/d11...el/filtre-tcd/

    Donc je ne sais pas trop quel test je pourrai faire uvec un If :s

    A bon entendeur,
    Merci de m'aider

    Cdlt
    DoDo

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    ça revient à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .PivotItems(i) <> Tb(1, 1) And .PivotItems(i).Visible = True Then .PivotItems(i).Visible = False
    Le but du code est de rendre visible l'item Tb(1,1)
    Ensuite, je cache tous les autres (non cachés) autre que Tb(1,1)
    Enfin, de rendre visible les autres items contenus dans Tb

    c'est un peu tordu mais c'était la logique.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 596
    Points : 34 282
    Points
    34 282
    Par défaut
    Yep,

    j'avais un peu de retard a l'allumage ce matin
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Bonjour les pro

    Donc si j'ai suivi, il est difficilement possible de faire mieux en terme de rapidité que le code fourni au départ ?

    Merci en tout cas,
    Cordialement
    DoDo

    PS: Si c'est le cas je pense que je vais fermer ce topic qui n'a pas grande utilité...

    Merci

Discussions similaires

  1. Optimisation d'une macro lente
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/12/2012, 22h35
  2. Macro lente et enlever les weekends!
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/11/2011, 10h42
  3. Exécution d'une macro lente
    Par rickgoz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/02/2010, 20h02
  4. Macro lente pour contrôle nombre caractere
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/04/2009, 20h43
  5. [VBA-E]macro lente. étrange. étrange.
    Par zenix dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/04/2006, 11h59

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