Macro Excel Suppression de ligne (forte volumétrie)

sebgatz

XLDnaute Nouveau
Bonjour à Tous,

J'ai vu qu'il y avait plein de topics créé sur ce sujet mais je n'en ai pas trouvé qui répondait à mes besoins :D

J'aurai besoin de creer une macro qui supprime les lignes dont le contenu de trois colonnes (G,H,I) est vide.

Pour ce faire, j'ai mis un total en colonne Q (si le résultat est différent de 0 alors au moins une cellule n'est pas vide) afin d'éviter la démultiplication des tests.

Toutefois avec une macro simple qui teste ligne à ligne, je ne m'en sors pas, le classeur fait environ 400 000 lignes (dont environ 300000 de vides).


Au détour de mes recherches sur le net, j'ai trouvé des macro à base de filtre, mais j'avoue ne pas avoir compris grand chose.
 

VDAVID

XLDnaute Impliqué
Re : Macro Excel Suppression de ligne (forte volumétrie)

Bonjour SebGatz,

Pas facile de t'aider sans un fichier exemple ...
Cependant, faire un total sur une colonne intermédiaire pour supprimer des lignes peut s'avérer superflu; en plus d'augmenter considérablement le temps d'exécution de ta macro si tu ne désactives pas le calcul automatique !

Généralement, tu peux créer une macro de suppression de lignes assez facilement.

Peut-être comme ceci:


Code:
Sub suppression()
Application.ScreenUpdating = False
Dim i&
For i =  [LigneMax] To [LigneMin] Step - 1

If Range("G" & i).Value = "" And  Range("H" & i).Value = "" And Range("I" & i).Value = "" Then
Rows(i).Delete
End if
Application.ScreenUpdating = True
Next i
End Sub

A tester en remplacement [LigneMax] par la limite supérieure des lignes et [LigneMin] par la limite inférieure des lignes

Bonne journée !
 

sebgatz

XLDnaute Nouveau
Re : Macro Excel Suppression de ligne (forte volumétrie)

Bonjour David,

Merci pour cette macro :)

Je n'ai pas mis de fichier d'exemple car il s'agit en fait d'un fichier assez simple mais qui présente la particularité d'avoir environ 400000 lignes.

La macro que tu m'as envoyé ressemble beaucoup à celle que j'avais effectué, le seul problème c'est que comme elle teste les lignes une à une, le traitement est extrêmement long (et parfois s’arrête en plein milieu, même quand je désactive le calcul automatique)

N'y a t'il pas une solution plus rapide? (je sais j'en demande beaucoup)
 

VDAVID

XLDnaute Impliqué
Re : Macro Excel Suppression de ligne (forte volumétrie)

Re Sebgatz,

Il n'existe pas, à ma connaissance de moyen plus rapide pour supprimer des lignes ...

Par contre, si tu as plus de lignes vides que pleines, il serais peut être judicieux de récupérer les valeurs des lignes non vides dans une plage de données plus petite.
En gros plutôt que de supprimer toutes les lignes vides de ta plage de données, tu peux "déplacer" celles non-vides et les rassembler.

Un code possible, en décalant sur les colonnes d'à côté:


Code:
Sub transposition()
z = 0
Dim i&
For i = 1 To LigneMax Step 1
If Range("G" & i).Value <> "" Or  Range("H" & i).Value <> "" Or Range("I" & i).Value <> "" Then
z = z + 1
Range("K" & z).Value = Range("G" & i).Value
Range("L" & z).Value = Range("H" & i).Value 
Range("M" & z).Value = Range("I" & i).Value
End if
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35