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???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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+
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
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+
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
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???
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
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
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
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
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
-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
-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
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)
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+
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)
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
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)
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
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
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
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