Rendre ma macro plus rapide EXCEL VBA
PYGOS69
Messages postés
452
Date d'inscription
Statut
Membre
Dernière intervention
-
PYGOS69 Messages postés 452 Date d'inscription Statut Membre Dernière intervention -
PYGOS69 Messages postés 452 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche de l'aide pour rendre ma macro plus rapide...
cette MACRO, supprime toutes les lignes, qui ne contiennent pas l'agence nommée "Agence Tours"
La feuille "TEST" contient + de 85000 lignes
C'est très long ! Y'a t'il un moyen de réduire considérablement le délai d'exécution ?
Merci d'avance !
Je cherche de l'aide pour rendre ma macro plus rapide...
Sub SupAutres_Agences() ' Application.ScreenUpdating = False 'Empêche le rafraichissement de l'écran Worksheets("TEST").Select ' sélection feuille ou se trouve les lignes à supprimer For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1 If Not Cells(i, 1) Like "*Tours*" Then Rows(i).Delete 'suivant Next ' Application.ScreenUpdating = True ' End Sub
cette MACRO, supprime toutes les lignes, qui ne contiennent pas l'agence nommée "Agence Tours"
La feuille "TEST" contient + de 85000 lignes
C'est très long ! Y'a t'il un moyen de réduire considérablement le délai d'exécution ?
Merci d'avance !
A voir également:
- Rendre ma macro plus rapide EXCEL VBA
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Acces rapide - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
1 réponse
Bonjour,
Ajoute un filtre auto puis met-toi en enregistrement de macro pour avoir l'essentiel des lignes de code.
Trie par agence (pour qu'elles soient regroupées), sélectionne <> tours, supprime les lignes visibles, ré-affiche tout.
Plus qu'à retoucher le code qu'il soit propre et généraliste.
Ce sera beaucoup plus rapide, la suppression totale se faisant en une fois
eric
Ajoute un filtre auto puis met-toi en enregistrement de macro pour avoir l'essentiel des lignes de code.
Trie par agence (pour qu'elles soient regroupées), sélectionne <> tours, supprime les lignes visibles, ré-affiche tout.
Plus qu'à retoucher le code qu'il soit propre et généraliste.
Ce sera beaucoup plus rapide, la suppression totale se faisant en une fois
eric
Merci pour cette méthode qui me donne un résultat très rapide....
ActiveWorkbook.Worksheets("TEST").ListObjects("Tableau13").Sort.SortFields.Add _
Key:=Range("Tableau13[#All,[Agence]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("TEST").ListObjects("Tableau13").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.ListObjects("Tableau13").Range.AutoFilter Field:=1, Criteria1:= _
"<>Agence Tours", Operator:=xlAnd
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ListObjects("Tableau13").Range.AutoFilter Field:=1
Range("A24").Select
Comment faire comprendre à Excel, que le critère du filtre ("Agence Tours") se trouve en Feuil1 Cellule E1 ?
Car ce critère est un choix de l'utilisateur issu d'un combobox...
Encore Merci !
Car ce critère est un choix de l'utilisateur issu d'un combobox...
quand tu colles un code utilise l'icone '<>' qu'il reste plus lisible.
Une ligne à modifier :
Et il y aurait d'autres choses à améliorer.
Tu devrais déposer un fichier de travail avec qq lignes de données (bidons), avec la structure exacte de ton classeur.
eric
Je prépare un fichier dans la journée, pour l'évolution de la macro ....