Formulaire de démarrage ACCESS ?

Résolu
bonjour

je construis une base de données access et un certains nombre d'utilisateurs vont pouvoir soit consulter soit pour d'autres rentrer des données.

je vais donc créer deux groupes de travail : utilisateur et opérateur

4 directions seront amenées à consulter cette base.

j'ai donc créer un formulaire de démarrage, en distinguant ces 4 directions avec leurs formulaires à consulter etc... une macro s'effectue à l'ouverture pour qu'il n'accede seulement à leurs données
cependant ils peuvent malgré tout dans ce formulaire démarrage aller cliquer sur une autre direction
comment faire pour que chacun n'accede seulement à sa partie ? et que les autres soient indispo ?
je vous remercie beaucoup !!!!
bonne journée à tous
Configuration: Windows XP
Internet Explorer 6.0

21 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    ce que tu peux faire, c'est un formulaire avec des onglets où chaque onglet sera masqué/démasqué en fonction du profil de l'utilisateur (stocké dans ta base)...
    1. super !!! merci blux je vais m'orienter de ce côté en espérant que j'arrive à faire fonctionner ça !!!
      1. encore une petite question...

        comment faire pour masquer ou démasquer en fonction de l'utilisateur ???

        Merrrrrciii
        1. Modérateur
          Supposons que tu aies un formulaire proncipal avec un contrôle onglet où les onglets sont nommés onglet1, onglet2, onglet3...

          Il suffit de faire un test sur l'utilisateur dans l'évènement "sur ouverture" du formulaire principal, et tu tapes ensuite la séquence de masquage/démasquage des onglets auxquels chacun a droit.
          If User = "chef"
            me.onglet1.visible=true
            me.onglet2.visible=false
          else
            me.onglet1.visible=false
            me.onglet2.visible=true
          end if

          A toi ensuite de mettre ce qu'il faut dans chaque onglet pour qu'il ne travaille que sur les données qui sont les siennes...
          1. snif...

            j'ai donc repris ce que tu m'avais dit !

            au départ quand je commence à taper j'ai :

            Private Sub Form_Open(Cancel As Integer)
            je suppose donc qu'il faut que je note le nom de mon formulaire à la place de form ?

            ensuite quand je tape ma procédure ::::>erreur de compilation : then ou goto !!!!

            If User = "chef" ::::::::::::::::::::::>je tape le nom de l'utilisateur
            me.onglet1.visible=true ::::::::::> le nom de l'onglet visible
            me.onglet2.visible=false :::::::::> le nom de l'onglet invisible voire plus car 4 onglets doivent etre cachés
            else
            me.onglet1.visible=false ::::::::::>et là je comprends plus rien !
            me.onglet2.visible=true::::::::::::>pourquoi ces deux phrases ??!
            end if


            après j'imagine que je refais la même chose avec les autres utilisateurs !!

            vraiment je suis nulle là... désolée.... :-(
            1. Modérateur
              je suppose donc qu'il faut que je note le nom de mon formulaire à la place de form ?
              Non, puisque le code est mis dans le formulaire, il s'aplique à lui...

              ensuite quand je tape ma procédure ::::>erreur de compilation : then ou goto !!!!
              C'est normal, j'ai oublié un then à la fin du if...;-)

              me.onglet1.visible=false ::::::::::>et là je comprends plus rien !
              me.onglet2.visible=true::::::::::::>pourquoi ces deux phrases ??!

              Si tu caches l'onglet1 pour tout le monde sauf chef, il faut faire l'inverse quand c'est pas chef...

              Je te propose autre chose (plus facile à gérer) :
              Dim Nom As String
              ' on cache tout
              Me.Page1.Visible = False
              Me.Page2.Visible = False
              Me.Page3.Visible = False
              Nom = Chx_Nom.Value
              ' On affiche en fonction du user
              Select Case Nom
              Case "user1"
                  Me.Page1.Visible = True
                  Me.Page2.Visible = False
                  Me.Page3.Visible = False
              Case "user2"
                  Me.Page1.Visible = False
                  Me.Page2.Visible = True
                  Me.Page3.Visible = False
              Case "user3"
                  Me.Page1.Visible = False
                  Me.Page2.Visible = False
                  Me.Page3.Visible = True
              Case Else
                  MsgBox "utilisateur non reconnu !"
                  GoTo Fin:
              End Select
              Fin:
              C'est toujours à copier dans l'évènement 'sur ouverture' du formulaire qui contient ton contrôle onglet...
              1. Merci de ta réponse
                je viens de faire mes essais...

                Quand je lance mon appli avec mon login, la phrase
                Nom = Chx_Nom.Value
                se met en jaune....

                de plus faut il aussi que je mette mon login dans les users ?

                Merci...blux
                1. Modérateur
                  En fait, c'est le nom d'une zone dans laquelle je saisis un nom pour mes tests, mais dans ton cas, le nom est récupéré par une autre méthode, je suppose (user de connexion windows, identifiant rentré par textbox ou autre...), c'est ce que tu appelles ton "login", mais je ne sais pas ce qu'il signifie...
                  1. j'ai crée des "utilisateurs" dans le groupe "lecture seule" dans le module assistant sécurité au niveau utilisateur
                    c'est ce nom là qu'il doit aller chercher...
                    1. Modérateur
                      Dans ce cas, il faut tester UserName, c'est l'utilisateur courant de la base ACCESS...
                      Select Case UserName...
                      --
                      A+ Blux
                       "Les cons, ça ose tout.
                      C'est même à ça qu'on les reconnait"
                      1. selon ta procédure :
                        Dim Nom As String
                        ' on cache tout
                        Me.Page1.Visible = False
                        Me.Page2.Visible = False
                        Me.Page3.Visible = False
                        Nom = Chx_Nom.Value
                        ' On affiche en fonction du user
                        Select Case Nom
                        Case "user1"
                        Me.Page1.Visible = True
                        Me.Page2.Visible = False
                        Me.Page3.Visible = False
                        Case "user2"
                        Me.Page1.Visible = False
                        Me.Page2.Visible = True
                        Me.Page3.Visible = False
                        Case "user3"
                        Me.Page1.Visible = False
                        Me.Page2.Visible = False
                        Me.Page3.Visible = True
                        Case Else
                        MsgBox "utilisateur non reconnu !"
                        GoTo Fin:
                        End Select
                        Fin:

                        je remplace UserName partout où se trouve le mot nom en gras ?
                        c'est vraiment pas simple de programmer ! quand on y connait rien !
                        pfffff !!!
                        thanks
                        1. Modérateur
                          Non, tu supprimes les lignes qui y font référence et tu changes la ligne :
                          Select Case Nom
                          par
                          Select Case UserName

                          1. je vais pleurer !
                            je n'ai plus d'erreur dans mon vba par, mais à l'ouverture, j'ai le droit au message suivant : pas d'utilisateur reconnu ! !!!!!!!!!!
                            mais pourquoi tout s'acharne sur moi !
                            1. Modérateur
                              Tu rentres comment ton nom d'utilisateur ?
                              Quand tu te connectes à la base, il te demande un nom spécial ?

                              Tu devrais mettre un affichage du nom du user :

                              Msgbox "#"+UserName+"#" avant le Select Case, comme ça tu pourras voir quelle en est sa valeur...
                              1. j'utilise de module "assistant sécurité au niveau utilisateur" du menu outils / sécurité
                                * je choisis de créer un nouveau groupe
                                *suivant et je coche la première option, je ne change rien d'autre
                                *ensuite je vais jusqu'à l'onglet des groupes puis je coche lecture seule, ensuite suivant
                                *je laisse l'option par défaut cochée
                                * là je tape le nom de l'utilisateur ex : chef
                                * son mot de passe
                                * je ne touche pas à la case pid (j'ai peut etre tort)
                                *je choisis ensuite à quel groupe appartient l'utilisateur donc "chef" au groupe lecture seul"
                                *suivant et terminé...

                                et au démarrage d'access il me demande le nom et le mot de passe

                                j'ai testé le code à rajouter avant select case et il n'apparait rien à l'excusion entre les ##

                                voilà...
                                mais.. j'y crois j'y crois !
                                merci blux

                                voilà je ne vois pas où est l'erreur...
                                1. Merci merci merci mille fois !!!
                                  cela marche !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                                  c'est super !

                                  Vraiment MERCI blux !
                                  1. Modérateur
                                    Tant mieux...:-)

                                    N'oublie pas de marquer le problème comme résolu...
                                2. oui c'est fait .. par contre.. je me rends compte que mes utilisateurs peuvent s'il le souhaite afficher la fenetre base de données en faisant F11. Et je ne le souhaite pas !!

                                  il faut donc que je rajoute un code supplémentaire à chaque utilisateur concerné (6 sur 8) afin qu'il ne puissent pas accéder à cette donnée...

                                  je voulais ouvrir un nouveau post.. mais je n'y arrive pas ! il n'apparait pas sur le site
                                  1. Merci je vais regarder ça de plus près !

                                    ce matin en voulant ouvrir ma base j'ai eu le droit au message suivant :
                                    vous n'avez pas l'autorisation requise pour ouvrir cette objet veuillez contacter votre administrateur !! mais c'est moi !
                                    du coup ma copie de sauvegarde m'a bien servi et j'ai recommencé ma programmation...
                                    je pense que je dois mal définir les niveaux de sécurité... mais pourquoi cela marque le jour même .. et pas le lendemain....
                                    étrange???
                                    • 1
                                    • 2