enlever la protection et la remettre sur Private

excelo

XLDnaute Occasionnel
Bonjour, voila mon problème :
j'ai une macro qui permet en cliquant sur la feuille 1 de lancer la macro "tri" de la feuille 2 (base de donné salariés). le souci c'est que la feuille 2 comporte une protection que je voudrais enlever pour procéder au tri et reprotéger lorsque le tri est fait.
Voilà mon code :

Private Sub Worksheet_Activate()
tri
End Sub
Sub tri()
Dim sh As Worksheet
Set sh = Sheets("base de donné salariés")
ActiveSheet.Unprotect Password:="papi"
sh.Columns("B:M").Sort Key1:=sh.Range("C2"), Order1:=xlAscending, Key2:=sh.Range("E2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
With Worksheets("base de donné salariés")
sh.Protect Contents:=True, Password:="papi", UserInterfaceOnly:=True
End With


End Sub

en rouge c'est ce que j'ai ajouté pour permettre de déprotéger et reprotéger la feuille 2 ("base de donné salariés") mais ça ne marche pas, savez vous d'ou vient le problème?
Merci pour votre aide
 

Gorfael

XLDnaute Barbatruc
Re : enlever la protection et la remettre sur Private

Salut excelo et le forum
Petits rappels :
Excel fais ce que tu lui demandes et quelques (rares) fois ce que tu veux !
Utilises les balises de code (icone # en mode avancé)

Je ne comprends pas pourquoi tu n'as pas mis directement ton code dans la macro activate : comme tu ne peux utiliser un tri que sur la feuille active... (du moins, à ma connaissance)

On donne un code faux, une erreur précise ("ça ne marche pas"), aucune indication de ce qu'est supposé faire le code et il ne reste plus qu'à attendre le miracle.
Il n'y a ni devin, ni télépathe sur ce site
A+
 

excelo

XLDnaute Occasionnel
Re : enlever la protection et la remettre sur Private

Bonjour Gorfael, le forum
je connaissais pas l'icone #
Pour résumer lorsque je clique sur la feuille "fiche contrat", je souhaiterai que le tri du tableau qui se trouve sur la feuille "base de donné salariés" se fasse, le souci c'est que cette feuille comporte une protection que je voudrais enlever et remettre aprés le tri,
voic le code :
Code:
Private Sub Worksheet_Activate()
    tri
End Sub

Sub tri()
    Dim sh As Worksheet
    Set sh = Sheets("base de donné salariés")
    
    ActiveSheet.Unprotect Password:="papi"
    
    sh.Columns("B:M").Sort Key1:=sh.Range("C2"), Order1:=xlAscending, Key2:=sh.Range("E2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
        
        With Worksheets("base de donné salariés")
 sh.Protect Contents:=True, Password:="papi", UserInterfaceOnly:=True
 End With

End Sub


, merci pour votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : enlever la protection et la remettre sur Private

Bonjour,

si ta procédure "tri" se trouve dans le module de la feuille concernée :
Code:
Sub tri()
With Me
    .Unprotect Password:="papi"
    .Columns("B:M").Sort Key1:=.Range("C2"), Order1:=xlAscending, Key2:=.Range("E2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
    .Protect Contents:=True, Password:="papi", UserInterfaceOnly:=True
End With
End Sub

bon après midi
@+
 

excelo

XLDnaute Occasionnel
Re : enlever la protection et la remettre sur Private

Bonjour Pierrot93,
justement la procédure du module tri ne se trouve pas dans la feuille concerné mais sur une autre feuille 2 qui se nomme "base de donné salariés" je n'arrive pas à vous envoyer mon fichier car il dépasse la taille autorisée
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 503
Messages
2 089 062
Membres
104 014
dernier inscrit
Aurélie MONTEIL