Useform : afficher et fermer dans certains cas

noemie45

XLDnaute Occasionnel
Bonjour,

j'ai crée un userfom que j'utilise comme masque de saisie, il sert a alimenter une base de donnée sous excel.
j'ai 2 types d'utilisateurs :
Utilisateurs 1
Ils ne voient pas la base. ils saississent et ferment le userform.
Utilisaterurs 2
Ouvre la base, par l'intermédiaire d'un bouton sur le userfor, avec un accès sécurisé et travaillent directement sur le fichier excel

Mon problème est que dans le workook j'ai mis ce code :

End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
userform1.Show
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
userform1.Hide
End Sub

Pour que les utilisateurs 1 puissent naviguer entre plusieurs fichiers.
Donc dès qu'ils vont sur un autre fichier, et qu'ils reviennent sur le fichier en question le userform reapparait

Par contre, je ne voudrais pas que ceci se produise pour les utilisateurs 2.

Est ce que vous avez une idée???
Par exemple; lorsque les utilisateurs 2 ouvrent la base ceci ferme définitivement le useform mais il faudrait déplacer le code cité ci-dessus ailleurs (mais je ne sais pas où)

je suis désolé mais je ne peux pas fournir d'exemple, j'ai des codes de partout dans mon userform!!
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Useform : afficher et fermer dans certains cas

Bonjour le fil, bonjour le forum,

Tu es désolé car tu ne peux pas fournir d'exemple et pour t'aider il faudrait qu'on recrée ton environnement selon les explications que tu nous as données !
L'idée de Vgendron est bonne et ce n'est pas très compliquée àlmettre en place mais si tu ne fais aucun effort en nous fournissant un fichier exemple comment allons-nous faire ?
Tu parles d'un accès "sécurisé" par l'intermédiaire d'un bouton. On pourrait aussi se servir de cette "sécurité" si tu daignes en donner ne serait-ce qu'un aperçu.
 

vgendron

XLDnaute Barbatruc
Re : Useform : afficher et fermer dans certains cas

Virtuel le fichier? ;-) (t'inquiètes, la premiière fois, je m'y suis repris à 5 fois..)
pour le joindre "Aller en mode avancé",
Gérer les pièces jointes (faut descendre un peu la fenetre)

Parcourir, sélectioner
ENVOYER
fermer cette fenetre
et envoyer la réponse
 

vgendron

XLDnaute Barbatruc
Re : Useform : afficher et fermer dans certains cas

Bonjour,

Je ne suis pas sur d'avoir compris ce que tu souhaites faire..

au lancement du fichier, le userform s'ouvre:
--> les utilisateurs 1 peuvent saisir et lorsqu'ils ont fini, ils ferment le userform et voila
--> les utilisateurs 2 peuvent ouvrir la base (avec mot de passe) et faire ce qu'ils ont à faire..
lorsqu'ils ont fini, ils ferment le fichier.
ou alors, ils peuvent rouvrir le formulaire (avec le bouton Saisir une anomalie)
mais s'ils veulent revenir sur la base, il doivent à nouveau saisir le mot de passe.. est ce que c'est ca qui gêne?
 

vgendron

XLDnaute Barbatruc
Re : Useform : afficher et fermer dans certains cas

Bon. j'ai un souci avec le fichier, dès que je modifie un truc, à l'ouverture suivante, il veut me charger une DLL..??

l'idée serait donc
1) Déclarer une variable publique: dim TypeUtilisateur as integer
'TypeUtilisateur=1 pour les accès restreints au formulaire
'TypeUtilisateur=2 pour les accès à la base

2) à l'ouverture du fichier, mettre par défaut TypeUtilisateur =1
3) sur clic du bouton VP pour accès à la base
après validation du mot de passe, passer, le TypeUtilisateur =2

4) et dans le workbook activate:
if TypeUtilisateur=1 then userform1.show 'on ne montre le userform à nouveau que si il s'agit d'un user avec accès restreint

5) et dans le workbook deactivate
if userform1.hidden=false then userform1.hide 'on le cache que si il était affiché.. sinon; risque de bug

c'est tout ce que je peux faire pour le moment. en espérant que ca t'aide quand meme
je vais essayer de regler ce pb de dll.. mais..
 

noemie45

XLDnaute Occasionnel
Re : Useform : afficher et fermer dans certains cas

ok je comprends le principe,
par contre est ce que tu peux me détailler le point 1 & 2.
ou est ce que je déclare la variable dim TypeUtilisateur as integer
et surtout comment j'écris que :
2) à l'ouverture du fichier, mettre par défaut TypeUtilisateur =1
3) sur clic du bouton VP pour accès à la base
après validation du mot de passe, passer, le TypeUtilisateur =2

merci
 

vgendron

XLDnaute Barbatruc
Re : Useform : afficher et fermer dans certains cas

Hello
c'est plus simple qu'il n'y parait:
1) pour déclarer la varialbe
Dans ton module 1
Code:
Option Explicit
Public MaDate As Date
Public TypeUtilisateur as integer
'TypeUtilisateur=1 pour les accès restreints au formulaire
'TypeUtilisateur=2 pour les accès à la base

dans le ThisWorkbook
tu rajouttes juste dans le Workbook_Open au début

Code:
TypeUtilisateur=1


et dans la macro Private Sub CommandButton1_Click
Code:
Private Sub CommandButton1_Click()
    If TextBox1.Text = "" Then
        MsgBox ("Mot de passe OK")
        TypeUtilisateur = 2
        Unload Me
        Unload userform1
                
        'Affiche les onglets
        Application.DisplayFullScreen = False
        Sheets("anomalie").Visible = True
        Sheets("anomalie").Select
        Range("A1").Select
    Else
        MsgBox "Erreur de mot de passe"
        TextBox1 = ""
    End If
End Sub
 

noemie45

XLDnaute Occasionnel
Re : Useform : afficher et fermer dans certains cas

la macro beug, lorsque je vais sur un autre fichier,
jai ce message d'erreur
Capture.JPG
et ça met la ligne suivante en jaune :
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)

je ne sais pas quoi changé..
heureusement que ce forum existe!!
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    32.5 KB · Affichages: 83
  • Capture.JPG
    Capture.JPG
    32.5 KB · Affichages: 82

Statistiques des forums

Discussions
312 923
Messages
2 093 665
Membres
105 780
dernier inscrit
Autric