Olivier GUILLOT
XLDnaute Nouveau
Bonjour à tous,
je rencontre une difficulté :
j'ai pu créer deux formules VBA me permettant de gérer la protection des feuilles excel
1) dans un premier fichier : à partir d'une feuille de synthèse, j'accède aux feuilles qui possèdent chacune un mot de passe :
la rédaction de la formule VBA est :
dans le workbook :
Option Explicit
Public Feuille_quittée As String
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim DerLig As Integer
Application.ScreenUpdating = False
If Feuille_quittée <> "" And Feuille_quittée <> "Ensemble Personnel" Then
DerLig = Sheets(Feuille_quittée).Cells.SpecialCells(xlCellTypeLastCell).Row
Sheets(Feuille_quittée).Rows("1:" & DerLig).EntireRow.Hidden = True
End If
If ActiveSheet.Name <> "Ensemble Personnel" Then
UserForm1.Show
Feuille_quittée = ActiveSheet.Name
End If
End Sub
Dans le code de la boite de dialogue du mot de passe :
Option Explicit
Private Sub CommandButton1_Click()
Dim Mot_de_passe As String
Application.ScreenUpdating = False
If ActiveSheet.Name = "JF" Then
Mot_de_passe = "x"
Else
If ActiveSheet.Name = "Ensemble Personnel" Then
Mot_de_passe = "x"
End If
End If
If TextBox1 <> Mot_de_passe Then
MsgBox "Le mot de passe n'est pas valable"
TextBox1 = ""
TextBox1.SetFocus
Exit Sub
End If
Unload Me
Rows("1:" & Rows.Count).EntireRow.Hidden = False
End Sub
Private Sub CommandButton2_Click()
Unload Me
Sheets("Ensemble Personnel").Activate
Exit Sub
End Sub
2) dans un second fichier, on accède aux feuilles excel par un clic droit sur le nom de chaque feuille inscrit sur une feuille de synthèse :
les formules dans le VBA sont :
dans la feuille de synthèse
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("a1:a30")) Is Nothing Then
Cancel = True
Sheets(CStr(Target.Value)).Visible = -1
Sheets(CStr(Target.Value)).Select
End If
End Sub
dans le workbook :
Private Sub Workbook_Open()
ActiveWorkbook.Worksheets("ensemble de l'équipe").Activate
End Sub
' copie de la fonction de masquage
'
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> "Ensemble de l'équipe" Then Sh.Visible = 2
End Sub
'
Ma question est la suivante : comment peut on combiner les deux fichiers de manières à accéder aux feuilles en faisant un clic droit sur le nom de chacune et de protéger chaque feuille ?
Merci à tous pour votre aide.
je rencontre une difficulté :
j'ai pu créer deux formules VBA me permettant de gérer la protection des feuilles excel
1) dans un premier fichier : à partir d'une feuille de synthèse, j'accède aux feuilles qui possèdent chacune un mot de passe :
la rédaction de la formule VBA est :
dans le workbook :
Option Explicit
Public Feuille_quittée As String
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim DerLig As Integer
Application.ScreenUpdating = False
If Feuille_quittée <> "" And Feuille_quittée <> "Ensemble Personnel" Then
DerLig = Sheets(Feuille_quittée).Cells.SpecialCells(xlCellTypeLastCell).Row
Sheets(Feuille_quittée).Rows("1:" & DerLig).EntireRow.Hidden = True
End If
If ActiveSheet.Name <> "Ensemble Personnel" Then
UserForm1.Show
Feuille_quittée = ActiveSheet.Name
End If
End Sub
Dans le code de la boite de dialogue du mot de passe :
Option Explicit
Private Sub CommandButton1_Click()
Dim Mot_de_passe As String
Application.ScreenUpdating = False
If ActiveSheet.Name = "JF" Then
Mot_de_passe = "x"
Else
If ActiveSheet.Name = "Ensemble Personnel" Then
Mot_de_passe = "x"
End If
End If
If TextBox1 <> Mot_de_passe Then
MsgBox "Le mot de passe n'est pas valable"
TextBox1 = ""
TextBox1.SetFocus
Exit Sub
End If
Unload Me
Rows("1:" & Rows.Count).EntireRow.Hidden = False
End Sub
Private Sub CommandButton2_Click()
Unload Me
Sheets("Ensemble Personnel").Activate
Exit Sub
End Sub
2) dans un second fichier, on accède aux feuilles excel par un clic droit sur le nom de chaque feuille inscrit sur une feuille de synthèse :
les formules dans le VBA sont :
dans la feuille de synthèse
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("a1:a30")) Is Nothing Then
Cancel = True
Sheets(CStr(Target.Value)).Visible = -1
Sheets(CStr(Target.Value)).Select
End If
End Sub
dans le workbook :
Private Sub Workbook_Open()
ActiveWorkbook.Worksheets("ensemble de l'équipe").Activate
End Sub
' copie de la fonction de masquage
'
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> "Ensemble de l'équipe" Then Sh.Visible = 2
End Sub
'
Ma question est la suivante : comment peut on combiner les deux fichiers de manières à accéder aux feuilles en faisant un clic droit sur le nom de chacune et de protéger chaque feuille ?
Merci à tous pour votre aide.