VBA & Filtres

marie -  
 Utilisateur anonyme -
Bonjour,

Je dois faire le tri a l'ouverture d'un fichier sur une colonne
Le tri doit se faire a partir de la ligne 3 .Actuellement il fait bien le tri croissant de la colonne 3 mais place tout sur la ligne 2, alors que ligne1 & 2 sont des titres.
Ce doit être tout con mais je ne trouve pas et je ne sais pas ce qu'il faut que je change sur mes codes ci dessous.

Si quelqu'un peu m'aider , ce serait trop super!

<code>Private Sub Workbook_Open() 

Sheets("BD").Select

Dim mdp As String

Application.ScreenUpdating = False

ActiveSheet.Unprotect "lilop16"
On Error Resume Next

Columns("A:BL").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Selection.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd

Feuil1.EnableAutoFilter = True
ActiveSheet.Protect "lilop16", UserInterfaceOnly:=True
Application.ScreenUpdating = True
Feuil1.Protect Contents:=True, UserInterfaceOnly:=True

Sheets("Nouveau").Select
Range("D5").Select

End Sub</code>

1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    Suggestion :

    Option Explicit  
    
    Public Const MDP = "lilop16"  
    '  
    
    Sub Test()  
    
        Dim Limite As Long  
          
        On Error Resume Next  
          
        Application.ScreenUpdating = False  
          
        Sheets("BD").Select  
        ActiveSheet.Unprotect MDP  
          
        Limite = ActiveSheet.Range("B65536").End(xlUp).Row  
        Range("B3:B" & Limite).Select  
        Selection.Sort Key1:=Range("B3:B" & Limite), Order1:=xlAscending, _  
            Header:=xlYes, OrderCustom:=1, MatchCase:= _  
            False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal  
    
        Columns("A:BL").Select 
        Selection.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd  
        Feuil1.EnableAutoFilter = True  
          
        ActiveSheet.Protect MDP, UserInterfaceOnly:=True  
        Feuil1.Protect Contents:=True, UserInterfaceOnly:=True  
          
        Sheets("Nouveau").Select  
        Range("D5").Select  
          
        Application.ScreenUpdating = True  
    
    End Sub  
    '  
    


    En fait, je crois que la ligne [Columns("A:BL").Select] est de trop!
    À valider :-)

    Cdt

    Lupin
    0