Suppression rapide de lignes en VBA

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 !

Risbal14

XLDnaute Nouveau
Bonjour à tous,

Débutant depuis aujourd'hui en VBA, je cherche la solution la plus rapide pour supprimer automatiquement des lignes dans le fichier joint (si cellule i de la colonne H est vide alors suppression de la ligne).

J'ai vu sur le forum différentes alternatives (MATCH, filtre, etc...), mais j'ai des difficultés à m'y retrouver.

J'utilise actuellement la solution par filtre, mais je ne suis pas sûr que ce soit la meilleure et la plus rapide pour un nombre de lignes important.

Avez-vous une idée pour accélèrer le traitement qui peut être parfois de plus de 300 000 lignes?

D'avance merci pour votre contribution.

Boris.
 

Pièces jointes

Re : Suppression rapide de lignes en VBA

Bonjour à tous,J'avais édité mon post (des problèmes d'Explorer 8 m'emp^che régulière ment de mettre des < > )Donc la condition est:
VB:
If T(I, 8) < > "" Then
Regarde l'exemple joint, je ne garde que les lignes qui ont des données en colonne H, je supprime les données de la feuille et je dépose les nouvelles données sur la même feuille.Cordialement
 

Pièces jointes

Dernière édition:
Re : Suppression rapide de lignes en VBA

Jim7963,

Ta macro fonctionne très bien.

Elle met moins d'une minute pour traiter les 7 000L.

Par contre elle met plus de 10 minutes pour traiter 50 000 L.

Les méthodes proposées par TRI mettent moins d'une minute pour traiter le même nombre de lignes.

La méthode d'Efgé semble la plus fonctionnelle puisqu'elle permet de conserver la mise en forme du fichier et de traiter assez rapidement la suppression des lignes.

A suivre.

Boris.
 
Re : Suppression rapide de lignes en VBA

Efgé,

la macro a l'air de bien fonctionner.

Est-il possible de faire l'inverse pour les feuilles, à savoir :

-Onglet 1 : Données brutes : conserver les données d'origine sans modifications.

- Onglet 2 : Données traitées : avoir les données modifiées après suppression des lignes.

D'avance merci.
 
Re : Suppression rapide de lignes en VBA

Re
Comme ceci si tu as bien deux feuilles une "Données brutes" et une "Données Traitées"
VB:
Sub Test()
Dim I&, J&, K&, T As Variant
K = 1
With Sheets("Données brutes")
    T = .Range("A1:O" & .Cells(Rows.Count, 1).End(xlUp).Row)
    .Rows(1).Copy Sheets("Données Traitées").Range("A1")
End With
        
For I = 2 To UBound(T, 1)
    If T(I, 8) < > "" Then
            K = K + 1
            For J = 1 To UBound(T, 2)
                T(K, J) = T(I, J)
            Next J
    End If
Next I

With Sheets("Données Traitées")
    Application.ScreenUpdating = False
    .Columns(1).Resize(, UBound(T, 2)).ClearContents
    .Range("A1").Resize(K, UBound(T, 2)) = T
    .Columns.AutoFit
    Application.ScreenUpdating = True
End With
End Sub
Cordialement
 

Pièces jointes

Re : Suppression rapide de lignes en VBA

Bonsoir à tous,
@ Risbal14

Voici un exemple un peu plus long car j'ai placé un index que je supprime après pour avoir la classement d'origine et traiter plus de lignes.

ce code peut être amélioré.

Essayes et dis-nous

A+

René
 

Pièces jointes

- 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

Réponses
4
Affichages
81
Retour