Nom d’utilisateur et autres informations utiles
Comment obtenir dans Access le nom de l’utilisateur qui a démarré la session Windows ? Peut-on obtenir d’autres infos ?
La fonction Environ()
Sur les systèmes NT (Windows NT, Windows 2000, Windows XP et suivants), il est possible d’obtenir différentes infos sur votre configuration grâce à la fonction VBA Environ()
.
Par exemple, Environ("USERNAME")
donne le nom de la personne actuellement connectée (le nom tapé lors de l’ouverture de la session Windows). De la même manière, Environ("COMPUTERNAME")
donne le nom de l’ordinateur. Vous pouvez en fait obtenir d’autres informations par ce biais, comme l’illustre le tableau ci-dessous (la liste n’est pas exhaustive).
USERNAME |
Nom de l’utilisateur ayant ouvert la session Windows. |
USERDOMAIN |
Nom du domaine auquel appartient l’utilisateur. |
USERPROFILE |
Chemin pointant vers le dossier où est stocké le profil (les réglages divers comme le fond d’écran, les icônes, les paramètres de logiciels) de l’utilisateur. |
ALLUSERSPROFILE |
Chemin pointant vers le dossier « Documents partagés », sous Windows XP. |
APPDATA |
Chemin pointant vers le dossier « Application » de l’utilisateur. Sous Windows XP, il s’agit d’un dossier nommé Application Data résidant le dossier profil de l’utilisateur. C’est dans ce dossier que sont stockés les réglages de vos logiciels (pour un utilisateur donné, donc). |
COMPUTERNAME |
Nom de l’ordinateur. |
HOMEDRIVE |
Nom du disque où se trouve le dossier personnel de l’utilisateur. |
HOMEPATH |
Chemin – sans le nom du disque (HOMEDRIVE ) pointant vers le dossier personnel de l’utilisateur. |
LOGONSERVER |
Serveur ayant identifié l’utilisateur lors de l’ouverture de la session. Il peut s’agir de la machine elle-même. |
OS |
Nom du système d’exploitation. |
PATH |
Différents chemins définis par défaut. |
PATHEXT |
Différentes extensions prises en compte par le système. |
SYSTEMDRIVE |
Nom du disque où se trouve le système d’exploitation. Exemple : C: |
SYSTEMROOT |
Chemin pointant vers le dossier contenant le système d’exploitation. Exemple : C:WINDOWS |
TEMP |
Nom du dossier temporaire de l’utilisateur. |
TMP |
Variante du précédent. |
NUMBER_OF_PROCESSORS |
Nombre de micro-processeurs sur la machine. |
PROCESSOR_ARCHITECTURE |
Type d’architecture du processeur. Exemple : x86 pour les processeurs Intel. |
PROCESSOR_IDENTIFIER |
Identifiant plus détaillé du processeur. |
PROCESSOR_LEVEL |
Niveau du processeur. |
PROCESSOR_REVISION |
Numéro de révision du processeur. |
Un exemple ?
Voici un petit exemple de programme qui affiche dans une seule boîte de dialogue toutes les variables listées ci-dessus.
Recopiez-le dans un module standard d’Access, puis exécutez-le grâce à l’icône Exécuter Sub/UserForm.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Function VariablesEnvironnement() Dim varEnv As Variant, intI As Integer Dim strMessage As String, v As Variant ' Liste des variables d'environnement varEnv = Array("ALLUSERSPROFILE", "APPDATA", _ "COMPUTERNAME", "HOMEDRIVE", "HOMEPATH", _ "LOGONSERVER", "NUMBER_OF_PROCESSORS", "OS", _ "PATH", "PATHEXT", "PROCESSOR_ARCHITECTURE", _ "PROCESSOR_IDENTIFIER", "PROCESSOR_LEVEL", _ "PROCESSOR_REVISION", "PROMPT", _ "SYSTEMDRIVE", "SYSTEMROOT", "TEMP", "TMP", _ "USERDOMAIN", "USERNAME", "USERPROFILE") ' Lecture de toutes les valeurs strMessage = "" For Each v In varEnv strMessage = strMessage & v & " = " & Environ(v) & vbCrLf Next ' Affichage final MsgBox strMessage End Function |
Environ("USERNAME")
n’a pas de rapport avec l’identifiant tapé à l’entrée d’Access, lorsque vous avez mis en place la « sécurité utilisateur » (la protection spécifique à Access). Dans ce cas, le nom d’utilisateur Access vous est donné par CurrentUser()
.
bonjour,
je suis débutante sur Access 2010 et je voudrais bien savoir comment obtenir le nom de l’utilisateur de Access ou meme de l’ordinateur dans un champ d’un formulaire dès que cet utilisateur ouvre ce formulaire à remplir.
merci d’avance
En tapant par exemple :
dans la propriété Source d’une zone de texte, on obtient le nom de l’utilisateur Windows.
Les autres valeurs données dans l’article permettent d’obtenir d’autres infos comme le nom de l’ordinateur.
A noter qu’avec cette approche, l’info sera affichée mais pas stockée.
Bonjour,
Je cherche à ouvrir un formulaire à l’ouverture de l’application selon l’utilisateur qui ouvre l’application.
J’ai créé une Macro AutoExec pour ouvrir le formulaire, et j’ai essayé de rajouter une condition Where selon l’utilisateur en cours avec UtilisateurEnCours() et avec Environ() et cela ne marche pas.. Peut être que je l’utilise mal, ou peut être qu’il y a une autre solution…
Si quelqu’un a une idée, je suis preneuse. Merci d’avance!
Cléoline
Il y a plusieurs formulaires différents ?
Ou c’est un seul formulaire à filtrer ?
Juste un formulaire. À savoir que le formulaire s’ouvre également quand la requête renvoi un enregistrement. J’avais effectué la procédure avec http://grenier.self-access.com/access/questions-generales/declencher-une-alerte-avec-access/
Et la table sous-jacente contient un champ qui donne le nom de l’utilisateur ?
(si oui, comment s’appelle ce champ ?)
C’est une requête, et je peux si jamais rajouter le champ à la requête. Le champ s’appelle txtUtilisateur.
Dans ce cas, il faudrait que la macro AutoExec appelle une fonction VBA de ce style (placée dans un module standard) :
ok, mais comment je fais pour le cumuler avec ceci ? (Oui, très débutante!) :
Private Sub Form_Open(Cancel As Integer)
If Me.RecordsetClone.RecordCount = 0 Then
Cancel = True
End If
End Sub
🙂 En fait, les 2 bouts de code sont indépendants, ils n’ont pas à être « cumulés » :
1. Le Form_Open gère le fait que le formulaire puisse être vide. Ça, c’est fait. 🙂
2. La fonction OuvrirFormulaire sera tapée dans un module standard (pas dans le module du formulaire). Elle provoque justement l’ouverture du formulaire.
3. La macro AutoExec va appeler OuvrirFormulaire. Cet autre article peut aider pour brancher la fonction dans la macro.
En résumé :
1. La macro AutoExec se déclenche automatiquement à l’ouverture de la base.
2. Elle appelle la fonction VBA OuvrirFormulaire, qui ouvre le formulaire en le filtrant.
3. Si le filtre donne un résultat vide, le Form_Open prend le relais.
Ouala !
Pour info, j’ai ouvert un post sur le forum : http://www.self-access.com/forums/read.php?10,85452,85452#msg-85452
Désolée pour les questions dans les commentaires ! 🙂
Et merci pour les réponses!
Ça marche, la discussion continue sur le forum dans ce cas.
mc > Pas forcément. Par contre, est-ce que la base est partagée en « monofichier » sur le réseau, ou est-ce qu’elle est scindée en une frontale / dorsale ? Dans le second cas, on limite les problèmes.
Sur des bases multi-utilisateurs sur un réseau, certains bloquent l’accès à la base par une mauvaise sortie.
Est il possible de les déloguer proprement?
Yeo > Dans la boîte Fichier/Ouvrir, il suffit de cliquer sur le triangle à droite du bouton Ouvrir. Dans les options qui se déroulent figure une option « Ouvrir en exclusif« .
Je ne sais pas comment ouvrir ma BD en MODE EXCLUSIF.
je vous remercie
Yeo > Si c’est juste un unique mot de passe, tu peux utiliser le menu Outils / Sécurité / Mot de passe. Si c’est pour un nom et un mot de passe par utilisateur (et avec toute la sécurité qui va avec), il faut plutôt passer par la « sécurité utilisateur » (voir sur cette page).
SALUT;
je voudrais savoir comment créer un nom d’utilisateur et mot de passe pour une base de données en reseau?