Permettre aux utilisteurs de modifier des plages

thierry79

XLDnaute Nouveau
Bonjour
je voudrai savoir comment écrire la protection "Permettre aux utilisateurs de modifier des plages" en VBA.
je m"explique:
je vais créer des listes avec menus déroulants et je voudrai que les droits dans d'autres cellules soit accordé automatiquement à la personne affichée dans la cellule du menu déroulant.
merci d'avance:cool:
 

Victor21

XLDnaute Barbatruc
Re : Permettre aux utilisteurs de modifier des plages

Bonjour, Thierry, Michel ;)

Loin d'être à l'aise avec VBA, voici comment je procéderais :
1° réaliser la déprotection des cellules attribuées au premier nom en activant l'enregistreur de macros (le module sera créé automatiquement)
2° tester, et si ça coince... (Aller à 8°)
3° initialiser une Private Sub Worksheet_Change(ByVal Target As Range) dans le code de la feuille concernée, avec un select case sur les items de la liste déroulante
4° tester, et si ça coince... (Aller à 8°)
5° appeler dans cette procédure le code de la macro créée par l'enregistreur dans le module
6° tester, et si ça coince... (Aller à 8°)
7° dupliquer le code du module, et en modifier les références aux cellules pour chaque nom de la liste déroulante.
8° tester, et si ça coince... (Aller à 8°)
6° revenir en joignant ce qui a été fait, comme le suggère MJ13.
 

thierry79

XLDnaute Nouveau
Re : Permettre aux utilisteurs de modifier des plages

Bonjour
DSL MJ13 j'y penserai la prochaine fois.
Merci Victor21 pour le coup de main
J'ai essayé mais pas de résultat concluant. Regarde c'est la macro 1 et 2
Sinon j'ai trouvé ça dans l'aide d'Excel. C'est pas mal, la protection se fait mais il n'y pas de variable pour les autorisations. si t'as une idée...
---------------------------------
Sub UseAllowEditRanges()

Dim wksOne As Worksheet
Dim wksPassword As String

Set wksOne = Application.ActiveSheet

' Unprotect worksheet.
wksOne.Unprotect

wksPassword = InputBox("Enter password for the worksheet")

' Establish a range that can allow edits
' on the protected worksheet.
wksOne.Protection.AllowEditRanges.Add _
Title:="Classified", _
Range:=Range("A1:A4"), _
Password:=wksPassword

' Notify the user
' the title and address of the range.
With wksOne.Protection.AllowEditRanges.Item(1)
MsgBox "Title of range: " & .Title
MsgBox "Address of range: " & .Range.Address
End With

End Sub
-----------------------
merci d'avance

ps
je ne sais pas si la pièce jointe est vraiment jointe, donc dsl si elle est en double
 

Pièces jointes

  • Test protection.xls
    21 KB · Affichages: 48

Discussions similaires