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 :

Temps d'exécution énorme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Temps d'exécution énorme
    Bonjour,
    Je viens vers vous parce que j'ai une lenteur énorme (environ 5 seconde) dés que j'active une feuille (nommée retenue), par contre des que j'active toutes les autres feuille impeccable
    Le seul code suspect est celui-la:

    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
    ' Fonction qui change des que tu change la colonne
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim iENT As Integer
    Dim iRET As Integer
    Dim ENT As Worksheet
    Dim RET As Worksheet
     
    Set ENT = Worksheets("ENT_BET")
    Set RET = Worksheets("Retenue")
     
     
      ' Fonction qui change des que tu change la colonne
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim iENT As Integer
    Dim iRET As Integer
    Dim ENT As Worksheet
    Dim RET As Worksheet
     
    Set ENT = Worksheets("ENT_BET")
    Set RET = Worksheets("Retenue")
     
     
        ' NETOYER LA PLAGE RETENUE
        Worksheets("Retenue").Range("A3:F400").Clear
        ' NETOYER LA PLAGE AMT
        If Target.Column = 6 Then
            iRET = 3
            iENT = 3
            While ENT.Cells(iENT, 6).Value <> ""
     
     
                If ENT.Cells(iENT, 6).Value = "Oui" Then
                     'Copier dans retenue
                    ENT.Range(iENT & ":" & iENT).Copy RET.Cells(iRET, 1)
                    iRET = iRET + 1
     
                     'TODO Copier dans AMT
     
     
                End If
                'Copi
                iENT = iENT + 1
            Wend
     
            Application.CutCopyMode = False
     
     
      End If
     
    End Sub
    Dernière modification par Invité ; 31/05/2019 à 22h49. Motif: Rectification début de la balise CODE

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Je pense que le problème vient du fait que tu as une macro événementielle qui s'appelle de nombreuses fois.
    Effectivement, quand tu modifies la valeur d'une cellule, la macro se lance et elle "nettoie" la plage "A3:F400", ce qui change les valeurs de ces cellules et donc qui déclenche à nouveau la macro.

    Essaye de désactiver les procédures événementielles au début de la macro avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    En n'oubliant bien sûr pas de les réactiver à la fin de la macro.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ca marche merci infiniment !

    Par contre juste un petit truc, quelque fois j'ai ca (les petites bordures qui débordent)
    lié également au code
    Nom : Capture.PNG
Affichages : 137
Taille : 60,9 Ko

Discussions similaires

  1. Problème de Parcours et temps d'exécution énorme
    Par Imène_23 dans le forum ImageJ
    Réponses: 10
    Dernier message: 06/01/2012, 11h12
  2. [C#] Calcul du temps d'exécution.
    Par lozzko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2005, 16h12
  3. Réponses: 2
    Dernier message: 25/05/2004, 15h33
  4. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 18h39

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