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

Suppression rapide de lignes en VBA

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

  • Macro synthèse globale.xlsm
    640.1 KB · Affichages: 150

Efgé

XLDnaute Barbatruc
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

  • Synthèse(5).zip
    416.6 KB · Affichages: 97
  • Synthèse(5).zip
    416.6 KB · Affichages: 76
  • Synthèse(5).zip
    416.6 KB · Affichages: 83
Dernière édition:

Risbal14

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

Risbal14

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

Efgé

XLDnaute Barbatruc
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

  • Synthèse(6).zip
    417.6 KB · Affichages: 45
  • Synthèse(6).zip
    417.6 KB · Affichages: 36
  • Synthèse(6).zip
    417.6 KB · Affichages: 29

néné06

XLDnaute Accro
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

  • Copie de Copie de Macro synthèse globale-3.xlsm
    645.5 KB · Affichages: 32

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…