Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester appartenance à un groupe d'utilisateur

6 réponses
Avatar
Vader
Bonjour,

Je sais qu'il est possible d'extraire le nom d'utilisateur (session) ...
est-il possible de savoir si le login de la session appartient bien à un
groupe d'utilisateur ?

L'idée étant de protéger/déprotéger un classeur en fonction du groupe
d'utilisateur :-)

Merci

6 réponses

Avatar
MichDenis
En DOS, il y a la commande Net qui donne toute sorte d'information.

Par exemple la commande suivante à l'invite de DOS

Net User Denis donne toutes les informations sur l'usager Denis
et les groupes auquels il appartient.

Il est possible en vba de passer cette commande et de renvoyer
toute l'information dans un fichier Texte

J'ai utilisé la commande InStr() pour savoir si le nom du groupe
apparaissaint dans l'ensemble du texte contenu dans le fichier texte.

'----------------------------------------
Sub test()
Dim Fs As Object, S As String, Commande As String
Dim NomDuGroupe As String, FichierTxt As String

'Nom du groupe
NomDuGroupe = "session"
'Fichier où seront copiées les données de la commande Dos
FichierTxt = "c:toto.txt"

Commande = Environ("comspec") & " /c " & _
"Net User %Username% > " & FichierTxt
Shell Commande, 0
Set Fs = CreateObject("Scripting.FileSystemObject")

'Délai pour laisser le temps de créer le fichier texte
'4 secondes que tu peux adapter selon la puissance
'de ton ordi.
Application.Wait Now + TimeValue("0:00:04")

S = Fs.OpenTextFile(FichierTxt, 1).ReadAll

If InStr(1, S, " " & NomDuGroupe & " ", vbTextCompare) > 0 Then
MsgBox "Présent dans ce groupe"
Else
MsgBox "Non présent"
End If
Kill FichierTxt
End Sub
'----------------------------------------



"Vader" a écrit dans le message de news:

Bonjour,

Je sais qu'il est possible d'extraire le nom d'utilisateur (session) ...
est-il possible de savoir si le login de la session appartient bien à un
groupe d'utilisateur ?

L'idée étant de protéger/déprotéger un classeur en fonction du groupe
d'utilisateur :-)

Merci
Avatar
Vader
Très fort !

Ca marche ... Merci !


En DOS, il y a la commande Net qui donne toute sorte d'information.

Par exemple la commande suivante à l'invite de DOS

Net User Denis donne toutes les informations sur l'usager Denis
et les groupes auquels il appartient.

Il est possible en vba de passer cette commande et de renvoyer
toute l'information dans un fichier Texte

J'ai utilisé la commande InStr() pour savoir si le nom du groupe
apparaissaint dans l'ensemble du texte contenu dans le fichier texte.

'----------------------------------------
Sub test()
Dim Fs As Object, S As String, Commande As String
Dim NomDuGroupe As String, FichierTxt As String

'Nom du groupe
NomDuGroupe = "session"
'Fichier où seront copiées les données de la commande Dos
FichierTxt = "c:toto.txt"

Commande = Environ("comspec") & " /c " & _
"Net User %Username% > " & FichierTxt
Shell Commande, 0
Set Fs = CreateObject("Scripting.FileSystemObject")

'Délai pour laisser le temps de créer le fichier texte
'4 secondes que tu peux adapter selon la puissance
'de ton ordi.
Application.Wait Now + TimeValue("0:00:04")

S = Fs.OpenTextFile(FichierTxt, 1).ReadAll

If InStr(1, S, " " & NomDuGroupe & " ", vbTextCompare) > 0 Then
MsgBox "Présent dans ce groupe"
Else
MsgBox "Non présent"
End If
Kill FichierTxt
End Sub
'----------------------------------------



"Vader" a écrit dans le message de news:

Bonjour,

Je sais qu'il est possible d'extraire le nom d'utilisateur (session) ...
est-il possible de savoir si le login de la session appartient bien à un
groupe d'utilisateur ?

L'idée étant de protéger/déprotéger un classeur en fonction du groupe
d'utilisateur :-)

Merci





Avatar
MichDenis
Si tu préfères, tu peux aussi utiliser ceci :

run on Windows NT 4.0 or Windows 98; in the latter two cases,
however, you might need to install additional scripting technologies
such as ADSI or WMI before the scripts will work

'-----------------------------------
Sub test()

Dim Usager As String, FaitPartiDuGroupe As Boolean
Dim NomDuGroupe As String, Fin As String

Usager = "Denis"
NomDuGroupe = "MonGroupe"

