Récupérer le nom d'user

Bonjour,

Est-ce qu'il est possible, sur Excel Online, de pouvoir récupérer le nom de l'utilisateur via une formule s'il vous plait?

A terme, je souhaite qu'un onglet masqué ayant le nom de l'utilisateur s'affiche quand la personne concernée ouvre le classeur.

Le classeur est sur un site SharePoint.

Merci d'avance,

Bonjour,

sur un réseau cette instruction peut donner ce que vous voulez : Application.UserName

Maintenant dans le Cloud....

Mais comme c'est liée à l'application qui elle même est liée à l'ordinateur, il faut que l'ordinateur soit lié à la personne....

Sinon je répond complètement à coté de la plaque et je laisse place aux autres intervenants !

@ bientôt

LouReeD

Bonjour,

sur un réseau cette instruction peut donner ce que vous voulez : Application.UserName

Maintenant dans le Cloud....

Mais comme c'est liée à l'application qui elle même est liée à l'ordinateur, il faut que l'ordinateur soit lié à la personne....

Sinon je répond complètement à coté de la plaque et je laisse place aux autres intervenants !

@ bientôt

LouReeD

Et oui, j'ai vu sur divers forums dont celui ci qu'il est possible de passer par VBA pour arriver à un résultat, mais sur le cloud c'est plus coton.

normal : le cloud est un nuage, et les nuages sont très cotonneux !

Bonjour,

pas claire ton histoire...

Au début tu parles d'excel online (pas de vba) mais ensuite tu parles de sharepoint (à-priori vba possible).

Faudrait savoir...

eric

Bonjour,

Partant sur la base que quelque soit l'endroit où est hébergé le fichier Excel, en l'ouvrant, il sera ouvert avec le Excel de la machine de la personne qui l'ouvre.

Si j'ai bien compris la demande, tester ceci :

Un fichier avec quelques feuilles dont l'une porte le nom "Feuil1" et une autre portant ton nom de profil Windows, cette dernière serait masquée.

Private Sub Workbook_Open()
Dim Sh As Worksheet

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = Environ("USERNAME") Then
        Sh.Visible = xlSheetVisible
        Sh.Select
    End If
Next Sh
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet

'Worksheets("Feuil1").Select

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = Environ("USERNAME") Then Sh.Visible = xlSheetHidden
Next Sh
End Sub

ric

P.S. Attention, Environ("USERNAME") donne le nom du profil Windows, lequel peut être différent du nom d'utilisateur si on a un compte Microsoft.

Bonjour,

pas claire ton histoire...

Au début tu parles d'excel online (pas de vba) mais ensuite tu parles de sharepoint (à-priori vba possible).

Faudrait savoir...

eric

Un site SharePoint est dans le cloud de base non? Donc, si je stocke un classeur Excel dans une bibliothèque de ce SharePoint, ce classeur sera stocké sur le cloud, et s'ouvrira dans Excel Online (c'est d'ailleurs ce qui se passe lorsque l'on clique sur le fichier).

Bonjour,

Partant sur la base que quelque soit l'endroit où est hébergé le fichier Excel, en l'ouvrant, il sera ouvert avec le Excel de la machine de la personne qui l'ouvre.

Si j'ai bien compris la demande, tester ceci :

Un fichier avec quelques feuilles dont l'une porte le nom "Feuil1" et une autre portant ton nom de profil Windows, cette dernière serait masquée.

Private Sub Workbook_Open()
Dim Sh As Worksheet

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = Environ("USERNAME") Then
        Sh.Visible = xlSheetVisible
        Sh.Select
    End If
Next Sh
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet

'Worksheets("Feuil1").Select

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = Environ("USERNAME") Then Sh.Visible = xlSheetHidden
Next Sh
End Sub

ric

P.S. Attention, Environ("USERNAME") donne le nom du profil Windows, lequel peut être différent du nom d'utilisateur si on a un compte Microsoft.

C'est une base de travail très intéressante, je teste ça demain.

Merci merci

Bonjour,

Excel Online c'est Excel Online, la version en ligne d'excel (dans un navigateur). Et elle est limitée et non compatible vba.

Sharepoint c'est un cloud, d'accord.

Si tu ouvres un de ses fichier dans excel online, pas de vba. Si tu l'ouvres avec ta version installée sur un poste, tu y auras droit. Pareil que s'il était sur onedrive.

eric

Bonjour,

Partant sur la base que quelque soit l'endroit où est hébergé le fichier Excel, en l'ouvrant, il sera ouvert avec le Excel de la machine de la personne qui l'ouvre.

Si j'ai bien compris la demande, tester ceci :

Un fichier avec quelques feuilles dont l'une porte le nom "Feuil1" et une autre portant ton nom de profil Windows, cette dernière serait masquée.

Private Sub Workbook_Open()
Dim Sh As Worksheet

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = Environ("USERNAME") Then
        Sh.Visible = xlSheetVisible
        Sh.Select
    End If
Next Sh
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sh As Worksheet

'Worksheets("Feuil1").Select

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = Environ("USERNAME") Then Sh.Visible = xlSheetHidden
Next Sh
End Sub

ric

