Lenteur d'exécution [Résolu]

Signaler
Messages postés
37
Date d'inscription
jeudi 5 décembre 2019
Statut
Membre
Dernière intervention
4 octobre 2020
-
Messages postés
37
Date d'inscription
jeudi 5 décembre 2019
Statut
Membre
Dernière intervention
4 octobre 2020
-
Bonjour,
j'ai un petit souci avec un code qui est pourtant simple. Il est très lent. Il met entre 10 et 15 secondes pour s'exécuter. Y aurait-il une solution svp?

A savoir qu'il est activé par le change de la selection à partir d'une autre feuille.
Sub annuler_mvt()
Dim i, c, j As Integer

Application.ScreenUpdating = False
For i = 3 To 9
    If Sheets(i).Range("L2") = Date Then
        For c = 13 To 70
        j = 4
        Sheets(i).Unprotect Password:=Mdpass
            If Selection.Offset(, -10).Value = Sheets(i).Cells(c, j).Value And Selection.Offset(, -11).Value = Sheets(i).Cells(c, j).Offset(, -1).Value And ActiveSheet.Range("L1").Value = Sheets(i).Cells(c, j).Offset(, -2).Value Then
                Sheets(i).Cells(c, j).Interior.Color = RGB(218, 150, 148)
                Sheets(i).Cells(c, j).Offset(, -1).Interior.Color = RGB(218, 150, 148)
                Sheets(i).Cells(c, j).Offset(, -2).Interior.Color = RGB(218, 150, 148)
                Sheets(i).Cells(c, j).Offset(, -3) = "Annulé"
                Sheets(i).Cells(c, j).Offset(, -3).Interior.Color = RGB(218, 150, 148)
            End If
        Sheets(i).Protect Password:=Mdpass
        Next c
    End If
Next i

Application.ScreenUpdating = True
End Sub


EDIT : Ajout des balises de code

Configuration: Windows / Chrome 83.0.4103.116

3 réponses

Messages postés
1941
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
23 août 2020
138
Bonjour,

Mets ce qui nécessite du temps de calcul et qui est indépendant de c, i et j en variable pour ne faire le calcul qu'une fois :
Selection.Offset(, -10).Value
Selection.Offset(, -11).Value
ActiveSheet.Range("L1").Value

Je pense que le And est évalué systématiquement => essaie peut-être en imbriquant les If (même si c'est moche).
Je pense que Offset est plus lent que jouer sur la colonne :
Sheets(i).Cells(c, j-2).Interior.Color

Mais Range est peut-être encore mieux :
Sheets(i).Range(Sheets(i).Cells(c, j-3),Sheets(i).Cells(c, j)).Interior.Color = RGB(218, 150, 148)


A+
Messages postés
37
Date d'inscription
jeudi 5 décembre 2019
Statut
Membre
Dernière intervention
4 octobre 2020

Ok je vois ça et je te dis, merci d'avance.
Messages postés
37
Date d'inscription
jeudi 5 décembre 2019
Statut
Membre
Dernière intervention
4 octobre 2020

Zoul67
j'ai effectué toutes les modifs, le souci venait de la protection qui était dans la 2ème boucle. merci pour ton aide précieuse.
Messages postés
1941
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
23 août 2020
138 >
Messages postés
37
Date d'inscription
jeudi 5 décembre 2019
Statut
Membre
Dernière intervention
4 octobre 2020

Ah oui, on ôte puis remet la protection une multitude de fois.
Messages postés
16271
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 octobre 2020
3 054
Bonjour,

"selection" désigne quelle cellule ?

Pourquoi remontes tu les cellules (elles ont toutes la m^me couleur) et il me semble ( à vue de nez que la colonne 4 entre les lignes 10 à 67 auront la couleur demandée (gain de temps ?)

quand "c" s'incrémente (boucle) la cellule remontée de 3 va écrire annulé" donc à la fin tu auras 57 "annulé"

j'avoue que je ne comprends ce que cela a pu donner quand tu as fait tes essais

A te lire


Messages postés
16271
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 octobre 2020
3 054
Excusez moi d'avoir dérangé en essayant d'aider....
Messages postés
37
Date d'inscription
jeudi 5 décembre 2019
Statut
Membre
Dernière intervention
4 octobre 2020
>
Messages postés
16271
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 octobre 2020

j'ai trouvé le problème, c'était dû à la unprotect/protect des feuilles dans la boucle. Je l'ai placé au bon endroit et ça fonctionn super bien maintenant. Merci pour ton aide.
Messages postés
37
Date d'inscription
jeudi 5 décembre 2019
Statut
Membre
Dernière intervention
4 octobre 2020

salut michel!
Merci pour ton post, toutefois j'ai codé avec les infos données par Zoul67 et j'ai toujours le souci. J'en déduis que c'est dans le fichier qu'il y a quelque chose qui cloche.
Messages postés
16271
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 octobre 2020
3 054
je t"avais posé cette "selection " appartient à quel objet ?