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 SubEst-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 SubMerci.
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 SubFaisant 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
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 SubCa marche, c'est super. Merci.
Je file au travail, en rentrant je le teste sur le vrai fichier et je fais un retour.
Merci