Code VBA "ClearContents" trés lent

  • Initiateur de la discussion Initiateur de la discussion Amilo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Amilo

XLDnaute Accro
Bonsoir le forum,

Je recontre le même problème de lenteur dans l'éxécution de code que mon précédent fil qui a été résolu trés bien par Efgé et que je remercie à nouveau.

Cette fois, c'est avec l'instruction "ClearContents" avec plus 30 sec d'attente,

Les cellules sont vidées rapidement mais le curseur se met à vibrer puis se bloque pendant au moins 30 secondes.

Voici le code que j'utilise :

==========================

Private Sub CommandButton1_Click()
' Effacer les données sources
Sheets("Saisie").Range("F9:L42,O9:Q42,V9:W42").ClearContents
Application.ScreenUpdating = False

End Sub

=================

Est ce que c'est normal, que ce code met tellement de temps à s'éxécuter ??

Merci d'avance

Cordialement
 
Re : Code VBA "ClearContents" trés lent

Bonjour Amilo,

remplace ton code par ceci:
Code:
Private Sub CommandButton1_Click()
' Effacer les données sources
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Sheets("Saisie").Range("F9:L42,O9:Q42,V9:W42").ClearContents
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

à+
Philippe
 
Re : Code VBA "ClearContents" trés lent

Bonsoir phlaurent55,


Super, ça marche trés bien et trés rapidement ce code,

Je vais fouiller un peu dans l'aide F1 pour comprendre les 2 lignes utilisées également par Efgé dans mon précédent fil,

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

Et merci beaucoup pour votre aide

Bonne nuit
 
Re : Code VBA "ClearContents" trés lent

Re,

Explications

lors de la modification d'une cellule (la suppression peut être considérée comme une modif) toutes les cellules de la feuille sont recalculées automatiquement

le code présenté ci-dessus supprime le contenu de 408 cellules c'est à dire que les cellules de la feuille sont recalculées 408 fois

si il reste sur ta feuille des formules du genre =SOMMEPROD, RECHERCHEV, INDEX, des formules matricielles, (des formules très gourmandes en ressource), elles seront toutes recalculées 408 fois

en début de code:
Application.Calculation = xlCalculationManual -----> Bloque le calcul automatique pendant la procédure de suppression

en fin de code:
Application.Calculation = xlCalculationAutomatic --------> retour à la normale (re-calcule une fois les cellules contenant des formules )


Dans le cas présent la procédure de suppression sera +/- 400 fois plus rapide

à+
Philippe
 
Re : Code VBA "ClearContents" trés lent

Merci beaucoup phlaurent pour vos explications trés précises,

C'est trés clair pour moi désormais,

Effectivement j'ai quelques formules notamment "Recherchev" imbriquée, dans ma plage entre les lignes 9 et 42 de mon tableau...

Bonne nuit et merci encore

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour