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

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

  • TEST.xlsm
    11.4 KB · Affichages: 3
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

resano

XLDnaute Nouveau
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 ?
 

TooFatBoy

XLDnaute Barbatruc
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.
 

resano

XLDnaute Nouveau
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"
 

TooFatBoy

XLDnaute Barbatruc
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:

Discussions similaires

Réponses
17
Affichages
760

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33