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

Accélérer macro

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

E

EXCELERATOR

Guest
Bonjour,

J'ai un fichier qui me permet de traiter des données.

J'ai une macro pour supprimer les lignes, mais elle est très très lente... sniff

Si quelqu'un a une idée pour la booster ?

Merci

Sub ETAPE2B()
Dim i As Long
For i = [A8001].End(xlUp).Row To 2 Step -1
Select Case Left(Cells(i, 1), 2)
Case "", "0"
Rows(i).Delete
End Select
Next i
End Sub
 
Re : Accélérer macro

bonjour EXCELERATOR,

voici Ce lien n'existe plus de l'excellent Laurent Longre dédié à l'accélération du code.
La partie 2 est très facile à mettre en place et assez efficace. Les parties 1 et 3 sont plus des bonnes pratiques plus ou moins spécifiques à Excel.

a+
 
Re : Accélérer macro

Bonjour



Avec ceci , cela devrait aller plus vite

Pour tester , il faut un entête à ta colonne A
Code:
Sub test_suppr_lignes()
Dim I_Will As Range, f As Range
Application.ScreenUpdating = False
[B2].FormulaR1C1 = "=MID(RC[-1],2,1)*1=0"
Range([A1], [A65536].End(xlUp)).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B1:B2"), Unique:=False
Set f = [_FilterDataBase]
Set I_Will = f.Offset(1, 0).Resize(f.Rows.Count - 1).SpecialCells(12)
Application.DisplayAlerts = False
I_Will.Delete: Columns(2).Delete
ActiveSheet.ShowAllData
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 
Re : Accélérer macro

Merci pour ta réponse rapide STAPLE 1600:
J'ai toutefois une erreur comme ci-dessous ??


Sub test_suppr_lignes()
Dim I_Will As Range, f As Range
Application.ScreenUpdating = False
[B2].FormulaR1C1 = "=MID(RC[-1],2,1)*1=0"
Range([A1], [A65536].End(xlUp)).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B1:B2"), Unique:=False
Set f = [_FilterDataBase]
Set I_Will = f.Offset(1, 0).Resize(f.Rows.Count - 1).SpecialCells(12)
Application.DisplayAlerts = False
I_Will.Delete: Columns(2).Delete
ActiveSheet.ShowAllData
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 
Re : Accélérer macro

Re

Chez moi pas d'erreur 😀

Bon bah j'arrive chez toi alors, t'habite ou dans Longwy?

(et on mange quoi ce midi ? j'ai faim )

Après relecture de mon code, je détaille ce qu'il fait
Il suprimme les lignes dont les cellules contiennent un 0 en deuxième position
ex: si en colonne A, des cellules contiennent les nombres ci-dessous, leur ligne seront effacées
20
205
2015

or toi tu veux effacer les lignes des cellules vides et des cellules égales à zéro c'est cela ?

Si oui, il suffira de modifier mon code précédent

Mais pour le moment je m'absente

Bon appétit à tous
 
Dernière édition:
Re : Accélérer macro

Sur la place !!

Ok ca marche, mais ça a tout supprimer !!

En fait en colonne A j'ai des valeurs, je veux juste supprimer les lignes qui commence par un blanc ou par un zéro.

Sinon effectivement ta macro est rapide
 
Re : Accélérer macro

re,

Voici un exemple d'utilisation de ce qui est présenté sur le précédent lien et qui est facilement appliquable quelque soit la macro utilisée :
Code:
Public Sub MacroMajCalendrier()
Dim mem1 As Long, mem2 As Long, mem3 As Long
    'mémoriser/désactiver les options d'excel
    mem1 = Application.Calculation: Application.Calculation = xlCalculationManual
    mem2 = Application.EnableEvents: Application.EnableEvents = False
    mem3 = Application.ScreenUpdating: Application.ScreenUpdating = False
    
    'exécuter la macro
    On Error Resume Next
     [COLOR=Red][B]ETAPE2B[/B][/COLOR]
    On Error GoTo 0
    
    'rétablir les options d'excel
    Application.Calculation = mem1
    Application.EnableEvents = mem2
    Application.ScreenUpdating = mem3

End Sub

a+
 
Re : Accélérer macro

Bonjour à tous

J'ai eu le même cas hier, j'ai voulu travailler sur à peine 200 lignes et quelques colonnes, et la copie prennait presque 1 seconde par ligne ! L'origine : de nombreuse cellules calculée, et un Excel qui fait son recalcul à chaque changement, même d'un autre classeur.

Ma solution : la même que celle proposé par mromain : virer ce fichut calcul auto, puis le rétablir : Application.Calculation = xlCalculationManual / Application.Calculation = xlCalculationAuto.
Le gain est spectaculaire.

O
 
Re : Accélérer macro

Salut ROMAIN et ODESTA,

Merci pour ta solution, ça va accélérer un peu mon fichier.

Mais il mouline toujours !! 😀

Je vais continuer de cherche un code qu'excel gérera plus rapidement, je vous fais signe si je trouve quelque chose?.

😎
 
Re : Accélérer macro

Re


Je vais continuer de cherche un code qu'excel gérera plus rapidement, je vous fais signe si je trouve quelque chose?.
Utilises en le modifiant celui indiqué quand j'avais faim 😀

Tu verras que c'est très rapide.

EDITION: voici la version modifiée selon ta problématique

Code:
Sub test_suppr_lignes_v2()
Dim I_Will As Range, f As Range
Application.ScreenUpdating = False
[B2].FormulaR1C1 = "=OR(CODE(MID(RC[-1],1,1))=32,CODE(MID(RC[-1],1,1))=48)"
Range([A1], [A65536].End(xlUp)).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B1:B2"), Unique:=False
Set f = [_FilterDataBase]
Set I_Will = f.Offset(1, 0).Resize(f.Rows.Count - 1).SpecialCells(12)
Application.DisplayAlerts = False
I_Will.Delete: Columns(2).Delete
ActiveSheet.ShowAllData
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

PS: Chez moi cela fonctionne, donc si ce n'est pas le cas chez toi
relis bien mes messages.
 
Dernière édition:
Re : Accélérer macro

Bonjour le forum,
Je me fixe a ce post car j'ai un fichier de 3211 KO avec des userforms (20) ( je ne peut pas transmettre de fichier car les modififs créer des bugs) il y a beaucoup de checkbox et ce rame grave . Mis seul sur un autre fichier les userform fonctionne sans aucun probleme ça fonce 1 seconde mais dans mon fichier 25 secondes.
Avez vous déja recontré ce probleme ? merci de votre aide

HD006
 
- 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
5
Affichages
911
Réponses
15
Affichages
786
Réponses
10
Affichages
663
Réponses
5
Affichages
573
Réponses
7
Affichages
367
Réponses
5
Affichages
418
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…