OVH Cloud OVH Cloud

VBA: modifiers les permissons de l'utilisateur

5 réponses
Avatar
Stach
Salut à tous,

J'aimerai savoir si en VBA il y a possibilité de manipuler les permissions
atribuées à un utilisateur?

Je suppose que c'est avec la collection "Users", mais le problème est que ma
version d'access ne me fourni aucune aide à ce sujet...

Merci d'avance de m'aider.

--
Stach ;-)

5 réponses

Avatar
3stone
Salut,

"Stach"
| J'aimerai savoir si en VBA il y a possibilité de manipuler les permissions
| atribuées à un utilisateur?
|
| Je suppose que c'est avec la collection "Users", mais le problème est que ma
| version d'access ne me fourni aucune aide à ce sujet...


En principe, les droits sont attribués aux groupes...
et l'utilisateur fait partie de tel ou tel groupe.

Regarde chez Jessy :
http://access.jessy.free.fr/htm/Admin/Admin.htm


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Stach
Salut 3stone,

Merci pour la piste.

En fait, j'explique ma situation: j'ai ma bd séparée en une base frontale
sur chaque PC et une base dorsale qui se trouve sur le serveur (lorsque les
PC portable sont connecté au serveur)pour l'encodage des données, mais une
copie mise à jour régulièrement existe aussi sur le disque local (PC
déconnecté du serveur) pour visionner les statistique "hors réseau".

J'ai fait une fonction me permettant de gérer tout cela afin de rétablir les
bonnes connections entre la bd frontale et la bd dorsale concernée.

Mon problème est que le rétablissemnt des connections ne fonctionne que
lorsque c'est moi (administrateur) qui ouvre la bd. Pour que ça marche pour
les autres utilisateurs, il faudrait que je puisse momentanément leurs donner
les droits "administrauteurs" et une fois mes connections rétablies les
supprimer du groupe administrateur pour qu'ils récupèrent leurs droits
initiaux.

Verais-tu une solution pour résoudre ce problème?

Merci d'avance.

--
Stach ;-)



Salut,

"Stach"
| J'aimerai savoir si en VBA il y a possibilité de manipuler les permissions
| atribuées à un utilisateur?
|
| Je suppose que c'est avec la collection "Users", mais le problème est que ma
| version d'access ne me fourni aucune aide à ce sujet...


En principe, les droits sont attribués aux groupes...
et l'utilisateur fait partie de tel ou tel groupe.

Regarde chez Jessy :
http://access.jessy.free.fr/htm/Admin/Admin.htm


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
Salut,

"Stach"
| En fait, j'explique ma situation: j'ai ma bd séparée en une base frontale
| sur chaque PC et une base dorsale qui se trouve sur le serveur (lorsque les
| PC portable sont connecté au serveur)pour l'encodage des données, mais une
| copie mise à jour régulièrement existe aussi sur le disque local (PC
| déconnecté du serveur) pour visionner les statistique "hors réseau".
|
| J'ai fait une fonction me permettant de gérer tout cela afin de rétablir les
| bonnes connections entre la bd frontale et la bd dorsale concernée.
|
| Mon problème est que le rétablissemnt des connections ne fonctionne que
| lorsque c'est moi (administrateur) qui ouvre la bd. Pour que ça marche pour
| les autres utilisateurs, il faudrait que je puisse momentanément leurs donner
| les droits "administrauteurs" et une fois mes connections rétablies les
| supprimer du groupe administrateur pour qu'ils récupèrent leurs droits
| initiaux.


En fait, les droits ne sont pas ma tasse de thé ;-))

Mais je doute que ton approche soit idéale.
Donner les droits administrateurs, même momentanément, ne peut être la solution.
Comment réalise tu la reconnections ?


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Stach
Salut,

Je réorganise mes réconnections avec:

If fso.FileExists(strDorsaleRes) Then
Set db = CurrentDb
For Each tdf In db.TableDefs
If (tdf.Attributes And dbSystemObject) = 0 Then
If tdf.Connect <> "" Then
If tdf.Connect <> ";DATABASE=" & strDorsaleRes Or tdf.Connect = ""
Then
tdf.Connect = ";DATABASE=" & strDorsaleRes
tdf.RefreshLink
End If
End If
End If
Next
End If

Cette partie du code fonctionne impeccablement lorsque c'est moi qui me
connecte, mais pas lorsque c'est un autre utilisateur car il n'a pas la
permission de modifier les connections vu qu'il n'est pas administrateur

Je pense qu'avec la piste que tu m'as donné, je vais essayer de répérer de
quel groupe fait partie mon utilisateur (le retenir), le faire passer dans le
groupe Administrateur le temps que les connections se rétablissent, puis je
le supprime du groupe administrateur pour le renvoyer dans son groupe
d'origine.

Je sais, c'est du bricolage, mais ça permettrai de consulter les
statistiques en étant ou non branché au réseau, sans aucune contrainte pour
l'utilisateur.

J'essaye et te tiens informé si ça marche ou si j'ai perdu mes cheveux!



--
Stach ;-)



Salut,

"Stach"
| En fait, j'explique ma situation: j'ai ma bd séparée en une base frontale
| sur chaque PC et une base dorsale qui se trouve sur le serveur (lorsque les
| PC portable sont connecté au serveur)pour l'encodage des données, mais une
| copie mise à jour régulièrement existe aussi sur le disque local (PC
| déconnecté du serveur) pour visionner les statistique "hors réseau".
|
| J'ai fait une fonction me permettant de gérer tout cela afin de rétablir les
| bonnes connections entre la bd frontale et la bd dorsale concernée.
|
| Mon problème est que le rétablissemnt des connections ne fonctionne que
| lorsque c'est moi (administrateur) qui ouvre la bd. Pour que ça marche pour
| les autres utilisateurs, il faudrait que je puisse momentanément leurs donner
| les droits "administrauteurs" et une fois mes connections rétablies les
| supprimer du groupe administrateur pour qu'ils récupèrent leurs droits
| initiaux.


En fait, les droits ne sont pas ma tasse de thé ;-))

Mais je doute que ton approche soit idéale.
Donner les droits administrateurs, même momentanément, ne peut être la solution.
Comment réalise tu la reconnections ?


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
Stach
J'ai réussi à modifier les droits de mes utilisateurs afin qu'ils deviennent
momentanément administrateur avec le code suivant:

Function UserRightAdmin()
Dim wsp As Workspace, grp As GROUP, usr As User, MyUserGrp As String,
MyGrpNew As String

'Nom du groupe d'origine de l'utilisateur
Set wsp = DBEngine.Workspaces(0)
With wsp
Set usr = .Users(CurrentUser)
For Each grp In usr.Groups
If grp.Name <> "Admins" And grp.Name <> "Users" Then
MyUserGrp = grp.Name
Exit For
End If
Next
'Ajouter le groupe "Admins" à l'utilisateur
MyGrpNew = "Admins"

Set grp = usr.CreateGroup(MyGrpNew)
usr.Groups.Append grp
.Users.Refresh
.Groups.Refresh
End With

UserRightAdmin = True

End Function

Cela fonctionne pas mal car lorsque je vais "manuellement" vérifier dans les
paramètres de sécurité, l'utilisateur est bien reconnu comme administrateur.

Le souci est que lorsque je simule l'ouverture de ma base avec le pseuso et
le mot de passe d'un utilisateur, j'obtiens quand même un message me disant
que je n'ai pas l'autorisation de faire ces modification et que je dois les
demander à l'administrateur de la bd (alors que mon utilisateur est bien
devenu adminstrateur)!

Que puis-je faire pour cela fonctionne?

Merci d'avance.

--
Stach ;-)



Salut,

"Stach"
| En fait, j'explique ma situation: j'ai ma bd séparée en une base frontale
| sur chaque PC et une base dorsale qui se trouve sur le serveur (lorsque les
| PC portable sont connecté au serveur)pour l'encodage des données, mais une
| copie mise à jour régulièrement existe aussi sur le disque local (PC
| déconnecté du serveur) pour visionner les statistique "hors réseau".
|
| J'ai fait une fonction me permettant de gérer tout cela afin de rétablir les
| bonnes connections entre la bd frontale et la bd dorsale concernée.
|
| Mon problème est que le rétablissemnt des connections ne fonctionne que
| lorsque c'est moi (administrateur) qui ouvre la bd. Pour que ça marche pour
| les autres utilisateurs, il faudrait que je puisse momentanément leurs donner
| les droits "administrauteurs" et une fois mes connections rétablies les
| supprimer du groupe administrateur pour qu'ils récupèrent leurs droits
| initiaux.


En fait, les droits ne sont pas ma tasse de thé ;-))

Mais je doute que ton approche soit idéale.
Donner les droits administrateurs, même momentanément, ne peut être la solution.
Comment réalise tu la reconnections ?


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/