strComputer = Environ("ComputerName")
Set colGroups = GetObject("WinNT://" & strComputer & "")
colGroups.Filter = Array("group")
For Each objGroup In colGroups
ss = objGroup.Name
If objGroup.Name = NomDuGroupe Then
For Each objUser In objGroup.Members
If objUser.Name = Usager Then
FaitPartiDuGroupe = True
GoTo Fin
End If
Next
End If
Next
Fin:
MsgBox Usager & " est membre du groupe " & _
NomDuGroupe & " : " & FaitPartiDuGroupe
End Sub
'-----------------------------------



"Vader" a écrit dans le message de news:

Très fort !

Ca marche ... Merci !


En DOS, il y a la commande Net qui donne toute sorte d'information.

Par exemple la commande suivante à l'invite de DOS

Net User Denis donne toutes les informations sur l'usager Denis
et les groupes auquels il appartient.

Il est possible en vba de passer cette commande et de renvoyer
toute l'information dans un fichier Texte

J'ai utilisé la commande InStr() pour savoir si le nom du groupe
apparaissaint dans l'ensemble du texte contenu dans le fichier texte.

'----------------------------------------
Sub test()
Dim Fs As Object, S As String, Commande As String
Dim NomDuGroupe As String, FichierTxt As String

'Nom du groupe
NomDuGroupe = "session"
'Fichier où seront copiées les données de la commande Dos
FichierTxt = "c:toto.txt"

Commande = Environ("comspec") & " /c " & _
"Net User %Username% > " & FichierTxt
Shell Commande, 0
Set Fs = CreateObject("Scripting.FileSystemObject")

'Délai pour laisser le temps de créer le fichier texte
'4 secondes que tu peux adapter selon la puissance
'de ton ordi.
Application.Wait Now + TimeValue("0:00:04")

S = Fs.OpenTextFile(FichierTxt, 1).ReadAll

If InStr(1, S, " " & NomDuGroupe & " ", vbTextCompare) > 0 Then
MsgBox "Présent dans ce groupe"
Else
MsgBox "Non présent"
End If
Kill FichierTxt
End Sub
'----------------------------------------



"Vader" a écrit dans le message de news:

Bonjour,

Je sais qu'il est possible d'extraire le nom d'utilisateur (session) ...
est-il possible de savoir si le login de la session appartient bien à un
groupe d'utilisateur ?

L'idée étant de protéger/déprotéger un classeur en fonction du groupe
d'utilisateur :-)

Merci





Avatar
MichDenis
Tu peux faire disparaître la ligne de code :
ss = objGroup.Name
c'était seulement pour des fins de tests.


"MichDenis" a écrit dans le message de news:
%
Si tu préfères, tu peux aussi utiliser ceci :

run on Windows NT 4.0 or Windows 98; in the latter two cases,
however, you might need to install additional scripting technologies
such as ADSI or WMI before the scripts will work

'-----------------------------------
Sub test()

Dim Usager As String, FaitPartiDuGroupe As Boolean
Dim NomDuGroupe As String, Fin As String

Usager = "Denis"
NomDuGroupe = "MonGroupe"

strComputer = Environ("ComputerName")
Set colGroups = GetObject("WinNT://" & strComputer & "")
colGroups.Filter = Array("group")
For Each objGroup In colGroups
ss = objGroup.Name
If objGroup.Name = NomDuGroupe Then
For Each objUser In objGroup.Members
If objUser.Name = Usager Then
FaitPartiDuGroupe = True
GoTo Fin
End If
Next
End If
Next
Fin:
MsgBox Usager & " est membre du groupe " & _
NomDuGroupe & " : " & FaitPartiDuGroupe
End Sub
'-----------------------------------



"Vader" a écrit dans le message de news:

Très fort !

Ca marche ... Merci !


En DOS, il y a la commande Net qui donne toute sorte d'information.

Par exemple la commande suivante à l'invite de DOS

Net User Denis donne toutes les informations sur l'usager Denis
et les groupes auquels il appartient.

Il est possible en vba de passer cette commande et de renvoyer
toute l'information dans un fichier Texte

J'ai utilisé la commande InStr() pour savoir si le nom du groupe
apparaissaint dans l'ensemble du texte contenu dans le fichier texte.

'----------------------------------------
Sub test()
Dim Fs As Object, S As String, Commande As String
Dim NomDuGroupe As String, FichierTxt As String

'Nom du groupe
NomDuGroupe = "session"
'Fichier où seront copiées les données de la commande Dos
FichierTxt = "c:toto.txt"

Commande = Environ("comspec") & " /c " & _
"Net User %Username% > " & FichierTxt
Shell Commande, 0
Set Fs = CreateObject("Scripting.FileSystemObject")

'Délai pour laisser le temps de créer le fichier texte
'4 secondes que tu peux adapter selon la puissance
'de ton ordi.
Application.Wait Now + TimeValue("0:00:04")

