FAQ MS-AccessConsultez toutes les FAQ

Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireVBAUtilisateurs


La propriété CurrentUser de l'objet Access.Application retourne le nom de l'utilisateur de la base de données.


Exemple :

 
Sélectionnez

Msgbox Application.CurrentUser
Créé le 29 décembre 2003  par Team Access

Lien : Comment gérer la sécurité - niveau utilisateur ?
Lien : Comment connaître le nom de l'utilisateur courant ?
Lien : Comment récupérer le nom d'un utilisateur Novel ?

 
Sélectionnez
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSUserName() As String
 ' Retourne le nom d'usager fourni lors du branchement au réseau.
Dim lngLen As Long, lngX As Long
Dim strUserName As String
    strUserName = String$(254, 0)
    lngLen = 255
    lngX = apiGetUserName(strUserName, lngLen)
    If lngX <> 0 Then
        fOSUserName = left$(strUserName, lngLen - 1)
    Else
        fOSUserName = ""
    End If
End Function
Créé le 6 octobre 2003  par cafeine

Lien : Comment obtenir le nom de l'utilisateur de Windows ?
Lien : Comment connaître le nom de l'utilisateur connecté ?
Lien : Comment récupérer le nom d'un utilisateur Novel ?

On définit le type :

 
Sélectionnez
    
Type Patient 

    dtmdrc As Date   ' Date création 

    strIPP As String ' Numéro d'IPP 

    strNom As String ' Nom 

    strNjf As String ' Nom de jeune fille 

    strPre As String ' Prénom 

    dtmDdn As Date   ' Date de naissance 

    strGro As String ' Groupe sanguin 

    strRhe As String ' Rhésus 

    strAdr As String ' Adresse 

    strCpo As String ' Code postal 

    strVil As String ' Ville 

    strTel As String ' Téléphone 

    lngCjt As Long   ' Numéro de conjoint attaché à la fiche administrative 

End Type 

Dans le code on déclare la variable :

 
Sélectionnez
Dim udtPatient As Patient  

et on utilise :

 
Sélectionnez
    udtPatient.dtmdrc = #12/10/1968# 

    udtPatient.strIPP = "021584" 

    udtPatient.strNom = "LA GAFFE" 

    udtPatient.strNjf = "" 

    udtPatient.strPre = "Gaston"
Créé le 25 octobre 2004  par Drosera

Pour faire ça il faut faire appel au groupe Administrateur en tant que groupe d'appartenance de l'utilisateur par :

 
Sélectionnez
DBEngine.Workspaces(0).Users(strUser).Groups("admins").Name

Si pas d'erreur l'utilisateur appartient au groupe administrateur. Si Err.Number = 3265 élément non trouvé dans cette collection, l'utilisateur n'est pas administrateur.

Exemple :

 
Sélectionnez
Dim esp As Workspace 
Dim strUser As String 

On Error Resume Next 
strUser = Application.CurrentUser 
Set esp = DBEngine.Workspaces(0) 
' L'instruction suivante provoque ou non une erreur 
strUser = esp.Users(strUser).Groups("admins").Name 
    
If Err.Number = 3265 Then    
    ' Élément non trouvé dans cette collection, l'utilisateur n'est pas administrateur 
ElseIf Err.Number > 0 Then  
   ' Autre erreur 
ElseIf Err.Number = 0 Then  
   ' L'utilisateur appartient au groupe 'administrateur' 
End If
Créé le 12 mai 2004  par Drosera

Normalement, un UserName sous Novell est loggé avec son nom de Login Windows. Il faut donc utiliser l'API GetUserName :

 
Sélectionnez
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
 
Sélectionnez
Private Function fGetUserName() As String
  Dim strUserName As String
  strUserName = String(100, vbNullChar)
  GetUserName strUserName, 100
  strUserName = Left$(strUserName, InStr(strUserName, vbNullChar) - 1)
  fGetUserName = strUserName
End Function
Créé le 1er janvier 2005  par argyronet

Lien : Comment connaître le nom de l'utilisateur connecté ?

Utilisez le code VBA suivant :

 
Sélectionnez

With DBEngine.Workspaces(0)
 .Users(.UserName).NewPassword "ancienmotdepasse", "nouveaumotdepasse"
End With


Voici un exemple complet d'utilisation dans un formulaire :

Composition du formulaire :
  • quatre zones de texte indépendantes : une pour récupérer l'utilisateur courant, une pour l'ancien mot de passe et deux pour le nouveau mot de passe (choix + confirmation) ;
  • deux boutons : Valider et Annuler.
 
Sélectionnez
Private Sub CmdAnnuler_Click()
    On Error GoTo err
    
    DoCmd.Close
    
err:
    Select Case err
        Case 0
        Case Else
            MsgBox err.Description & vbLf & err.Source
    End Select
    
End Sub
 
Private Sub CmdValider_Click()
    On Error GoTo err
 
    If Me.OldPwd = Me.NewPwd Then
        MsgBox "Le nouveau mot de passe est identique à l'ancien." & vbLf & _
            "Veuillez choisir un autre mot de passe.", vbOKOnly + vbExclamation, "Nouveau mot de passe invalide"
        Me.NewPwd = ""
        Me.ConfNewPwd = ""
        DoCmd.GoToControl Me.NewPwd
        Else
        If Me.NewPwd <> Me.ConfNewPwd Then
            MsgBox "Le mot de passe entré en confirmation" & vbLf & _
                "ne correspond pas au nouveau mot de passe.", vbOKOnly + vbExclamation, "Erreur de confirmation"
            Me.NewPwd = ""
            Me.ConfNewPwd = ""
            DoCmd.GoToControl Me.NewPwd
            Else
            With DBEngine.Workspaces(0)
                .Users(.UserName).NewPassword Me.OldPwd, Me.NewPwd
            End With
            MsgBox "Le mot de passe a été changé.", vbOKOnly + vbInformation, "Confirmation"
            DoCmd.Close
        End If
    End If
 
err:
    Select Case err
        Case 3033
            MsgBox "L'ancien mot de passe saisi n'est pas valide.", vbOKOnly + vbExclamation, "Ancien mot de passe incorrect"
            Me.OldPwd = ""
            Me.NewPwd = ""
            Me.ConfNewPwd = ""
            DoCmd.GoToControl ("OldPwd")
        Case 0
        Case Else
            MsgBox err.Description & vbLf & err.Source
    End Select
    
End Sub
 
Private Sub Form_Load()
    On Error GoTo err
    
    Me.UtilCourant = "Utilisateur courant : " & DBEngine.Workspaces(0).UserName
 
err:
    Select Case err
        Case 0
        Case Else
            MsgBox err.Description & vbLf & err.Source
    End Select
    
End Sub

Voici ce que cela donne :

Image non disponible
Mis à jour le 28 août 2007  par Tofalu, Lou Pitchoun
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.