Identification dans une base access et vu réduite
Bruno83200_6929 Messages postés 242 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 30 septembre 2024 - 30 sept. 2024 à 18:30
- Identification dans une base access et vu réduite
- Entrer les informations d'identification reseau - Guide
- Vu profil instagram - Guide
- Qui a vu mon profil facebook - Guide
- Formules excel de base - Guide
- Vu satellite google maps - Guide
1 réponse
30 sept. 2024 à 18:30
Bonjour,
Je vais essayer de t'aider. Pour réaliser ce que tu souhaites dans ta base de données Access, voici une approche en plusieurs étapes :
- PRIMO - Créer le formulaire F_login
Crée un formulaire simple avec un champ de texte où l'utilisateur pourra entrer son nom. Pas besoin de mot de passe, donc un seul contrôle est nécessaire.
Ajoute un bouton pour soumettre le nom de l'utilisateur.
- SECUNDO - Enregistrer le nom de l'utilisateur dans une variable
Dans VBA, tu peux déclarer une variable globale qui va contenir le nom de l'utilisateur une fois qu'il l'aura entré. Cette variable sera accessible dans d'autres modules ou formulaires.
' Module VBA pour stocker la variable utilisateur Public CurrentUser As String ' Code pour le bouton de connexion dans le formulaire F_login Private Sub btnLogin_Click() ' Récupérer le nom d'utilisateur depuis le champ de texte CurrentUser = Me.txtUserName.Value ' Vérifier si l'utilisateur existe dans la table T_users If DCount("*", "T_users", "UserName='" & CurrentUser & "'") > 0 Then ' Si l'utilisateur existe, ouvrir les formulaires et fermer celui de login DoCmd.OpenForm "F_affaires" DoCmd.OpenForm "F_materiels" DoCmd.Close acForm, "F_login" Else MsgBox "Nom d'utilisateur non trouvé", vbExclamation End If End Sub
- TERTIO - Filtrer les formulaires F_affaires et F_materiels
Dans les formulaires "F_affaires" et "F_matériels", tu vas appliquer un filtre pour ne montrer que les affaires et matériels appartenant au groupe de l'utilisateur connecté.
Utilise une requête qui associe les tables et filtre les enregistrements.
Voici un exemple de code à ajouter dans l’événement On Open des formulaires "F_affaires" et "F_matériels" :
Private Sub Form_Open(Cancel As Integer) Dim UserGroup As String ' Récupérer le groupe de l'utilisateur depuis T_users UserGroup = DLookup("Groupe", "T_users", "UserName='" & CurrentUser & "'") ' Appliquer le filtre pour afficher les affaires ou matériels du groupe de l'utilisateur Me.Filter = "Groupe='" & UserGroup & "'" Me.FilterOn = True End Sub
Structure des tables
T_users : Contient les utilisateurs et leur groupe.
T_groupe : Contient les informations des groupes.
T_affaire et T_matériel : Contiennent les informations des affaires et matériels et leur groupe respectif. Si une affaire ou un matériel peut appartenir à plusieurs groupes, il peut être nécessaire d'utiliser une table de jointure pour gérer ces relations plusieurs-à-plusieurs (par exemple, T_affaire_groupe et T_materiel_groupe).
Perso, j'aurais essayé de faire comme cela :
Le formulaire F_login récupère le nom d'utilisateur et le stocke dans une variable globale.
Les formulaires F_affaires et F_matériels utilisent cette variable pour appliquer un filtre basé sur le groupe de l'utilisateur.
Les données sont filtrées à l'ouverture des formulaires en fonction du groupe de l'utilisateur.
Cela devrait te permettre de gérer dynamiquement l'affichage des affaires et matériels en fonction du groupe auquel appartient l'utilisateur connecté.