XL 2016 Autorisation du triage des colonnes avec protection de la feuille activé

Charles Sion

XLDnaute Nouveau
Bonjour à tous,
Après quelques heures de recherche sur diverses forum je me résigne à mon problème sur ce forum qui semble
regorger de bienveillance à l'égard de néophyte dans mon genre :)

Données de départ :
Entreprise avec Exchange
Classeur Excel sous office 365
Certaines colonnes de ce classeur son protéger en écriture via la macro VBA suivante (pompé sur ce forum d'ailleurs) :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("RD").Protect "Atelier6"
'éventuellement à activer pour sauvegarde automatique sans le message
'à la fermeture d'Excel, mais attention en cas d'erreur, le bon classeur sera écrasé
'ThisWorkbook.Save
End Sub

Jusqu'ici tout va bien mais je voudrais aller plus loin...

1) La personne qui ouvre ce classeur sans enlever la protection ne peut pas effectuer de tri sur les colonnes
que les colonnes soit elle même protégées ou non c'est le même problème : aucun tri possible...

Avez vous dans les tiroirs une petite macro pour ça ? :)

2) Certaines personnes doivent pouvoir administrer ce tableau plusieurs fois par jour
Pouvons nous imaginer de permettre à certain utilisateur de ne pas avoir besoin de saisir de mot de passe pour pouvoir utiliser complètement le tableau ?

Avez vous dans les tiroirs une autre petite macro pour ça ? :)

Merci d'avance pour vos réponses
 

sousou

XLDnaute Barbatruc
Bonjour
1/ ajouter
AllowSorting:=True la ligne de protection pou autoriser le tri ( pour voir les options utilise l'enregistreur de macro..)
Sheets("RD").Protect "Atelier6", AllowSorting:=True
2/ tu peux toujours faire ceci, et tu affecte un ctr(secret)l pour la lancée
Sub ouvre()
activesheets.unprotect("Atelier6")
End Sub
 

Charles Sion

XLDnaute Nouveau
Bonjour,
Merci de t'occuper de mon cas
Cependant je suis vraiment novice de chez novice en programmation excel (et même excel tout court d’ailleurs)
J'ai tenter de copier coller les macros que tu me propose :

Sheets("RD").Protect "Atelier6", AllowSorting:=True

et

Sub ouvre()
activesheets.unprotect("Atelier6")
End Sub

Malheureusement aucune des 2 fonctionne dans le cas présent... ?
Une idée ?

Merci d'avance
 

sousou

XLDnaute Barbatruc
bonjour
je suppose que lorsque tu parles de tri tu parles plutôt de filtre? alors:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Pour la deprotection 'auto', tou dépend de la façon dont ton réseau et surtout la manière dont excel est installé, il faudrait pouvoir récupérer le nom de la personne qu'il l'ouvre du genre application.username, mais je serais étonné qu cela fonctionne
Peut _être l'ouvrir à partir d'un autre fichier qui ne serait que sur les postes concernés je regarde
 

Charles Sion

XLDnaute Nouveau
Effectivement je parle de filtre et non de tri... :)
après essai ça fonctionne ! plus besoin de libérer le document pour filtrer les colonnes
Cependant le mot de passe à sauté, il suffit de cliquer sur Ôter la protection pour que le document soit libéré.

En plaçant ton fichier ouverture planning dans le dossier ou ce trouve le tableau : cela fonctionne mais le problème c'est que rien n’empêche une personne n'étant pas censé travailler sur le document déverrouiller d'utiliser ce lien pour le faire librement :(

J'ai récupérer ce type de formule dans une ancienne version du fichier qui ne fonctionne plus.... j'ai essayer de faire un copier coller de la fonction mais ça ne fonctionne pas...

Private Sub Workbook_Open()

Colonne_STM = Array(14, 8, 14, 14, 15, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 46, 18, 24, 15, 60, 50, 7, 14, 7, 16, 30)
Colonne_RD = Array(14, 8, 14, 14, 15, 12, 12, 12, 12, 6, 8, 8, 14, 10, 14, 46, 18, 24, 15, 60, 50, 7, 14, 7, 16, 30)

User = Get_Login
Select Case User
Case "pupitre", "NSoudain", "mverheecke"
Entreprise_RD = True
Call liberer
Call Init_Colonne
Case Else
Entreprise_RD = False
Call liberer
Call Init_Colonne
Call proteger
End Select

End Sub


Merci SOUSOU !
 

Pièces jointes

  • PLANNING PMN-TOLERIEold.xlsm
    136.6 KB · Affichages: 6

sousou

XLDnaute Barbatruc
Effectivement pas dans le dossier!
ouvre le fichier ouverture planning
n'autorise pas les marcos
déprotège la feuille
entre en a1 le chemin du fichier par rapport au poste utilisateur
modifie la macro comme ceci
Private Sub Workbook_Open()
Set f = Workbooks.Open(ThisWorkbook.Path.Sheets(1).Range("a1") & "PLANNING PMN-TOLERIEold.xlsm")
f.Sheets("rd").Unprotect ("Atelier6")
ThisWorkbook.Close
End Sub
enregistre et ferme le fichier

Dans le fichier planning:
ActiveSheet.Protect "Atelier6", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells
 

Charles Sion

XLDnaute Nouveau
Ok ca deviens pas mal du tout !!!! :)
du coter du fichier planning c'est tout bon
du coter du fichier ouverture il me stipule un problème de compilation (Qualificateur incorrect)

Private Sub Workbook_Open()
Set f = Workbooks.Open(ThisWorkbook.Path.Sheets(1).Range("a1") & "PLANNING PMN-TOLERIEold.xlsm")
f.Sheets("rd").Unprotect ("Atelier6")
ThisWorkbook.Close
End Sub

Au niveau du .Path semble t'il
 

Charles Sion

XLDnaute Nouveau
Bonjour SOUSOU,
A première vue cela fonctionne parfaitement !
Mille merci
je met tout ça en service d'ici ce soir et croise les doigts pour que cela continue de fonctionner :)
Bonne journée
 

Pièces jointes

  • ouverture planning.xlsm
    14.2 KB · Affichages: 8
  • PLANNING PMN-TOLERIEold.xlsm
    136.7 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
315 132
Messages
2 116 587
Membres
112 798
dernier inscrit
nicoolio