Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Vitesse d'exécution

  • Initiateur de la discussion Initiateur de la discussion Hamza
  • 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 !

H

Hamza

Guest
Bonjour le forum,

J'ai un problème de vitesse d'exécution j'ai essayé de voir sur le forum des problèmes similaires mais pareil je n'arrive pas à améliorer la vitesse d'exécution (6 s). je voudrais savoir s'il est possible d'accélérer la vitesse d'exécution du code VBA ci-dessous.

Merci d'avance

Hamza

Private Sub ComboBox_Armoire_Change()

Application.ScreenUpdating = False

'Remplir le tableau LCB
Dim Derlig As Long
Dim y As Integer
Dim j As Integer
Dim lig As Long

Range("C20:O21").ClearContents

'Derlig = Sheets("LCB_List").Range("A65536").End(xlUp).Row

lig = 3

For j = 2 To 600
For y = 3 To 90


If Sheets("LCB_List").Cells(j, 1).Formula = Sheets("Informatique client").Range("Used_Name").Text _
And Sheets("LCB_List").Cells(j, 2).Formula = Sheets("PLC et Equipements").ComboBox_Armoire.Text _
And Sheets("LCB_List").Cells(j, y).Value <> "" Then

Sheets("PLC et Equipements").Cells(21, lig).Value = Sheets("LCB_List").Cells(j, y).Value
Sheets("PLC et Equipements").Cells(20, lig).Value = Sheets("LCB_List").Cells(1, y).Value

lig = lig + 1

End If

Next

Next

Application.ScreenUpdating = True

End Sub
 
Re : Vitesse d'exécution

Bonsoir.

Essayez ça :
VB:
Private Sub ComboBox_Armoire_Change()
Dim NomCli As String, Armoire As String, _
   Te(), Le As Long, Ce As Long, Ts(), Cs As Long
With Worksheets("LCB_List")
   Te = .[A1].Resize(.[A65536].End(xlUp).Row, 100).Value
   NomCli = .[Used_Name].Text
   End With
ReDim Ts(1 To 2, 1 To 100)
Armoire = Sheets("PLC et Equipements").ComboBox_Armoire.Text
For Le = 2 To UBound(Te, 1)
   For Ce = 3 To UBound(Te, 2)
      If Te(Le, 1) = NomCli And Te(Le, 2) = Armoire And Te(Le, Ce) <> "" Then
         Cs = Cs + 1
         Ts(1, Cs) = Te(Le, Ce)
         Ts(2, Cs) = Te(1, Ce)
         End If: Next Ce, Le
With Worksheets("PLC et Equipements")
   .[C21].Resize(2, 100).ClearContents
   .[C21].Resize(2, Cs).Value = Ts: End With
End Sub
À tester, puisque je ne le pouvais…

Remarque: Ça devrait être des milliers de fois plus rapide vu qu'il n'y a que 5 accès aux contenus de feuilles, 3 en entrée, 2 en sortie contre quelques dizaines de milliers dans votre code initial.
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
305
Réponses
4
Affichages
692
Réponses
5
Affichages
839
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
2
Affichages
573
Réponses
16
Affichages
1 K
Réponses
4
Affichages
634
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…