Trier des données dans un tableau protégé

Bonjour,

Après avoir parcouru plusieurs sujets sur le même thème, puis tenté de rédiger un code avec l'enregistreur de macro sans succès.. je sollicite votre aide pour savoir si mon projet est réalisable ou non. Dans une feuille de mon fichier, il y a un tableau dans lequel toutes les cellules sont verrouillées afin que l'utilisateur ne puisse pas modifier manuellement les données. Toutefois, je souhaiterai que chacun ait la possibilité de filtrer et/ou de trier ces données. Dans mon exemple, j'ai créé une colonne "Rang", l'objectif étant de créer un bouton permettant de mettre à jour le tri croissant sur cette colonne. Sauf qu'Excel ne permet pas le tri lorsque les cellules sont verrouillées. J'ai fait une tentative avec un code qui déverrouille les cellules, puis applique le tri et verrouille les cellules. Cependant, bien que la feuille soit verrouillée les données du tableau restent quant à elles déverrouillées et donc modifiables..

Je vous joins mon fichier, ainsi que le code.

En vous remerciant par avance pour vos retours.

Sub TRIER()
'
' TRIER Macro
'

'
    ActiveSheet.Unprotect
    ActiveWorkbook.Worksheets("Classement").ListObjects("Tableau23").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Classement").ListObjects("Tableau23").Sort. _
        SortFields.Add Key:=Range("Tableau23[[RANG ]]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Classement").ListObjects("Tableau23").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowSorting:=True, AllowFiltering:=True
End Sub
5test-trie.xlsm (84.17 Ko)

Bonsoir ELOTJ et le forum

J'ai supprimé votre tableau après l'avoir copié. Mystère
La macro fonctionne maintenant correctement.

Cdt

Papy Henri

4test-trie.xlsm (78.16 Ko)

Bonjour AFEH,

Merci beaucoup pour ton retour.

Je vois que le code a été sacrément épuré !

Etonnamment celui-ci fonctionne parfaitement dans ton fichier mais lorsque je l'insère dans le mien, j'obtiens ce message :"La méthode Sort de la classe Range a échoué."

Sub Trier()
    With Sheets("Classement")
    .Unprotect
        [Tableau23].Sort key1:=[Tableau23[RANG]], Header:=xlYes, Order1:=xlAscending
    .Protect
    End With
End Sub

Bonsoir ELOTJ et merci pour votre retour
Il se peut que cela vienne de l'entête de colonne "RANG". Je l'avais corrigée car il y avait un blanc derrière le G.

Si vous gardez ce blanc, rectifier le code en conséquence, comme ceci

Sub Trier()
    With Sheets("Classement")
    .Unprotect
        [Tableau23].Sort key1:=[Tableau23[RANG ]], Header:=xlYes, Order1:=xlAscending
    .Protect
    End With
End Sub

Cdt

Papy Henri

Bonjour ELOTJ
Ne pas oublier de clôturer ce sujet si problème résolu.
Cdt
Papy Henri

Rechercher des sujets similaires à "trier donnees tableau protege"