Userform en arrière plan

O

olivier

Guest
Bonsoir à tous,

J'ai de nouveau un petit problème..., oui je sais ça m'arrive souvent!!

J'ai un userform qui reste en arrière plan alors que je ne voudrais plus qu'il s'affiche.
Je m'explique, ou en tout cas je vais détailler la procèdure :
ds une feuille de classeur, j'ai plusieurs boutons qui me permettent de lancer des recherches ds une base d'une autre feuille
-en cliquant sur l'un d'eux, un userform s'affiche avec une liste deroulante et plusieurs cases qui affichent les différentes sociétés ciblées grace à la recherche; ds ce userform j'ai deux boutons : un pour revenir au menu ( pas de souci ça fonctionne ) et l'autre pour un accès direct à la base ( pas de souci non plus )
- cet accès est protégé par mot de passe, un userform demandant ce mot de passe s'affiche, 2 choix de nouveau : un pour annuler et revenir au menu ( ça marche ) et l'autre de validation de ce mot de passe
- c'est là que ça merdouille, car après validation j'aurais aimé que la feuille "base de données " s'affiche et que le userform de menu associé apparaisse hors ce n'est pas le cas.
je reste sur ma page de démarrage avec mes menu, mon userform de recherche, mon userform de mot de passe et enfin mon userform de menu de base, brref un empilement de userform pas joli du tout...

voilà le big souci
je joint les codes de mes userform plus bas

merci de votre future qui me sera obligatoirement utile

olivier

code de user_recherche

Private Sub Retour_menu_Click()


Sheets("Menu principal").Select
Unload Me

End Sub

Private Sub Accesbase_motdepasse_Click()

Mot_de_passe.Show
Unload Me

End Sub


Private Sub societe_Change()

' Envoye la position de la liste deroulante dans i
i = societe.ListIndex
' Donne à la textbox la valeur correspondant au nom
gisement = Worksheets("Recherche").Cells(i + 6, 1).Value
adresse = Worksheets("Recherche").Cells(i + 6, 3).Value
activites = Worksheets("Recherche").Cells(i + 6, 4).Value
tel = Worksheets("Recherche").Cells(i + 6, 5).Value
Fax = Worksheets("Recherche").Cells(i + 6, 6).Value
mail = Worksheets("Recherche").Cells(i + 6, 7).Value
web = Worksheets("Recherche").Cells(i + 6, 8).Value
contact = Worksheets("Recherche").Cells(i + 6, 9).Value
ism = Worksheets("Recherche").Cells(i + 6, 10).Value
rov = Worksheets("Recherche").Cells(i + 6, 11).Value
smi = Worksheets("Recherche").Cells(i + 6, 12).Value
pos = Worksheets("Recherche").Cells(i + 6, 13).Value
cam = Worksheets("Recherche").Cells(i + 6, 14).Value
trasoum = Worksheets("Recherche").Cells(i + 6, 15).Value
porteur = Worksheets("Recherche").Cells(i + 6, 16).Value
End Sub



Private Sub UserForm_Activate()

Application.ScreenUpdating = False
Sheets("Base de données").Select
Range("A5:p5").Select
Selection.AutoFilter
Selection.AutoFilter Field:=16, Criteria1:=True
Range("a6:p50").Select
Selection.Copy
Sheets("Recherche").Select
Range("A6").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A6").Select
Sheets("Base de données").Select
Range("A5:p5").Select
Selection.AutoFilter
Range("A6").Select
Sheets("Recherche").Select
Range("A6").Select
' Declaration de la variable i
Dim i As Integer
Dernieresociete = Range("b6").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
societe.RowSource = "b6:" & Dernieresociete
' Afficher le premier nom de la liste (0 = 1)
societe.ListIndex = 0
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub



Code de user mot_de_passe

Private Sub UserForm_Initialize()
PasDeCroix Me
TextBox1.Value = ""
End Sub

Private Sub Validez_Click()

If TextBox1.Value = "1234" Then
TextBox1.Value = ""
Unload Mot_de_passe
Sheets("Base de données").Select
Menu.Show
Else
MsgBox "Vous n'avez pas accès à cette cellule"
Unload Mot_de_passe
Sheets("Menu principal").Select
End If

End Sub

Private Sub retourmenu_Click()

Unload Mot_de_passe
Sheets("Menu principal").Select
End Sub

Code menu base de données

Private Sub Nouvelentree_Click()
Unload Menu
Sheets("Base de données").Select
Formulaire.Show
End Sub

Private Sub Recherche_Click()
Unload Menu
Recherche.Show
End Sub

Private Sub CommandButton4_Click()
Unload Menu
Sheets("Menu principal").Select
End Sub

Private Sub UserForm_Activate()

Sheets("Base de données").Select
Range("a1").Select

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
 
G

GM

Guest
Bonjour à Tous Bonjour Olivier

Plusieurs exemples sur ce file @+Thierry et Gérard


<http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=6386&t=6311>

ProtectionClasseur.zip


Private Sub UserForm_Activate()
TxtMotDePasse.Value = ""
TxtMotDePasse.SetFocus
Me.Caption = "Entrez le mot de passe. Tentative " & _
compteur + 1 & " sur 3"
End Sub
Private Sub CmdOK_Click()
'La variable compteur servira à compter le nbre de tentatives.
'-------------------------------------------------------------
Static compteur As Byte
compteur = compteur + 1

'On vérifie si le mot de passe entré est bon
'-------------------------------------------
If TxtMotDePasse.Text = "club45" Then
Unload Me
Sheets("Base de données").Select 'met la ta feuille Basse de données
Menu.Show 'la appel ton Userform
Else
'Si c'est la 3e fois que l'utilisateur entre un mot
'de passe incorrect, le programme prend fin
'--------------------------------------------------
If compteur = 3 Then
MsgBox "Echec dans la saisie du mot de passe." & _
vbCrLf & "La commande ne peut être exécutée" & _
vbCrLf & vbCrLf & "Désolé vous n'avez pas l'autorisation d'accés", _
vbOKOnly + vbCritical, "Mot de passe incorrect"
'le mot de passe incorrect, le programme prend fin
'le classeur actif est alors fermer
'--------------------------------------------------
ActiveWorkbook.Close
End
End If
MsgBox "Le mot de passe fourni n'est pas correct." & _
vbCrLf & "La commande ne peut être exécutée", _
vbOKOnly + vbExclamation, "Mot de passe incorrect"
TxtMotDePasse.Value = ""
TxtMotDePasse.SetFocus
Me.Caption = "Entrez le mot de passe. Tentative " & _
compteur + 1 & " sur 3"
i = i + 1
If i = 2 Then
End
End If
End If
End Sub
'*
'La procédure événementielle (UserForm_QueryClose)suivante
'ne permet pas à l'utilisateur de fermer le UserForm en
'cliquant sur le bouton Fermeture:(X).On envoie un message
'----------------------------------------------------------
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
'Me.Hide
MsgBox "Cette commande ne peut être exécutée sans le mot de passe." _
& vbCrLf, vbOKOnly + vbExclamation, "Fin de la commande"
Cancel = True
End If
End Sub

@+ Gérard
 

Discussions similaires

Réponses
6
Affichages
239