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

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 !

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,
 
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

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.
 
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
 
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

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. 🙂
 
- 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

Discussions similaires

  • Question Question
XL 2019 Code VBA
Réponses
12
Affichages
758
Retour