Microsoft 365 VBA Supprimer lignes en fonction des valeurs d'une cellule

nikholas928

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterai supprimer des lignes dont les valeurs de la colonne E sont strictement inférieures à 511000 et strictement supérieure à 511999. En somme je souhaite conserver les lignes dont les valeurs sont 511***
Je vous joins mon fichier afin d'avoir une idée dans le sens où j'ai testé une macro assez basique (Module 1) mais le problème étant que le nombre de lignes est très conséquent (environ 90 000 lignes) donc c'est beaucoup trop long dans l’exécution.
Auriez-vous une macro adaptée à cette taille de fichier que je pourrai utiliser ?

Merci beaucoup pour votre aide,

Bonne journée,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nikholas, Oneida,
strictement inférieures à 511000 et strictement supérieure à 511999.
J'ai traduit par un OU, et non un ET. ;)
Un essai en PJ avec ce que j'ai compris. Sur mon PC cela met moins d'une seconde pour le fichier traité.
Code:
Sub SuppLignes()
T0 = Timer                                              ' A supprimer, juste pour mesurer le temps
    Application.ScreenUpdating = False                  ' On fige l'écran
    DL = [A1000000].End(xlUp).Row                       ' Dernière ligne de Résultat
    Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Insertion colonne en A
    f = "=SI(OU(F2<511000;F2>511999);CAR(1);0)"         ' Formule utilisée. Attention ajouter 1 aux colonnes pour compenser nouvelle colonne en A.
    With Range("A2:A" & DL)                             ' Plage où coller la formule en colonne A qui sera triée
        .FormulaLocal = f                               ' Coller formule
        .EntireRow.Sort .Cells, xlDescending            ' Tri pour regrouper et accélérer
        .SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete  ' Suppression des lignes concernées
    End With
    [A:A].Delete Shift:=xlToLeft                        ' Effacement colonne A
    Columns.AutoFit                                     ' Ajustement largeurs colonnes
    With ActiveSheet.UsedRange: End With                ' Ajustement barres de défilement
MsgBox "Temps d'éxecution : " & Round(Timer - T0, 3) & "s"  ' A supprimer
End Sub
 

Pièces jointes

  • EXPORT13-01.xlsb
    799.1 KB · Affichages: 5

Phil69970

XLDnaute Barbatruc
Bonjour à tous

Edit :Bonjour Sylvain ma solution est un peu plus lente que la tienne 😢 2,2 s sur mon PC
Edit 2 : @sylvanu ton fichier fige excel sur mon PC

1673630409487.png
@

Je te propose ce fichier

Merci de ton retour

@Phil69970
 

Pièces jointes

  • Garder valeur 511x V1.xlsb
    808.1 KB · Affichages: 4
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Phil,
Vous êtes sous quelle version d' XL ?
Moi, je suis sous Win10 XL2007, et j'obtiens les résultats suivant :
Sylvanu
1673631712631.png

Phil
1673631724534.png


Par contre aviez vous enregistré ma PJ avant de l'exécuter ?
J'ai remarqué qu'une macro lancée d'un fichier directement issu d'internet sans être enregistré est plus lent que si ce fichier était enregistré avant de lancer la macro.
 

Phil69970

XLDnaute Barbatruc
Sylvain

Je suis sur W10 et excel 2010 64 Bits

J'ai lancé ta macro du répertoire C:\Users\Phil\AppData\Local\Temp

Je l'ai fait 2 fois avec les mêmes résultats ~85 s et 2.2 s pour moi sur mon PC
J'ai mis mon fichier dans le même répertoire pour être dans des conditions identiques sur les 2 fichiers

@Phil69970
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Phil,
Alors je ne comprends pas.
J'utilise une méthode qui est utilisée sur de nombreux exemples, et elle est censé être très rapide.
Quand Nikholas passera par là, il pourra vérifié sur son PC les résultats ... et nous les donner.
J'ai mis en PJ votre fichier avec la mesure de temps, Nihkolas pourra comparer.
 

Pièces jointes

  • Garder valeur 511x V1 (phil).xlsb
    796.5 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Phil,
Qu'importe qui est le plus rapide. Ce qui me chagrine c'est qu'on trouve des temps véritablement différent sans explications.
Si encore on trouvait 20 30% de plus, ce serait lié à la version XL ou à la bécane, mais là il y a un truc qui coince.
Et ne pas comprendre, cela revient demain à ce heurter au même écueil.
Bonne soirée. :)
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 253
Membres
102 837
dernier inscrit
CRETE