VBA tri automatique, problème avec cellules protégées

Bonsoir à tous,

Je viens vers vous afin de savoir si quelqu'un peut m'aider à régler un problème que je rencontre avec la protection de cellule dans Excel.

J'ai réalisé un fichier dans lequel j'ai des macros dont une me permettant de réaliser un tri automatique dès qu'une donnée est entrée dans certaines cellules et le problème que je rencontre est le suivant :

Mon code pour effectuer le tri fonctionne parfaitement, mais lorsque je souhaite protéger mes cellules dans lesquelles il y a des formules, bah là ça ne marche plus.

En ce moment j'utilise ce code, mais j'ai le même problème avec d'autres réalisant la même chose.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 8 Or 9 Or 10 Or 11 Or 12 Or 13 Or 14 Or 15 Or 16 Or 22 Then
        Range("A4:V36" & Range("b65536").End(xlUp).Row).Sort Key1:=Range("U5"), Order1:=xlAscending, Header:= _
        xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End If
Application.EnableEvents = True
End Sub

Est-ce que quelqu'un a une idée ? Ou un code VBA qui me permettrait de réaliser mon tri et aussi de verrouiller me cellules qui contiennent des formules.

Je vous en remercie par avance.

J'ai aussi essayé ça avec le fichier joint, même problème dès que je protège mes cellules ayant des formules :

Private Sub Worksheet_Change(ByVal adrcel As Range)
Range("infos").Sort Key1:=Range("rang"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End Sub

Merci.


Une autre façon de faire le tri automatique qui lui m'autorise la protection de cellules mais ce qui m'y dérange c'est le fait que lorsqu'il effectue un tri, il encadre tout le tableau, ce qui d'un point de vu pratique et de visionnage n'est pas terrible (mon tableau est projeté lors des compétitions)

Private Sub Worksheet_Change(ByVal Target As Range)
    Call macro_tri
End Sub

Faisant référence à ce module :

Sub macro_tri()
    Range("A2:G10").Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("G3:G10") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A2:G10")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
35modele-tri.zip (8.96 Ko)
32modele-tri-2.zip (11.32 Ko)

Bonjour,

pourquoi ne pas ôter la protection et la remettre à la fin de la macro, un peu comme ceci ?

Private Sub Worksheet_Change(ByVal adrcel As Range)
ActiveSheet.Unprotect
Range("infos").Sort Key1:=Range("rang"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Ca marche, c'est super. Merci.

Je file au travail, en rentrant je le teste sur le vrai fichier et je fais un retour.

Merci

Rechercher des sujets similaires à "vba tri automatique probleme protegees"