Microsoft 365 Initiales du Username

Claudy

XLDnaute Accro
Bonjour,
en VBA comment récupérer les initiales d'un username?
Merci,
Claudy
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Claudy, le forum

Voila un code qui te fera cela !

Cordialement
VB:
Sub Test()
MsgBox Initiales_Utilisateur, vbOKOnly + vbInformation
End Sub
Function Initiales_Utilisateur$()
    Dim Compte_Utilisateur As Object, Chaine_Test$
    On Error Resume Next
    Set Compte_Utilisateur = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2:Win32_UserAccount.Domain='" & Environ("userdomain") & "',Name='" & Environ("username") & "'")
    If Err = 0 Then
            Chaine_Test = Left(Compte_Utilisateur.FullName, 1)
            If InStr(1, Compte_Utilisateur.FullName, " ") > 0 Then Chaine_Test = Chaine_Test & Mid(Compte_Utilisateur.FullName, InStr(1, Compte_Utilisateur.FullName, " ") + 1, 1)
            Initiales_Utilisateur = UCase(Chaine_Test)
        Else
            Initiales_Utilisateur = "Utilisateur inconnu"
        End If
End Function
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re le fil

j'ai souvent eu des problèmes en entreprise ou chez des particuliers avec Environ("UserName") ou application.username qui renvoient souvent des prénoms (name et non le fullname), ou des services liés à la licence
Cette fonction que j'utilise depuis des années ne m'a, elle, jamais fait défaut. Elle est aussi très pratique pour signer très simplement des mails automatisés.
Personnellement, il n'y pas d'espace dans mon Username
@Staple1600 , tu as essayé cette fonction ?
VB:
Sub Test()
MsgBox Trouver_Utilisateur
End Sub
Function Trouver_Utilisateur$()
    Dim Compte_Utilisateur As Object
    On Error Resume Next
    Set Compte_Utilisateur = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2:Win32_UserAccount.Domain='" & Environ("userdomain") & "',Name='" & Environ("username") & "'")
    If Err = 0 Then Trouver_Utilisateur = Compte_Utilisateur.FullName Else Trouver_Utilisateur = "Utilisateur inconnu"
End Function

Cordialement, @+
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
en fait, avec les noms composés, il faudrait récupérer tous les début de séquence de lettres.
le code de @soan est meilleur pour récupérer toutes les initiales (mais il faudrait gérer toutes les conventions de séparation de patronymes et de prénoms composés qui peuvent être gérés très différemment) [un petit replace sur les caractères de séparation possibles avant le split ?]
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

=>Yeahou
Moi, je n'ai rien voulu dire d'autre qu'il y a Username et Username ;)
Et que quand on splitte, on peut le faire Outta Space (RIP Van Halen)
Précisions: II n'y avait ni meilleur, bien ou mieux.
C'était juste histoire de parler de Debbie ;) et d'accessoirement faire la blague en allant faire un tour dans VBE.

Quant à ta fonction, je ne l'ai pas testé car je sais qui je suis et quel utilisateur je suis ;)

Allez un p'tit coup d'API aprés le WMI ;)
VB:
' Access the GetUserNameA function in advapi32.dll and
' call the function GetUserName.
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
 (ByVal lpBuffer As String, nSize As Long) As Long
' Main routine to retrieve user name.
Function GetLogonName() As String
 ' Dimension variables
 Dim lpBuff As String * 255
 Dim ret As Long
 ' Get the user name minus any trailing spaces found in the name.
 ret = GetUserName(lpBuff, 255)
 If ret > 0 Then
 GetLogonName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
 Else
 GetLogonName = vbNullString
 End If
End Function
Sub Quivala()
MsgBox GetLogonName
End Sub

PS: Je viens de tester ton code dans la foulée ;)
 

Staple1600

XLDnaute Barbatruc
Re

Il faudrait mettre un point dans le bousin ;)
VB:
Sub test_ok()
Dim tmp$
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer In colComputer
tmp = "User Name = " & objComputer.UserName
tmp = objComputer.UserName
Next
MsgBox tmp, vbExclamation, "I know who you are, Baby!"
End Sub
Là de nouveau, je sais qui je suis ;)

NB: On a aura noté que mon précédent message était en mode humour (même si j'avais pas mis d'émoticones)
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Là de nouveau, je sais qui je suis
mais moi je ne sais plus ! :rolleyes:😇🤣 [enfin, plus qui je suis vraiment !] ;)

Sans titre.png
 
Dernière édition:

Discussions similaires

Réponses
0
Affichages
147
Réponses
3
Affichages
362
Réponses
7
Affichages
98

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16