Tester appartenance à un groupe d'utilisateur

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #5013561
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"
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
Vader
Le #5013261
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"
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





MichDenis
Le #5012851
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"
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"
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





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


"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"
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"
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





Vader
Le #5012571
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"
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"
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










papou
Le #5012461
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"
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


Publicité
Poster une réponse
Anonyme