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 :

code VBA très lent [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut code VBA très lent
    y'a t il une possibilité de rendre ce code plus rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Dim DerLigne As Integer
     
     Sheets("Feuil1").Activate
     
       DerLigne = Range("a" & Range("a:a").Rows.Count).End(xlUp).Row
     
     
       For n = DerLigne To 1 Step -1
        If Cells(n, 11).Value = "KO" Then
        Cells(n, 11).EntireRow.Delete
        End If
       Next n

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    J'aurais fait de la manière suivante :

    Un tri pour obtenir les cellules avec "KO"
    Clearcontents des lignes visibles
    tri ascendant des lignes restantes pour envoyer les lignes vides à la fin de ton tableau

  3. #3
    Invité
    Invité(e)
    Par défaut le code svp
    Citation Envoyé par Trystan441 Voir le message
    Bonjour,

    J'aurais fait de la manière suivante :

    Un tri pour obtenir les cellules avec "KO"
    Clearcontents des lignes visibles
    tri ascendant des lignes restantes pour envoyer les lignes vides à la fin de ton tableau

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Le code SVP
    lequel des trois instructions qui t'ont été indiquées par Trystan441 ?
    (mets-y un peu du tien, s'il te plait)

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2019
    Messages : 6
    Par défaut
    Salut !

    Met ce code en début de VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    End With
    Puis ceci en fin de VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    End with

  6. #6
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    L'enregistreur de macro te donnera tout ce dont tu as besoin pour réaliser ça !

    Si tu as des questions sur la syntaxe, n'hésites pas,

  7. #7
    Invité
    Invité(e)
    Par défaut rein compris
    Citation Envoyé par LogiLogi Voir le message
    Salut !

    Met ce code en début de VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    End With
    Puis ceci en fin de VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    End with

  8. #8
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Le morceau de code ci-dessous te permet de stopper le rafraîchissement d'image de ton classeur Excel (ScreenUpdating) ainsi que le calcul automatique (Calculation)
    Place ce premier morceau juste après ton Sub. Ca va donc accélérer ta procédure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    End With
    Le code ci-dessous remettra au mode actif le rafraîchissement d'image ainsi que le calcul pour que tu puisses utiliser normalement ton classeur Excel.
    Place ce second morceau juste avant ton End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
    End With

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Le Code de Trystan441 est un grand classique, et il permet d'éliminer toutes les pertes de performances liées aux mises à jour visibles lors de travail sur les données. C'est indispensable de mettre ce genre de choses partout (avec à chaque fois le début et la fin) dès qu'on travaille avec des quantités de données un peu importantes.

  10. #10
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous,

    Salut El Slapper (cela faisait longtemps!)

    Outre les remarques - judicieuses - qui précèdent.

    D'un bloc et sans intervention annexe et/ou balayage.

    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
    Option Explicit
     
    Sub Suppr_KO()
     
    Dim dernl As Long
     
    With Worksheets("Feuil1")
            dernl = .Cells(.Rows.Count, 1).End(xlUp).Row
            With .Range("A1:A" & dernl)
                    .Replace What:="KO", Replacement:="", Lookat:=xlWhole
                    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
            End With
    End With
     
    End Sub
    Bon week-end à vous, et Bon week-end au Forum.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécution VBA très lente
    Par alexano211 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/11/2017, 10h22
  2. [XL-2010] exécution du code VBA Très Très lent dans un sens et rapide dans l'autre ?
    Par jfab66 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/01/2016, 09h49
  3. [XL-2003] Macro VBA très lente, comment l'optimiser
    Par nuphius dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/06/2015, 21h45
  4. [E-00] Code Très Lent
    Par Scoubi7 dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 10/06/2009, 20h21
  5. Code VBA très lent - en phase d'execution
    Par Fairyanna dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/08/2008, 15h35

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