Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tablo1, tablo2, i As Byte, bon(255) As String
tablo1 = Array([G:G], [I:I], [K:K], [M:M]) 'plages protégées
tablo2 = Array("tata", "titi", "toto", "tutu") 'mots de passe
For i = 0 To UBound(tablo1)
bon(i) = Application.Index([memo], i + 1)
Next
For i = 0 To UBound(tablo1)
If Not Intersect(Target, tablo1(i)) Is Nothing And bon(i) <> Environ("Username") Then
If InputBox("Mot de passe :", "Plage " & tablo1(i).Address(0, 0)) = tablo2(i) Then
bon(i) = Environ("Username")
ThisWorkbook.Names.Add "memo", bon 'définit le nom
ThisWorkbook.Names("memo").Visible = False 'masque le nom
Else
[A1].Select
Exit Sub
End If
End If
Next
End Sub