Bonjour,
j'ai un petit souci : je voudrais que si je choisi "Résumé", seules les
feuilles 1 et 5 soient visibles. Et si je choisi "Administrateur", tout est
visible. A votre avis, qu'est ce qui cloche? Merci. YANN
With Me.ComboBox1
.AddItem "Résumé"
.AddItem "Administrateur"
End With
Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub
Private Sub combobox1_Click()
Select Case Me.ComboBox1.Value
Case "Résumé"
ThisWorkbook.IsAddin = False
For I = 5 To 5
Sheets(I).Visible = True
Next
Unload Me
Case "Administrateur"
With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With
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,
la question est qu'est ce qui cloche. Dans la proc qui suit, ce qui se passe, c'est que d'une part en cliquant "Résumé", le classeur qui était Addin devient visible et la feuille 5 s'affiche (d'ailleurs, écrire sheets(5).visible=true devrait suffire plutot que faire une boucle for). Quand on clique "Administrateur", le classeur est toujours Addin et de + le UF est toujours visible et il apparait une zone de texte et une étiquette. Pour l'instant, on en est là! Mais que veux-tu faire ensuite ?
A+
Bonjour, j'ai un petit souci : je voudrais que si je choisi "Résumé", seules les feuilles 1 et 5 soient visibles. Et si je choisi "Administrateur", tout est visible. A votre avis, qu'est ce qui cloche? Merci. YANN
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False For I = 5 To 5 Sheets(I).Visible = True Next Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub
bonjour,
la question est qu'est ce qui cloche. Dans la proc qui suit, ce qui se
passe, c'est que d'une part en cliquant "Résumé", le classeur qui était Addin
devient visible et la feuille 5 s'affiche (d'ailleurs, écrire
sheets(5).visible=true devrait suffire plutot que faire une boucle for).
Quand on clique "Administrateur", le classeur est toujours Addin et de + le
UF est toujours visible et il apparait une zone de texte et une étiquette.
Pour l'instant, on en est là! Mais que veux-tu faire ensuite ?
A+
Bonjour,
j'ai un petit souci : je voudrais que si je choisi "Résumé", seules les
feuilles 1 et 5 soient visibles. Et si je choisi "Administrateur", tout est
visible. A votre avis, qu'est ce qui cloche? Merci. YANN
With Me.ComboBox1
.AddItem "Résumé"
.AddItem "Administrateur"
End With
Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub
Private Sub combobox1_Click()
Select Case Me.ComboBox1.Value
Case "Résumé"
ThisWorkbook.IsAddin = False
For I = 5 To 5
Sheets(I).Visible = True
Next
Unload Me
Case "Administrateur"
With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With
la question est qu'est ce qui cloche. Dans la proc qui suit, ce qui se passe, c'est que d'une part en cliquant "Résumé", le classeur qui était Addin devient visible et la feuille 5 s'affiche (d'ailleurs, écrire sheets(5).visible=true devrait suffire plutot que faire une boucle for). Quand on clique "Administrateur", le classeur est toujours Addin et de + le UF est toujours visible et il apparait une zone de texte et une étiquette. Pour l'instant, on en est là! Mais que veux-tu faire ensuite ?
A+
Bonjour, j'ai un petit souci : je voudrais que si je choisi "Résumé", seules les feuilles 1 et 5 soient visibles. Et si je choisi "Administrateur", tout est visible. A votre avis, qu'est ce qui cloche? Merci. YANN
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False For I = 5 To 5 Sheets(I).Visible = True Next Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub
papou
Re Case "Administrateur" Me.ComboBox1.Visible = False With me.TextBox1 .Visible = True .SetFocus End With Me.Label1.Visible = True
Cordialement Pascal
"YANN24" a écrit dans le message de news:
Bonjour, j'ai un petit souci : je voudrais que si je choisi "Résumé", seules les feuilles 1 et 5 soient visibles. Et si je choisi "Administrateur", tout est
visible. A votre avis, qu'est ce qui cloche? Merci. YANN
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False For I = 5 To 5 Sheets(I).Visible = True Next Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub
Re
Case "Administrateur"
Me.ComboBox1.Visible = False
With me.TextBox1
.Visible = True
.SetFocus
End With
Me.Label1.Visible = True
Cordialement
Pascal
"YANN24" <YANN24@discussions.microsoft.com> a écrit dans le message de
news:87EA9B81-2F5E-444B-9BB5-46D714D4BACA@microsoft.com...
Bonjour,
j'ai un petit souci : je voudrais que si je choisi "Résumé", seules les
feuilles 1 et 5 soient visibles. Et si je choisi "Administrateur", tout
est
visible. A votre avis, qu'est ce qui cloche? Merci. YANN
With Me.ComboBox1
.AddItem "Résumé"
.AddItem "Administrateur"
End With
Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub
Private Sub combobox1_Click()
Select Case Me.ComboBox1.Value
Case "Résumé"
ThisWorkbook.IsAddin = False
For I = 5 To 5
Sheets(I).Visible = True
Next
Unload Me
Case "Administrateur"
With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With
Re Case "Administrateur" Me.ComboBox1.Visible = False With me.TextBox1 .Visible = True .SetFocus End With Me.Label1.Visible = True
Cordialement Pascal
"YANN24" a écrit dans le message de news:
Bonjour, j'ai un petit souci : je voudrais que si je choisi "Résumé", seules les feuilles 1 et 5 soient visibles. Et si je choisi "Administrateur", tout est
visible. A votre avis, qu'est ce qui cloche? Merci. YANN
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False For I = 5 To 5 Sheets(I).Visible = True Next Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub
YANN24
Salut, ce que je veux est toutefois assez simple. A l'ouverture du classeur, si on sélectionne "Résumé", seule la feuille 5 devient visible. Si on sélectionne "Administrateur", alors on demande un mot de passe, et là toutes les feuilles sont visibles. J'ai repris le code que tu m'avais expliqué et super bien aidé à construire pour des années (2005, 2006 et Admin) si tu t'en souviens. Donc le hic ici, c'est que mon "Résumé" ne fonctionne pas, toutes mes feuilles s'affichent. Où me suis-je planté?Merci. YANN
THISWORKBOOK : Private Sub Workbook_Open()
UserForm1.Show
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AfficheBOutils
On Error Resume Next Sheets(1).Visible = True Sheets(5).Visible = True For I = 2 To 4 Next For I = 6 To ThisWorkbook.Sheets.Count Sheets(I).Visible = xlSheetVeryHidden Next ThisWorkbook.IsAddin = True
USERFORM : Private Sub UserForm_Initialize() 'empêche l'affichage de la croix de fermeture en utilisant les API 'déclarées en début de module Dim hwnd As Long hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False Sheets(5).Visible = True Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub Private Sub commandbutton1_Click()
If Me.ComboBox1.Value = "" Then MsgBox "vous n'avez rien saisi" Me.ComboBox1.SetFocus Else If TextBox1.Value = "" Then Else If controlmdp(TextBox1.Value) = True Then ThisWorkbook.IsAddin = False ActiveWorkbook.Unprotect For I = 1 To ThisWorkbook.Sheets.Count Sheets(I).Visible = True Next ActiveWorkbook.Protect Unload Me End If End If End If
End Sub Function controlmdp(nommdp) On Error Resume Next tabmdp = Array("xxx") trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False) If Err.Number <> 0 Then Err.Clear MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé" Else MsgBox "Autorisation acceptée" controlmdp = True End If End Function
Salut,
ce que je veux est toutefois assez simple.
A l'ouverture du classeur, si on sélectionne "Résumé", seule la feuille 5
devient visible.
Si on sélectionne "Administrateur", alors on demande un mot de passe, et là
toutes les feuilles sont visibles.
J'ai repris le code que tu m'avais expliqué et super bien aidé à construire
pour des années (2005, 2006 et Admin) si tu t'en souviens.
Donc le hic ici, c'est que mon "Résumé" ne fonctionne pas, toutes mes
feuilles s'affichent. Où me suis-je planté?Merci. YANN
THISWORKBOOK :
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AfficheBOutils
On Error Resume Next
Sheets(1).Visible = True
Sheets(5).Visible = True
For I = 2 To 4
Next
For I = 6 To ThisWorkbook.Sheets.Count
Sheets(I).Visible = xlSheetVeryHidden
Next
ThisWorkbook.IsAddin = True
USERFORM :
Private Sub UserForm_Initialize()
'empêche l'affichage de la croix de fermeture en utilisant les API
'déclarées en début de module
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D")
& "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
With Me.ComboBox1
.AddItem "Résumé"
.AddItem "Administrateur"
End With
Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub
Private Sub combobox1_Click()
Select Case Me.ComboBox1.Value
Case "Résumé"
ThisWorkbook.IsAddin = False
Sheets(5).Visible = True
Unload Me
Case "Administrateur"
With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With
End Select
End Sub
Private Sub commandbutton1_Click()
If Me.ComboBox1.Value = "" Then
MsgBox "vous n'avez rien saisi"
Me.ComboBox1.SetFocus
Else
If TextBox1.Value = "" Then
Else
If controlmdp(TextBox1.Value) = True Then
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For I = 1 To ThisWorkbook.Sheets.Count
Sheets(I).Visible = True
Next
ActiveWorkbook.Protect
Unload Me
End If
End If
End If
End Sub
Function controlmdp(nommdp)
On Error Resume Next
tabmdp = Array("xxx")
trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False)
If Err.Number <> 0 Then
Err.Clear
MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé"
Else
MsgBox "Autorisation acceptée"
controlmdp = True
End If
End Function
Salut, ce que je veux est toutefois assez simple. A l'ouverture du classeur, si on sélectionne "Résumé", seule la feuille 5 devient visible. Si on sélectionne "Administrateur", alors on demande un mot de passe, et là toutes les feuilles sont visibles. J'ai repris le code que tu m'avais expliqué et super bien aidé à construire pour des années (2005, 2006 et Admin) si tu t'en souviens. Donc le hic ici, c'est que mon "Résumé" ne fonctionne pas, toutes mes feuilles s'affichent. Où me suis-je planté?Merci. YANN
THISWORKBOOK : Private Sub Workbook_Open()
UserForm1.Show
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AfficheBOutils
On Error Resume Next Sheets(1).Visible = True Sheets(5).Visible = True For I = 2 To 4 Next For I = 6 To ThisWorkbook.Sheets.Count Sheets(I).Visible = xlSheetVeryHidden Next ThisWorkbook.IsAddin = True
USERFORM : Private Sub UserForm_Initialize() 'empêche l'affichage de la croix de fermeture en utilisant les API 'déclarées en début de module Dim hwnd As Long hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False Sheets(5).Visible = True Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub Private Sub commandbutton1_Click()
If Me.ComboBox1.Value = "" Then MsgBox "vous n'avez rien saisi" Me.ComboBox1.SetFocus Else If TextBox1.Value = "" Then Else If controlmdp(TextBox1.Value) = True Then ThisWorkbook.IsAddin = False ActiveWorkbook.Unprotect For I = 1 To ThisWorkbook.Sheets.Count Sheets(I).Visible = True Next ActiveWorkbook.Protect Unload Me End If End If End If
End Sub Function controlmdp(nommdp) On Error Resume Next tabmdp = Array("xxx") trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False) If Err.Number <> 0 Then Err.Clear MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé" Else MsgBox "Autorisation acceptée" controlmdp = True End If End Function
anonymousA
re,
je vais supposer que le fichier a été fermé au moins une fois auquel cas , le workbook_beforeClose s'est appliqué. Dans celui-ci , on obtient , si tout s'est déroulé correctement, les feuilles 1 et 5 visibles et les feuilles 6 à worksheets.count cachées. Par contre, à la lecture du code on ne peut se prononcer sur les feuilles 2 à 4.Elles peuvent donc être soit cachées par l'uitilisateur , soit affichées. Si on suppose qu'elles sont affichées durant l'instance d'ouverture du classeur, alors dans ces conditions, à la fermeture du classeur , elles le resteront.
Quand tu va ouvrir ton classeur, celui-ci n'est pas visible puisque IsAddin est true, mais les feuilles 1 à 5 sont quand même visibles du point de vue de la propriété Visible. Donc quand tu cliques sur "Résumé", le classeur n'est plus Addin et tu dois obtenir ( sans qu'il soit nécessaire d'ailleurs du coup de mettre Sheets(5).visible=true) les feuilles de 1 à 5 visibles. Si tu obtiens les feuilles 6 ou plus, c'est que le Workbook_BeforeClose n'a pas réalisé le masquage des feuilles 6 et plus et il faut chercher de ce coté là.
J'espère avoir été clair.
A+
Salut, ce que je veux est toutefois assez simple. A l'ouverture du classeur, si on sélectionne "Résumé", seule la feuille 5 devient visible. Si on sélectionne "Administrateur", alors on demande un mot de passe, et là toutes les feuilles sont visibles. J'ai repris le code que tu m'avais expliqué et super bien aidé à construire pour des années (2005, 2006 et Admin) si tu t'en souviens. Donc le hic ici, c'est que mon "Résumé" ne fonctionne pas, toutes mes feuilles s'affichent. Où me suis-je planté?Merci. YANN
THISWORKBOOK : Private Sub Workbook_Open()
UserForm1.Show
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AfficheBOutils
On Error Resume Next Sheets(1).Visible = True Sheets(5).Visible = True For I = 2 To 4 Next For I = 6 To ThisWorkbook.Sheets.Count Sheets(I).Visible = xlSheetVeryHidden Next ThisWorkbook.IsAddin = True
USERFORM : Private Sub UserForm_Initialize() 'empêche l'affichage de la croix de fermeture en utilisant les API 'déclarées en début de module Dim hwnd As Long hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False Sheets(5).Visible = True Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub Private Sub commandbutton1_Click()
If Me.ComboBox1.Value = "" Then MsgBox "vous n'avez rien saisi" Me.ComboBox1.SetFocus Else If TextBox1.Value = "" Then Else If controlmdp(TextBox1.Value) = True Then ThisWorkbook.IsAddin = False ActiveWorkbook.Unprotect For I = 1 To ThisWorkbook.Sheets.Count Sheets(I).Visible = True Next ActiveWorkbook.Protect Unload Me End If End If End If
End Sub Function controlmdp(nommdp) On Error Resume Next tabmdp = Array("xxx") trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False) If Err.Number <> 0 Then Err.Clear MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé" Else MsgBox "Autorisation acceptée" controlmdp = True End If End Function
re,
je vais supposer que le fichier a été fermé au moins une fois auquel cas ,
le workbook_beforeClose s'est appliqué. Dans celui-ci , on obtient , si tout
s'est déroulé correctement, les feuilles 1 et 5 visibles et les feuilles 6 à
worksheets.count cachées.
Par contre, à la lecture du code on ne peut se prononcer sur les feuilles 2
à 4.Elles peuvent donc être soit cachées par l'uitilisateur , soit affichées.
Si on suppose qu'elles sont affichées durant l'instance d'ouverture du
classeur, alors dans ces conditions, à la fermeture du classeur , elles le
resteront.
Quand tu va ouvrir ton classeur, celui-ci n'est pas visible puisque IsAddin
est true, mais les feuilles 1 à 5 sont quand même visibles du point de vue de
la propriété Visible.
Donc quand tu cliques sur "Résumé", le classeur n'est plus Addin et tu dois
obtenir ( sans qu'il soit nécessaire d'ailleurs du coup de mettre
Sheets(5).visible=true) les feuilles de 1 à 5 visibles.
Si tu obtiens les feuilles 6 ou plus, c'est que le Workbook_BeforeClose n'a
pas réalisé le masquage des feuilles 6 et plus et il faut chercher de ce coté
là.
J'espère avoir été clair.
A+
Salut,
ce que je veux est toutefois assez simple.
A l'ouverture du classeur, si on sélectionne "Résumé", seule la feuille 5
devient visible.
Si on sélectionne "Administrateur", alors on demande un mot de passe, et là
toutes les feuilles sont visibles.
J'ai repris le code que tu m'avais expliqué et super bien aidé à construire
pour des années (2005, 2006 et Admin) si tu t'en souviens.
Donc le hic ici, c'est que mon "Résumé" ne fonctionne pas, toutes mes
feuilles s'affichent. Où me suis-je planté?Merci. YANN
THISWORKBOOK :
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AfficheBOutils
On Error Resume Next
Sheets(1).Visible = True
Sheets(5).Visible = True
For I = 2 To 4
Next
For I = 6 To ThisWorkbook.Sheets.Count
Sheets(I).Visible = xlSheetVeryHidden
Next
ThisWorkbook.IsAddin = True
USERFORM :
Private Sub UserForm_Initialize()
'empêche l'affichage de la croix de fermeture en utilisant les API
'déclarées en début de module
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D")
& "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
With Me.ComboBox1
.AddItem "Résumé"
.AddItem "Administrateur"
End With
Me.TextBox1.Visible = False
Me.Label1.Visible = False
End Sub
Private Sub combobox1_Click()
Select Case Me.ComboBox1.Value
Case "Résumé"
ThisWorkbook.IsAddin = False
Sheets(5).Visible = True
Unload Me
Case "Administrateur"
With Me
.ComboBox1.Visible = False
With .TextBox1
.Visible = True
.SetFocus
End With
.Label1.Visible = True
End With
End Select
End Sub
Private Sub commandbutton1_Click()
If Me.ComboBox1.Value = "" Then
MsgBox "vous n'avez rien saisi"
Me.ComboBox1.SetFocus
Else
If TextBox1.Value = "" Then
Else
If controlmdp(TextBox1.Value) = True Then
ThisWorkbook.IsAddin = False
ActiveWorkbook.Unprotect
For I = 1 To ThisWorkbook.Sheets.Count
Sheets(I).Visible = True
Next
ActiveWorkbook.Protect
Unload Me
End If
End If
End If
End Sub
Function controlmdp(nommdp)
On Error Resume Next
tabmdp = Array("xxx")
trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False)
If Err.Number <> 0 Then
Err.Clear
MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé"
Else
MsgBox "Autorisation acceptée"
controlmdp = True
End If
End Function
je vais supposer que le fichier a été fermé au moins une fois auquel cas , le workbook_beforeClose s'est appliqué. Dans celui-ci , on obtient , si tout s'est déroulé correctement, les feuilles 1 et 5 visibles et les feuilles 6 à worksheets.count cachées. Par contre, à la lecture du code on ne peut se prononcer sur les feuilles 2 à 4.Elles peuvent donc être soit cachées par l'uitilisateur , soit affichées. Si on suppose qu'elles sont affichées durant l'instance d'ouverture du classeur, alors dans ces conditions, à la fermeture du classeur , elles le resteront.
Quand tu va ouvrir ton classeur, celui-ci n'est pas visible puisque IsAddin est true, mais les feuilles 1 à 5 sont quand même visibles du point de vue de la propriété Visible. Donc quand tu cliques sur "Résumé", le classeur n'est plus Addin et tu dois obtenir ( sans qu'il soit nécessaire d'ailleurs du coup de mettre Sheets(5).visible=true) les feuilles de 1 à 5 visibles. Si tu obtiens les feuilles 6 ou plus, c'est que le Workbook_BeforeClose n'a pas réalisé le masquage des feuilles 6 et plus et il faut chercher de ce coté là.
J'espère avoir été clair.
A+
Salut, ce que je veux est toutefois assez simple. A l'ouverture du classeur, si on sélectionne "Résumé", seule la feuille 5 devient visible. Si on sélectionne "Administrateur", alors on demande un mot de passe, et là toutes les feuilles sont visibles. J'ai repris le code que tu m'avais expliqué et super bien aidé à construire pour des années (2005, 2006 et Admin) si tu t'en souviens. Donc le hic ici, c'est que mon "Résumé" ne fonctionne pas, toutes mes feuilles s'affichent. Où me suis-je planté?Merci. YANN
THISWORKBOOK : Private Sub Workbook_Open()
UserForm1.Show
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
AfficheBOutils
On Error Resume Next Sheets(1).Visible = True Sheets(5).Visible = True For I = 2 To 4 Next For I = 6 To ThisWorkbook.Sheets.Count Sheets(I).Visible = xlSheetVeryHidden Next ThisWorkbook.IsAddin = True
USERFORM : Private Sub UserForm_Initialize() 'empêche l'affichage de la croix de fermeture en utilisant les API 'déclarées en début de module Dim hwnd As Long hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
With Me.ComboBox1 .AddItem "Résumé" .AddItem "Administrateur" End With
Me.TextBox1.Visible = False Me.Label1.Visible = False End Sub
Private Sub combobox1_Click() Select Case Me.ComboBox1.Value
Case "Résumé" ThisWorkbook.IsAddin = False Sheets(5).Visible = True Unload Me
Case "Administrateur" With Me .ComboBox1.Visible = False With .TextBox1 .Visible = True .SetFocus End With .Label1.Visible = True End With
End Select End Sub Private Sub commandbutton1_Click()
If Me.ComboBox1.Value = "" Then MsgBox "vous n'avez rien saisi" Me.ComboBox1.SetFocus Else If TextBox1.Value = "" Then Else If controlmdp(TextBox1.Value) = True Then ThisWorkbook.IsAddin = False ActiveWorkbook.Unprotect For I = 1 To ThisWorkbook.Sheets.Count Sheets(I).Visible = True Next ActiveWorkbook.Protect Unload Me End If End If End If
End Sub Function controlmdp(nommdp) On Error Resume Next tabmdp = Array("xxx") trouve = Application.WorksheetFunction.HLookup(nommdp, tabmdp, 1, False) If Err.Number <> 0 Then Err.Clear MsgBox "Vous n'êtes pas autoriser à pénétrer cet espace réservé" Else MsgBox "Autorisation acceptée" controlmdp = True End If End Function