Macro et filtre automatique.

red-69

XLDnaute Nouveau
Bonjour à tous,

je travaille sur un tableau conséquent et j'ai réalisé une macro. Pour chaque nom trouvé dans la colonne N, une nouvelle feuille est créée où s'insèrent toutes les données relatives au nom trouvé dans cette colonne N.
Jusqu'ici tout va bien.

J'ai ensuite voulu ajouté un filtre automatique dans les nouvelles feuilles créées à partir de la ligne 6.
Le problème c'est que parfois dans certaines feuilles je retrouve mon filtre mais dans d'autres, le filtre ne se créer pas, sans qu'il y ai une logique (en tout cas je ne la trouve pas) entre le cas ou le filtre est créé et le cas ou le filtre ne l'est pas.

Pourriez-vous jetez un coup d'œil à ma macro et me dire ce qui cloche ??!! moi je suis perdu.

Voici la macro que j'utilise :


Option Explicit

Public Sub Tri_par_nom()
' en fonction de la valeur de la colonne N
' création d'une feuille avec nom colonne N
' autres colonnes documentant les cellules concernées
Dim W1 As Worksheet ' feuille base
Dim W2 As Worksheet ' feuille client
Dim lig As Long ' ligne traitée
Dim feu As Object ' feuille présente
Dim ong As Integer ' numèro feuille
Set W1 = Sheets("Feuil1") ' position feuille base
Application.ScreenUpdating = False
For Each feu In Sheets ' suppression feuilles
If feu.Name <> W1.Name Then
Application.DisplayAlerts = False
feu.Delete
Application.DisplayAlerts = True
End If
Next feu
' création des feuilles client
For lig = 8 To W1.Cells(65536, 14).End(xlUp).Row
For ong = 1 To Sheets.Count ' test existance feuille
If Sheets(ong).Name = UCase(W1.Cells(lig, 14).Text) Then
Set W2 = Sheets(ong)
Exit For
End If
Next ong
If ong > Sheets.Count Then
For ong = 2 To Sheets.Count ' tri feuille
If Sheets(ong).Name > UCase(W1.Cells(lig, 14).Text) Then Exit For
Next ong ' création feuille
Sheets.Add(After:=Sheets(ong - 1)).Name = UCase(W1.Cells(lig, 14).Text)
Set W2 = ActiveSheet
W1.Rows("1:7").Copy Destination:=W2.Rows("1:7") ' ajout titre

End If
W1.Rows(lig).Copy Destination:=W2.Rows(W2.Cells(65536, 14).End(xlUp).Row + 1) ' ajout ligne traitée


Sheets(W2.Name).Select
Cells.Select
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit


Sheets(W2.Name).Select
Rows("7:100").Select 'tri par date
ActiveWindow.SmallScroll Down:=-96
Selection.Sort Key1:=Range("O8"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveWindow.SmallScroll Down:=-15
Range("A1").Select

Sheets(W2.Name).Select
Range("D6:AL6").Select
Selection.AutoFilter
Range("A1").Select


Next lig
W1.Activate
Application.ScreenUpdating = True
End Sub


Merci. A+
 

red-69

XLDnaute Nouveau
Re : Macro et filtre automatique.

Voici le fichier en question.
Pour des raisons de confidentialité logique j'ai supprimé quasiment l'ensemble des colonnes, cela donne un exemple. J'ai donc modifié la macro en conséquence pour effectuer le trie sur la colonne E et non plus N.

Voila

A+
 

Pièces jointes

  • EXEMPLE.zip
    23.1 KB · Affichages: 55
  • EXEMPLE.zip
    23.1 KB · Affichages: 53
  • EXEMPLE.zip
    23.1 KB · Affichages: 55

Discussions similaires

Réponses
1
Affichages
204

Statistiques des forums

Discussions
312 594
Messages
2 090 088
Membres
104 371
dernier inscrit
Momo6767