IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[FAQ][VBA-E] Comment récupérer le nom d´utilisateur du PC


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Par défaut [FAQ][VBA-E] Comment récupérer le nom d´utilisateur du PC
    Voici un petit code que j´ai récupéré lors de la création d´un fichier destiné à être utilisé par des utilisateurs multiples qui n´ont pas tous accès aux mêmes fonctionnalités gérées par le code VBA (requètes, accès à certains onglets...).
    Comme ce genre de procédé semble assez courant dans les directions financières (confidentialité, quand tu nous tiens... ), je pense qu´il peut être utile dans la FAQ, rubrique 3.1.2 "Application/Divers".
    Q: Comment obtenir l´identité de l´utilisateur loggé sur une machine ?

    R:
    L´identité de l´utilisateur loggé sur un ordinateur se trouve dans un API que l´on peut "lire" grâce au code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Declare Function GetUserName Lib "advapi32.dll" _
          Alias "GetUserNameA" (ByVal lpBuffer As String, _
          nSize As Long) As Long
    Cette première portion de code définit la fonction "GetUserName" qui est ensuite appelée dans la suite du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       Sub UserName()
       Dim password As String
          Dim b As String * 100
          Dim L As Long
          L = 100
          GetUserName b, L
          password = Left(b, L - 1)
       End Sub
    à l´issue du code, le nom d´utilisateur est stocké dans la variable "password"

    Note: cette fonction fonctionne avec certitude sous Windows XP SP2, pour ce qui est des autres OS sous lesquels elle est utilisable, pourriez-vous m´aider à complèter la liste ?

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir Doringen...

    la fonction est déjà présente dans la VB ..

    Comment obtenir le nom de l'utilisateur ?

    ... mais peu-être un lien dans VBA pourrai-être utile...

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Par défaut Récupérer l'identité de l'utilisateur du PC
    Bonjour à tous,

    J'interviens un peu tard dans ces échanges, mais j'utilise une autre possibilité plus simple pour récupérer le nom de l'utilisateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test_UserName()
    Dim Nom As String
    Nom = Environ("USERNAME")
    MsgBox Nom
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu encore plus simple
    bonjour

    en général la macro déclenchée et faite par l'utilisateur ACTUEL! donc autant rester dans Excel mais attention l'a macro peut-être d'éclanche par un distant
    et environ ou getusername te donne l'utilisateur de l'ordi dans le quel le fichier Excel se trouve : tu vois ce que je veux dire
    tandis que "application .username te donne le nom d'utilisateur du fichier dans le quel se trouve l'application qu'il soit distant ou non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub nom_de_l_utilisteur()
    MsgBox Application.UserName
    End Sub
    Pourquoi faire simple quand on peut faire compliqué

    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut Patrick,

    En principe, ici, username est une propriété de "Application" qui reste valable au sein d'Excel uniquement et qui n'interfère pas avec le système (qui permet de partager ces données entre toutes les instances de toutes les applications du système d'exploitation). Application.Username est spécifique à Excel. C'est la même chose avec les autres propriétés sauf quelques unes (très rare) qui permettent le partage au sein de Office plutôt qu'Excel.

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, @PatrickToulkon c'est totalement faux, tu vas dans le menu ? d'Excel/ A propos de Microsoft Excel / "Licence d'utilisation accordée à :" et tu as ce qui est retourné par Apllication.Username. En fait les infos d'installation.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Par défaut Comment récupérer le nom de l'utilisateur
    Bonjour,
    J'ai apporté ma contribution dans le contexte suivant que j'ai testé:

    Le fichier excel qui contient la macro est placé sur un disque partagé. Les utilisateurs, soit ouvrent le fichier partagé, soit font une copie sur leur environnement.
    L'usage que je fais du nom de l'utilisateur est de tracer le nom de l'utilisateur et la liste des onglets du classeur qu'il a ouvert pour faire une statistique d'usage des onglets.
    Je trace tout ça dans un fichier texte qui est sur le disque partagé. Et ça marche bien.

    Dans ce contexte, c'est bien l'utilisateur de l'ordi qui m'intéresse, mais il se trouve que c'est aussi l'utilisateur de l'application Excel. La différence dépend de ce qui a été saisi à l'installation soit de l'ordi, soit d'Excel.

    En tout cas vos remarques m'ont fait réfléchir à cette subtilité qui m'avait échappée.

    Merci

Discussions similaires

  1. Comment récupérer le nom de table access avec vba
    Par ivoratparis dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/07/2013, 14h57
  2. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  3. Réponses: 2
    Dernier message: 23/07/2005, 00h10
  4. [VB.NET] Comment récupérer le nom d'un control avec le focus
    Par jayce007 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/01/2005, 00h53
  5. Réponses: 11
    Dernier message: 16/10/2004, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo