Comment optimiser une macro VBA ?

Fermé
Nawellita Messages postés 6 Date d'inscription vendredi 13 septembre 2013 Statut Membre Dernière intervention 13 septembre 2013 - Modifié par Chris 94 le 13/09/2013 à 13:56
Nawellita Messages postés 6 Date d'inscription vendredi 13 septembre 2013 Statut Membre Dernière intervention 13 septembre 2013 - 13 sept. 2013 à 20:38
Bonjour,

J'ai un soucis sur une macro VBA qui est très longue à s'actualiser. Ca peut aller jusqu'à 30 min pour traiter 5000 lignes. Il faut que je trouve une solution pour la semaine prochaine.... Le but de ma macro est de supprimer les lignes qui ont la valeur 0 dans la colonne F.
Savez vous SVP comment je peux optimiser le traitement ? Ci dessous le code:

La macro globale :

          Sub MAJ_Rapport()

Call Unhide
Range("E18").Select

Call MAJ_Data
Range("E18").Select

Call Degrouper
Range("E18").Select

Call Supress_Zero
Range("E18").Select

Call GrouperLignesAll
Range("E18").Select

End Sub

Quand j'exécute par petit bout je me rends compte que c'est la macro Supress_Zero qui met le plus de temps. Ci dessous le détail de celle ci :


 Sub Supress_Zero()

Application.ScreenUpdating = False

'Premier Bloc
NbLigMAX = Cells(12, 5).Value
For i = NbLigMAX To 22 Step -1
Type_ligne = Cells(i, 6).Value
If Type_ligne = 0 Then
Rows(i).Delete
End If
Next i

'Calcule les lignes MAX et MIN
Call recalculateLgMAX

'Deuxième Bloc
NbLigMIN2 = Cells(14, 5).Value
NbLigMAX2 = Cells(13, 5).Value
For k = NbLigMAX2 To NbLigMIN2 Step -1
Type_ligne = Cells(k, 6).Value
If Type_ligne = 0 Then
Rows(k).Delete
End If
Next k

Application.ScreenUpdating = True

End Sub


Merci d'avance de votre aide.
A voir également:

5 réponses

tobas Messages postés 210 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 8 septembre 2014 24
13 sept. 2013 à 14:04
bonjour,
je ne comprend pas pourquoi ta macro fait deux fois le travail
premier bloc
test la valeur zéro et supprime la ligne
deuxième bloc
fait la même chose
0
Nawellita Messages postés 6 Date d'inscription vendredi 13 septembre 2013 Statut Membre Dernière intervention 13 septembre 2013
13 sept. 2013 à 14:12
Parce que le le test est fait sur deux tableaux différents.

Exple : le Premier bloc va traiter les lignes 22 à 100 et le Deuxième bloc va traiter les lignes 110 à 200. Ce sont des plages variables et je ne veux pas supprimer les lignes entre ces deux tableaux. Vous pensez que c'est à cause de ça ? Est ce que je dois scinder mes macros ?
0
Nawellita Messages postés 6 Date d'inscription vendredi 13 septembre 2013 Statut Membre Dernière intervention 13 septembre 2013
13 sept. 2013 à 19:41
Oui les lignes sont vides :(
0
tobas Messages postés 210 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 8 septembre 2014 24
13 sept. 2013 à 14:34
les lignes entre les deux tableaux sont vide ?
sinon tu fait tout d'un bloc
exemple les lignes 22 à 200 si dans la colonne H il n'y a pas de zero
0
Nawellita Messages postés 6 Date d'inscription vendredi 13 septembre 2013 Statut Membre Dernière intervention 13 septembre 2013
13 sept. 2013 à 19:42
Oui les lignes sont vides ;(
0
PHILOU10120 Messages postés 6390 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 27 septembre 2024 810
13 sept. 2013 à 15:08
Bonjour

Je ne suis pas un spécialiste des macros, mais j'aurai fait avec fin droit et fin bas pour la sélection et un filtre sur la colonne 6 à zéro et suppression des lignes filtrées
Puis on enlève le filtre et on se replace en A1


Sub FILTRESUPPRIME()
'
' FILTRESUPPRIME Macro
'

'
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.AutoFilter Field:=6, Criteria1:="0"
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter
Range("A1").Select
End Sub

0
Nawellita Messages postés 6 Date d'inscription vendredi 13 septembre 2013 Statut Membre Dernière intervention 13 septembre 2013
13 sept. 2013 à 20:38
Thx a lot !!!! Ca m'a l'air pas du tout. Ca se fait illico !

Encore merci à vous et bon WE :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nawellita Messages postés 6 Date d'inscription vendredi 13 septembre 2013 Statut Membre Dernière intervention 13 septembre 2013
13 sept. 2013 à 19:44
Merci Tobas et Philou de vos retours. Je vais tester la méthode du filtre et vous tiens informés.
0