P.S. Attention, Environ("USERNAME") donne le nom du profil Windows, lequel peut être différent du nom d'utilisateur si on a un compte Microsoft.

Salut, je ne comprends pas le rôle de la Feuil1.Et pourquoi cette ligne est en commentaire 'Worksheets("Feuil1").Select

Désolé pour ce questionnement de novice en VBA.

Bonjour,

C'était simplement une interrogation de ma part, j'ai oublié de supprimer cette ligne.

À l'ouverture du classeur, si le nom du profil Windows correspond à une feuille du fichier, cette feuille est "démasquée" et affichée à l'écran.

Si le nom du profil Windows n'est pas trouvé, il faudrait gérer cette éventualité.

Comment penses-tu gérer ce cas?

ric

Bonjour,

C'était simplement une interrogation de ma part, j'ai oublié de supprimer cette ligne.

À l'ouverture du classeur, si le nom du profil Windows correspond à une feuille du fichier, cette feuille est "démasquée" et affichée à l'écran.

Si le nom du profil Windows n'est pas trouvé, il faudrait gérer cette éventualité.

Comment penses-tu gérer ce cas?

ric

Ok merci,

J'ai remplacé Feuil1 par une des feuilles du classeur pour pallier à cette éventualité.

Bref, j'ai crée un onglet avec mon username "9209679W" et je l'ai masqué. Cependant, à l'ouverture, celui ci n'est pas démasqué...

Voici le fichier :

69test-macro.xlsm (73.38 Ko)

Le but est de pouvoir récupérer par la suite les lignes des 4 onglets contenant le nom de l'user et de les envoyer dans l'onglet masqué portant le nom de cet user.

Le problème est que mon nom de session diffère de mon "vrai" nom inscrit dans les onglets, à savoir MIROSA.

Bonjour,

Est-ce que 9209679W est le nom de ton profil Windows ?

Va voir dans "l'Explorateur Windows", dossier "Utilisateurs" ...

ric

Bonjour,

Est-ce que 9209679W est le nom de ton profil Windows ?

Va voir dans "l'Explorateur Windows", dossier "Utilisateurs" ...

ric

Non, c'est MIROSA Fabien (références de l'entreprise etc).

Mais pourtant en utilisant cette macro glanée sur le net :

Sub NomUtilisateur()

Range("A1") = Environ("username")

End Sub

Excel m'a renvoyé mon ID et non mon "Nom"

Bonjour,

Excuse-moi, je n'avais pas regardé ton fichier.

Les macros Workbook_Open et Worbook_BeforeClose doivent impérativement être situées dans "ThisWorkbook". Sinon, elles ne fonctionnent pas.

ric

Bonjour,

Excuse-moi, je n'avais pas regardé ton fichier.

Les macros Workbook_Open et Worbook_BeforeClose doivent impérativement être situées dans "ThisWorkbook". Sinon, elles ne fonctionnent pas.

ric

Yep, ça fonctionne en mettant le tout dans ThisWorkbook et en créant au préalable un onglet avec mon ID.

Cependant c'est très lisible d'avoir le matricule pour nom d'onglet.

Dis moi stp si c'est possible de procéder ainsi :

  • Placer dans une feuille la liste des noms des Responsables présents dans les onglets de base dans une colonne A, et en B, placer leur matricule.
  • Une macro se chargerait d'afficher l'onglet masqué contenant le nom de l'user en cours
=> En lisant d'abord son ID, le programme déduirait le nom (sur la base du tableau associant les noms aux ID).

J'ai ajouté un onglet Ref contenant les noms des Responsables et leur Matricule.

89test-macro-v2.xlsm (75.57 Ko)
27test-macro.xlsm (75.55 Ko)

Bonjour,

Si j'ai bien compris ...

Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim Cl As Range
Dim Dlig As Integer

With Worksheets("Ref")     ' réfère à la feuille
    Dlig = .Cells(Rows.Count, "A").End(xlUp).Row    ' trouve la dernière ligme
    For Each Cl In .Range("B2:B" & Dlig)        ' la plage de recherche
        If Cl = Environ("USERNAME") Then        ' comparaison
            For Each Sh In ThisWorkbook.Worksheets    ' recherche de la feuille
                If Sh.Name = Cl.Offset(0, -1) Then    ' comparaison
                     .Cells(1, "D") = Cl.Offset(0, 1)
                    Sh.Visible = xlSheetVisible        ' si la feuille est trouvée, la démasquer.
                    Sh.Select                ' la sélectionner
                    Exit Sub                    ' mettre fin à la macro
                End If
            Next Sh
        End If
    Next Cl
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Lusager As String

Lusager = Worksheets("Ref").Range("D1")
Worksheets("Actions RUO S").Visible = True
Worksheets("Actions RUO S").Select
If Worksheets("Ref").Range("D1") <> "" Then Worksheets(Lusager).Visible = False

ActiveWorkbook.Save

End Sub

ric

Bonjour,

En passant : End est une fin un peu brutale de procédure.

Il vaut mieux utiliser Exit Sub

eric

Bonjour eriiic,

C'est corrigé.

J'ai aussi corrigé BeforeClose

Merci

ric

Rechercher des sujets similaires à "recuperer nom user"