Une macro pour supprimer des lignes

Avisdebi

XLDnaute Nouveau
Bonjour,

J'ai un fichier avec des données sur plusieurs colonnes dont une donne des catégories. J'aimerais créer une macro pour chaque nom de catégorie pour éliminer toutes les lignes qui ne sont pas de cette catégories. Dans le fonds je veux que les résultats de chaque catégorie sois généré dans un onglet distinc. La longueur du fichier peut varier donc il faut que la macro dise que lorsqu'il n'y a plus de donné on arrête.
 

Pièces jointes

  • MACRO POUR SUPPRIMER LIGNE.xlsm
    17.5 KB · Affichages: 14
Dernière édition:

Avisdebi

XLDnaute Nouveau
Re @Avisdebi,

Une version V2 beaucoup plus rapide.
ah non! J'ai bousiller la macro! a l'aide! La ligne
If t(i, 1) <> t(n, 1) Then n = n + 1: t(n, 1) = t(i, 1)

Voici la macro:

Dim sh As Worksheet, source As Range, t, i&, n&, idx&, ti
ti = Timer: Application.ScreenUpdating = False
Worksheets("Détail_Hre_FT").Copy before:=Worksheets(1)
With ActiveSheet
If .AutoFilterMode Then .Cells.AutoFilter
Set source = .Range("a1").CurrentRegion
source.Sort key1:=.Range("d1"), order1:=xlAscending, Header:=xlYes
source.AutoFilter: t = source.Columns(4)
n = 2
For i = 3 To UBound(t)
If t(i, 1) <> t(n, 1) Then n = n + 1: t(n, 1) = t(i, 1)
Next i
On Error Resume Next
For i = 2 To n
source.AutoFilter Field:=4, Criteria1:=t(i, 1)
idx = 0: idx = Sheets(t(i, 1)).Index
If idx = 0 Then With Worksheets.Add(after:=Worksheets(Worksheets.Count)): .Name = t(i, 1): End With
With Sheets(t(i, 1))
.UsedRange.Clear
source.SpecialCells(xlCellTypeVisible).Copy .Range("a1")
End With
Next i
.ShowAllData: .Activate
Application.DisplayAlerts = False: .Delete
MsgBox "Terminé en " & Format(Timer - ti, "0.00\sec.")
End With
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Attention! Nous devons (au moins en Europe) respecter scrupuleusement le RGPD. (voir ici pour plus d'info)
Le règlement de XLD le précise également (voir ICI) et notre administrateur est très à cheval sur ce point car sa responsabilité peut être engagée.
Dans le fichier que vous avez fourni (message Lien supprimé), il me semble fortement probable que des données personnelles de personnes existantes y figurent (noms/prénoms). Il faut supprimer le fichier de votre message et le remplacer par un fichier "anonymisé" le plus rapidement possible.
D'avance, merci.
 
Dernière édition:
Haut Bas