Lenteur d'exécution

Résolu
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -  
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -
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

Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
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+
0
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
Ok je vois ça et je te dis, merci d'avance.
0
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149 > ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
Ah oui, on ôte puis remet la protection une multitude de fois.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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


0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Excusez moi d'avoir dérangé en essayant d'aider....
0
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   > michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention  
 
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.
0
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
je t"avais posé cette "selection " appartient à quel objet ?
0