fusion de deux vba

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.
 

Pièces jointes

  • version avec feuille en mot de passe.xlsm
    149.2 KB · Affichages: 12
  • version avec disparition des feuilles.xlsm
    98.9 KB · Affichages: 15

Discussions similaires

  • Résolu(e)
XL 2021 macro
Réponses
9
Affichages
428

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T