S = Fs.OpenTextFile(FichierTxt, 1).ReadAll

If InStr(1, S, " " & NomDuGroupe & " ", vbTextCompare) > 0 Then
MsgBox "Présent dans ce groupe"
Else
MsgBox "Non présent"
End If
Kill FichierTxt
End Sub
'----------------------------------------



"Vader" a écrit dans le message de news:

Bonjour,

Je sais qu'il est possible d'extraire le nom d'utilisateur (session) ...
est-il possible de savoir si le login de la session appartient bien à un
groupe d'utilisateur ?

L'idée étant de protéger/déprotéger un classeur en fonction du groupe
d'utilisateur :-)

Merci





Avatar
Vader
Merci !

Je dois dire que je suis impressionné par les solutions que certains d'entre
vous arrive à trouver ... il y a de quoi apprendre !


Si tu préfères, tu peux aussi utiliser ceci :

run on Windows NT 4.0 or Windows 98; in the latter two cases,
however, you might need to install additional scripting technologies
such as ADSI or WMI before the scripts will work

'-----------------------------------
Sub test()

Dim Usager As String, FaitPartiDuGroupe As Boolean
Dim NomDuGroupe As String, Fin As String

Usager = "Denis"
NomDuGroupe = "MonGroupe"

strComputer = Environ("ComputerName")
Set colGroups = GetObject("WinNT://" & strComputer & "")
colGroups.Filter = Array("group")
For Each objGroup In colGroups
ss = objGroup.Name
If objGroup.Name = NomDuGroupe Then
For Each objUser In objGroup.Members
If objUser.Name = Usager Then
FaitPartiDuGroupe = True
GoTo Fin
End If
Next
End If
Next
Fin:
MsgBox Usager & " est membre du groupe " & _
NomDuGroupe & " : " & FaitPartiDuGroupe
End Sub
'-----------------------------------



"Vader" a écrit dans le message de news:

Très fort !

Ca marche ... Merci !


En DOS, il y a la commande Net qui donne toute sorte d'information.

Par exemple la commande suivante à l'invite de DOS

Net User Denis donne toutes les informations sur l'usager Denis
et les groupes auquels il appartient.

Il est possible en vba de passer cette commande et de renvoyer
toute l'information dans un fichier Texte

J'ai utilisé la commande InStr() pour savoir si le nom du groupe
apparaissaint dans l'ensemble du texte contenu dans le fichier texte.

'----------------------------------------
Sub test()
Dim Fs As Object, S As String, Commande As String
Dim NomDuGroupe As String, FichierTxt As String

'Nom du groupe
NomDuGroupe = "session"
'Fichier où seront copiées les données de la commande Dos
FichierTxt = "c:toto.txt"

Commande = Environ("comspec") & " /c " & _
"Net User %Username% > " & FichierTxt
Shell Commande, 0
Set Fs = CreateObject("Scripting.FileSystemObject")

'Délai pour laisser le temps de créer le fichier texte
'4 secondes que tu peux adapter selon la puissance
'de ton ordi.
Application.Wait Now + TimeValue("0:00:04")

S = Fs.OpenTextFile(FichierTxt, 1).ReadAll

If InStr(1, S, " " & NomDuGroupe & " ", vbTextCompare) > 0 Then
MsgBox "Présent dans ce groupe"
Else
MsgBox "Non présent"
End If
Kill FichierTxt
End Sub
'----------------------------------------



"Vader" a écrit dans le message de news:

Bonjour,

Je sais qu'il est possible d'extraire le nom d'utilisateur (session) ...
est-il possible de savoir si le login de la session appartient bien à un
groupe d'utilisateur ?

L'idée étant de protéger/déprotéger un classeur en fonction du groupe
d'utilisateur :-)

Merci










Avatar
papou
Bonjour
En complément de la réponse fournie par Denis, et si c'est utile, il existe
des techniques utilisées en VBScript permettant de récupérer des
appartenances à des groupes qui ne sont pas présents sur le poste en local
(dans l'AD).
Ces techniques peuvent sans problème être récupérées et exécutées dans
Excel.

Tu trouveras des exemples (en anglais) ici
http://www.rlmueller.net/freecode1.htm

Et ne pas oublier :
http://bellamyjc.org/

Cordialement
Pascal

"Vader" a écrit dans le message de news:

Bonjour,

Je sais qu'il est possible d'extraire le nom d'utilisateur (session) ...
est-il possible de savoir si le login de la session appartient bien à un
groupe d'utilisateur ?

L'idée étant de protéger/déprotéger un classeur en fonction du groupe
d'utilisateur :-)

Merci