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 :

Améliorer rapidité exécution Macro


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
    Étudiant
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Par défaut Améliorer rapidité exécution Macro
    Bonjour tout le monde,

    J'ai à nouveau besoin de votre aide. J'ai réalisé une macro qui permet de faire le tri d'une feuille en fonction de l'année inscrit dans les cellules.
    Elle fonctionne parfaitement mais elle met un temps fou pour s’exécuter.
    J'ai essayé différents truc comme l'actualisation automatique, le screenUpdate mais ça prend toujours autant de temps.

    Voici le code :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    Sub Mise_a_jour_donnees()
     
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
     
     
    Dim RowHB2 As Long, Row2012 As Long, Row2013 As Long, Row2014 As Long
     
    RowHB2 = 4
    Row2012 = 2
    Row2013 = 2
    Row2014 = 2
     
    While Sheets("Hall B2").Cells(RowHB2, 1).Value <> ""
     
        If Year(Sheets("Hall B2").Cells(RowHB2, 1)) = "2012" Then
     
            Sheets("Hall B2").Cells(RowHB2, 1).EntireRow.Copy Sheets("Données 2012").Cells(Row2012, 1).EntireRow
            Sheets("Données 2012").Cells(Row2012, 19).FormulaR1C1 = "=WEEKNUM(RC[-12])"
            Sheets("Données 2012").Cells(Row2012, 20).Value = Month(Sheets("Données 2012").Cells(Row2012, 1))
            RowHB2 = RowHB2 + 1
            Row2012 = Row2012 + 1
     
            Else
     
            If Year(Sheets("Hall B2").Cells(RowHB2, 1)) = "2013" Then
     
                Sheets("Hall B2").Cells(RowHB2, 1).EntireRow.Copy Sheets("Données 2013").Cells(Row2013, 1).EntireRow
                Sheets("Données 2013").Cells(Row2013, 19).FormulaR1C1 = "=WEEKNUM(RC[-12])"
                Sheets("Données 2013").Cells(Row2013, 20).Value = Month(Sheets("Données 2013").Cells(Row2013, 1))
                RowHB2 = RowHB2 + 1
                Row2013 = Row2013 + 1
     
                Else
     
                If Year(Sheets("Hall B2").Cells(RowHB2, 1)) = "2014" Then
     
                    Sheets("Hall B2").Cells(RowHB2, 1).EntireRow.Copy Sheets("Données 2014").Cells(Row2014, 1).EntireRow
                    Sheets("Données 2014").Cells(Row2014, 19).FormulaR1C1 = "=WEEKNUM(RC[-12])"
                    Sheets("Données 2014").Cells(Row2014, 20).Value = Month(Sheets("Données 2014").Cells(Row2014, 1))
                    RowHB2 = RowHB2 + 1
                    Row2014 = Row2014 + 1
     
                    Else
     
                    RowHB2 = RowHB2 + 1
     
                End If
     
            End If
     
        End If
     
    Wend
     
    Sheets("Données 2012").Columns("S:T").Style = "Comma"
    Sheets("Données 2012").Columns("S:T").NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-"
     
    Sheets("Données 2013").Columns("S:T").Style = "Comma"
    Sheets("Données 2013").Columns("S:T").NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-"
     
    Sheets("Données 2014").Columns("S:T").Style = "Comma"
    Sheets("Données 2014").Columns("S:T").NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-"
     
    'Sheets("TCD T° Mois 2014 (MIC)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD T° Semaine 2014 (MIC)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD H% Mois 2014 (MIC)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD H% Semaine 2014 (MIC)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD T° Mois 2014 (EXT)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD T° Semaine 2014 (EXT)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD T° Mois 2014 (MAG)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD T° Semaine 2014 (MAG)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD H% Mois 2014 (MAG)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD H% Semaine 2014 (MAG)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD T° Mois 2014 (ENC)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD T° Semaine 2014 (ENC)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD H% Mois 2014 (ENC)").PivotTables("TCD1").PivotCache.Refresh
    'Sheets("TCD H% Semaine 2014 (ENC)").PivotTables("TCD1").PivotCache.Refresh
     
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
     
    End Sub
    Si quelqu'un de bien veillant pouvait me dire comment l’accélérer et m'expliquer en même temps.

    Merci d'avance les gars (et filles) !

  2. #2
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut
    Bonsoir,
    Pourriez vous expliquer ce que vous tentez de faire à l'aide de ce code?

    Merci
    Karim
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Par défaut
    Bonjour,

    Cette macro permet de faire une recherche une année suivant la date de la cellule de la première colonne sur chaque ligne. Si l'année est 2012 alors je copie la ligne entière sur une feuille 2012, si l'année est 2013 alors je copie la ligne entière sur une feuille 2013, etc...

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    cela n'a donc rien à voir avec un tri !

    Le plus rapide étant d'utiliser un filtre (ou un filtre élaboré, voir le tutoriel de ce site)
    puis de copier le bloc en une seule fois, exemple dans cette discussion

    Sinon rien qu'en utilisant l'Enregistreur de macros et hop ! Une base de code livrée sur un plateau !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Par défaut
    Pour moi c'est un tri puisque j'effectue une recherche dans une plage et que je ne copie que les cellules qui correspondent à ma recherche.

    J'ai essayé avec le filtre mais cela ne fonctionne pas. Je pense que c'est dû au format un peu spécial des cellulles "JJ/MM/AAAA HH:MM:SS". Je précise qu'il y a plus de 90000 lignes ...

  6. #6
    Invité
    Invité(e)
    Par défaut Bonjour, Comme trier les lentilles!
    Citation Envoyé par loustic100 Voir le message
    Pour moi c'est un tri puisque j'effectue une recherche dans une plage et que je ne copie que les cellules qui correspondent à ma recherche.

    J'ai essayé avec le filtre mais cela ne fonctionne pas. Je pense que c'est dû au format un peu spécial des cellulles "JJ/MM/AAAA HH:MM:SS". Je précise qu'il y a plus de 90000 lignes ...

Discussions similaires

  1. Exécution macro avec une fonction intégré
    Par kiwi31 dans le forum VBA Access
    Réponses: 13
    Dernier message: 22/05/2007, 16h18
  2. [Macro]Exécution macro, message Erreur 3441
    Par samca dans le forum IHM
    Réponses: 1
    Dernier message: 25/04/2007, 20h17
  3. protection feuille + exécuter macros
    Par Fab_nabou dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 04/12/2006, 11h14
  4. Exécution Macro Excel à partir d'Access
    Par SylvainJ dans le forum Access
    Réponses: 1
    Dernier message: 11/08/2006, 14h58
  5. [VBA][Excel]Exécution macro avec fichiers source
    Par ouezon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/12/2005, 00h00

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