OVH Cloud OVH Cloud

Pb Combobox

4 réponses
Avatar
YANN24
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

4 réponses

Avatar
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


Avatar
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


Avatar
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

Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit

End Sub

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
Avatar
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

Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit

End Sub

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