Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

acces lignes par mot de passe

7 réponses
Avatar
Vincent
bonjour,

Peut on dans une feuille excel protégée, rendre accessible une ligne après
identification de l'utilisateur( nom + mot de passe), donc une ligne
déprotégée par utilisateur???

merci

7 réponses

Avatar
anonymousA
Bonjour,

dans Excel2000, car dans les version supérieures il y a des
paramètres nouveaux et je nepossède pas autre chose que 2000.

Il te faut utiliser une procédure evenementielle à placer dans le
module de la feuille qui t'interesse

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
If InputBox("mot de passe") = "mdp" Then
Me.Unprotect "mdp"
Target.EntireRow.Cells.Locked = False
'(ou une autre ligne dont il faut désigner le N°)
Me.Protect "mdp"
End If
Cancel = True
End Sub
A noter que dans ces conditions la ligne en question reste
dévérouillée

A+
Avatar
Vincent
Mais sur un tableau d'une 20taine de lignes, est ce que je peux rendre
accessible une ligne par utilisateurs, après saisie dunom d'utilisateur et
d'un mot de passe???
exemple
en cellule A3, le nom est Vincent, A4 jerome, A5 antoine , a la saisie d'un
des trois au choix, et à la saisie du mot de passe correspondant , déprotégé
la ligne 3, 4 ou 5.


bonjour

Peut on dans une feuille excel protégée, rendre accessible une ligne après
identification de l'utilisateur( nom + mot de passe), donc une ligne
déprotégée par utilisateur???

merci


Avatar
JB
Bonjour,

Autre version: On rétablit la protection dès que l'on quitte la
ligne.

Dim mémo As Boolean, ligne
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
If InputBox("Mot de passe") = "moi" Then
mémo = True
ligne = Target.Row ' on mémorise la ligne
Me.Unprotect "moi"
Target.EntireRow.Cells.Interior.ColorIndex = 36
End If
Cancel = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If mémo Then
If Target.Row <> ligne Then
Cells(ligne, 1).EntireRow.Cells.Interior.ColorIndex = xlNone
Me.Protect "moi"
mémo = False
End If
End If
End Sub

http://cjoint.com/?bnnKfX6puD

Cordialement JB
Avatar
JB
-L'opérateur double-clique sur la ligne 3,4,5.
-Dès qu'il change de ligne, la feuille est à nouveau protégée.

Dim mémo As Boolean, ligne
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Select Case Target.Row
Case 3
mp = "vincent"
Case 4
mp = "paul"
Case 5
mp = "lesautres"
End Select
If InputBox("Mot de passe") = mp Then
mémo = True
ligne = Target.Row ' on mémorise la ligne
Me.Unprotect "moi"
Target.EntireRow.Cells.Interior.ColorIndex = 36
End If
Cancel = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If mémo Then
If Target.Row <> ligne Then
Cells(ligne, 1).EntireRow.Cells.Interior.ColorIndex = xlNone
Me.Protect "moi"
mémo = False
End If
End If
End Sub

JB
Avatar
anonymousA
Bien sur, il suffit d'adapter la proc avec 2 inpubox ou un seul ou
encore envoyer l'apparition d'un userfrom avec 2 controles de texte .
Dans ce qui suit on teste le nom et le mdp . arrnoms représente le
tableau des noms et arrrows la correspondance biunivoque du tableau des
lignes associées. Tu peux rajouter des noms et des lignes aux
tableaux. L'essentiel pour que ca marche c'est qu'elles soient en
correspondance

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)

arrnoms = Array("moi/moimdp", "toi/toimdp", "nous/nousmdp",
"vous/vousmdp")
arrrows = Array(2, 6, 8, 10)

On Error Resume Next
response = Application.WorksheetFunction.Match(InputBox("Entrez nom et
mdp séparés par un / ex: toto /totomdp", "MOT DE PASSE"), arrnoms, 0)
If Err = 0 Then
Me.Unprotect "mdp"
Cells(arrrows(response - 1), 1).EntireRow.Cells.Locked = False
Me.Protect "mdp"
Else
MsgBox "le couple nom/mdp est erroné"
End If
Cancel = True

End Sub

A+
Avatar
JB
J'avais oublié une ligne

http://cjoint.com/?bnobYm7AmT

JB
Avatar
JB
Bonjour,

Solution automatique sans mot de passe en utilisant le nom
d'utilisateur réseau:

PJ http://cjoint.com/?bogkXru2gX

Protection dynamique d'une ligne en réseau local
-L'opérateur clique sur son nom (A4,A5,A6,....).
-La ligne lui est accessible
-Dès qu'il quitte la ligne, celle ci ci ne lui est plus accessible.

A B
4 jboisgon
5 pdupont
6 lmoresco

Dim mémo As Boolean, ligne
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [A3:A10]) Is Nothing And Target.Count = 1
Then
If UCase(Target.Value) = UCase(GetUserName()) Then
mémo = True
ligne = ActiveCell.Row ' on mémorise la ligne
Me.Unprotect "moi"
Cells(ligne, 2).Resize(, 5).Interior.ColorIndex = 36
End If
End If
If mémo = True Then
If Target.Count > 1 Or Target.Row <> ligne Then
Cells(ligne, 2).Resize(, 5).Interior.ColorIndex = xlNone
Me.Protect "moi"
mémo = False
End If
End If
End Sub

Dans un module (Alt+F11) puis Insertion/Module:

Option Explicit
Declare Function wu_GetUserName Lib "advapi32.dll" Alias "GetUserNameA"
(ByVal lpBuffer As String, nSize As Long) As Long
Function GetUserName() As Variant
Dim strUserName As String, lngLength As Long, lngResult As Long
strUserName = String$(255, 0)
lngLength = 255
lngResult = wu_GetUserName(strUserName, lngLength)
GetUserName = Left(strUserName, InStr(1, strUserName, Chr(0)) - 1)
End Function

Cordialement JB