XL 2013 Ôter protection feuille selon sélection d'une plage

  • Initiateur de la discussion Initiateur de la discussion resano
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

resano

XLDnaute Nouveau
Bonjour,

Après plusieurs recherches je n'ai pas trouvé de solutions au problème suivant :

Je souhaiterais lorsqu'un utilisateur sélectionne une plage (exemple : ("A4:Q4")) la protection de la feuille s'enlève et que l'utilisateur puisse couper coller. Quand cette opération est effectuée la protection de la feuille "redémarre".

- La plage de sélection doit s'appliquer sur une plage variable (for x = 4 to 12000)
- Si la plage de sélection n'est pas comprise entre la colonne A et Q rien ne se passe
- La manipulation couper coller se fait manuellement ( est il possible de faire comprendre a Excel si clique droit couper coller ont été réalisé)

J'ai essayé commencé un code mais étant un débutant je ne vois pas comment faire


VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
dim x as Integer
for x = 4 to 12000
If  selection = Range("A" & x ":Q"& x ) Then
Sheets("Planning").Unprotect "vba"
'Manipulation couper coller
Sheets("Planning").Protect "vba"
End If

End Sub

Merci Par avance pour votre aide votre forum m'a toujours permis de trouver des solutions 🙂

Résano
 

Pièces jointes

Solution
Je ne pige pas ton test.

Je verrais plutôt un truc du genre :
Set ZoneAutorisee = Range("A:Q")
Set ZoneAction = intersect(Target, ZoneAutorisee)
Ainsi dans ta variable ZoneAction tu n'as que les cellules autorisées parmi celles sélectionnées.

En suite tu ajoutes un test genre
If ZoneAction not is nothing then
...
End if
Bonjour,

Comme il s'agit d'un planning de tâches, la priorité des tâches peuvent changer. le fichier compte plusieurs utilisateurs qui n'ont accès qu'a une partie du fichier. ils n'ont pas accès aux parties des autres utilisateurs. L'utilisateur qui décide de la priorité des tâches doit pouvoir juste pour couper coller les informations fournies par les autres utilisateur pour éviter des décalages.

Suis-je clair ?
 
Dans ce cas, il faudrait peut-être définir une plage de cellules pour chaque type d'tilisateur et n'autoriser la macro à agir que sur l'intersection entre sa plage autorisée et la plage qu'il a sélectionnée.

En VBA il y a Intersect, Si je me rappelle bien, qui permet de connaître les cellules communes à deux plages.
 
Ok ça marche mais pas comme je veux.
comment peut-on faire pour que ce la fonctionne que si je sélectionne de A:Q ? car là ça enlève la protection a chaque fois que sélectionne une cellule
VB:
If Intersect(Range("A:G"), Range("G:M"), Range("M:Q")) Is Nothing Then
Sheets("Planning").Unprotect "vba"
 
Je ne pige pas ton test.

Je verrais plutôt un truc du genre :
Set ZoneAutorisee = Range("A:Q")
Set ZoneAction = intersect(Target, ZoneAutorisee)
Ainsi dans ta variable ZoneAction tu n'as que les cellules autorisées parmi celles sélectionnées.

En suite tu ajoutes un test genre
If ZoneAction not is nothing then
...
End if
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
1 K
Retour