Accélérer la vitesse d'exécution d'un code VBA

breitzou

XLDnaute Occasionnel
Bonsoir le forum,:)

je voudrais savoir s'il est possible d'accélérer la vitesse d'exécution d'un code VBA. Je m'explique. En PJ, le fichier comporte des données en lignes et colonnes que je souhaite filtrer à l'aide d'un userform comportant des combobox. Cette partie du travail est effectuée. Les filtres fonctionnent et les données sortent assez rapidement:). Le problème se situe lorsque j'adapte le code à mon fichier d'origine qui comporte environ 2300 lignes sur 25 colonnes avec beaucoup de formules de calcul matriciel. Et là, vitesse de filtrage très lente :(: environ 10 secondes pour 1 ligne. Alors, il faut imaginer quand il faut en faire apparaître 500:eek:.

Pourriez-vous m'aider s'il vous plaît parce que là je bloque;).

Merci d'avance

Breitzou
 

Pièces jointes

  • Filtre.zip
    45.2 KB · Affichages: 105
  • Filtre.zip
    45.2 KB · Affichages: 99
  • Filtre.zip
    45.2 KB · Affichages: 106

breitzou

XLDnaute Occasionnel
Re : Accélérer la vitesse d'exécution d'un code VBA

Bonjour JCGL,

merci pour ta réponse qui fonctionne à merveille sur le fichier joint. Malheureusement sur mon fichier d'origine, c'est toujours aussi lent. Je ne peux pas te le mettre en téléchargement car il est assez lourd même en le vidant(10 Mo). Dans ce fichier, il y a 21 onglets qui gèrent des statistiques, des calculs...
Je ne pense pas que cela soit un réel problème car la macro qui gère ce qui m'intéresse ne concerne que les données de deux onglets.

est-ce qu'il existe une autre solution?
Merci

Breitzou
 

breitzou

XLDnaute Occasionnel
Re : Accélérer la vitesse d'exécution d'un code VBA

Re JCGL et Jean-Marcel,

merci encore à vous deux. Les deux solutions fonctionnent sur le fichier joint et celle de Jean-Marcel fonctionne à la perfection sur mon fichier d'origine.

Mon Pb est réglé. Merci encore. C'est génial.

Breitzou:)
 

Softmama

XLDnaute Accro
Re : Accélérer la vitesse d'exécution d'un code VBA

Bonsoir,

A ta place, je modifierai de façon assez conséquente le code. Tu boucles sur 2500*8 cellules là où un .find est immédiat !

Vois le fichier joint qui reprend ce principe.
(pas testé)
Si trio lent, tu peux tjs rajouter les application.screenupdating = false

VB:
Private Sub BtnChoixSite_Click()
Dim j, NouvelleLigne
Dim c As Range, Départ
Feuil2.Range("A5:H65536").ClearContents

With Feuil1.Range("A4:A2500")
    Set c = .Find(CbSite.Text)
        If Not c Is Nothing Then
            Départ = c.Address
        Do
            NouvelleLigne = Feuil2.Range("A65536").End(xlUp).Row + 1
            For j = 1 To 8
                Feuil2.Cells(NouvelleLigne, j) = Feuil1.Cells(c.Row, j)
            Next j
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> Départ
        End If
End With
FrmChoix.Hide
End Sub
 
Dernière édition:

Hamza

XLDnaute Nouveau
Re : Accélérer la vitesse d'exécution d'un code VBA

Bonjour le forum,

J'ai presque le même problème j'ai essayé ce que vous avez proposé mais pareil j'arrive pas. 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
 

Discussions similaires

Statistiques des forums

Discussions
312 443
Messages
2 088 474
Membres
103 863
dernier inscrit
OUIDDIR