Bonjour,
Je fais de nouveau appel à vous concernant la résolution d'un problème sur lequel je bloque depuis un moment.
Je vais très bientôt mettre en production auprès d'un ensemble d'utilisateurs, une application Access qui est décomposé de la sorte :
-> Une base back-office (données et requêtes), basé sur un espace réseau de notre serveur d'entreprise
-> Une base front-office (IHM et requêtes), basé en local chez l'utilisateur (ou plus exactement sur son espace serveur partagé)
Le principe étant : Une base de données centrale à tous mais une base interface propre à chacun.
Concernant les configurations, certains ont un Access lourd et d'autres juste le Runtime.
La problématique est la suivante : Effectuant à maintes reprises des imports de données, l'utilisateur se retrouve à sans cesse cliquer sur "OUI" sur une pop-up de sécurité stipulant un problème de sécurité avec l'espace serveur contenant la base back-office.
Du coup, j'ai cherché sur internet et j'ai découvert qu'il fallait modifié la base de registre relative à Access, permettant de créer des emplacements approuvés :
Code à lancer :
Module de fonction interrogé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Sub approuver_Click() If Not Mode_debug Then On Error GoTo err: Dim version As String 102 version = Left(Application.version, 2) 104 If version = "12" Or version = "14" Then 106 Call approuve(version) 108 MsgBox "Emplacement approuvé pour MSaccess version " & IIf(version = "12", "2007", "2010"), vbInformation, "" Else 112 MsgBox "L'approbation ne concerne que les versions 2007 ou 2010.", vbInformation, "" End If Exit Sub err: msgbox "Erreur " & err.Number & "/" & Erl & " dans utilitaires.approuver : " & err.description End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 'approuve un emplacement pour désactiver l'avis de sécurité - adapté à office 2007 (version=10) et 2010 (version=14) 'ne fonctionne que pour les utilisateurs administrateurs ! 'on retrouve l'écriture dans regedit (ou regedt32) : HKEY_CURRENT_USER>SoftWare... 'd'après http://www.developpez.net/forums/d981626/logiciels/microsoft-office/access/runtime/avis-securite-microsoft-access/ Public Sub approuve(version As String) If Not Mode_debug Then On Error GoTo err: Dim KEY As String, s As String, loc As String KEY = "HKCU\Software\Microsoft\Office\" & version & ".0\Access\Security\Trusted Locations\" s = "..." 'emplacement à approuver loc = KEY & "Location10\" if left(s,2)="\\" then WriteIntoReg KEY, "AllowNetworkLocations", 1, "REG_DWORD" '1 = autorise les emplacements réseau WriteIntoReg loc, "AllowSubFolders", 1, "REG_DWORD" '1 = autorise les sub_folders WriteIntoReg loc, "Date", Date, "REG_SZ" WriteIntoReg loc, "Description", "Dossier approuvé pour applicatifs Access", "REG_SZ" WriteIntoReg loc, "Path", s, "REG_SZ" err: End Sub Public Function WriteIntoReg(ByVal KEY As String, ByVal Value As String, ByVal Data, ByVal DataType As String) As Boolean Dim WshShell As Object On Error GoTo WriteIntoReg_Error Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite KEY & Value, Data, DataType WriteIntoReg = True On Error GoTo 0 WriteIntoReg_Exit: Set WshShell = Nothing Exit Function WriteIntoReg_Error: WriteIntoReg = False Resume WriteIntoReg_Exit End Function
Ce code marche parfaitement lorsqu'on veut approuver un emplacement local ou si on a coché l'autorisation des emplacements approuvés sur le réseau.
Seulement voilà, je n'arrive pas à coder quelque chose en VBA pour faire en sorte de cocher cette autorisation... qui se trouve être bloquante dans mon cas, si l'utilisateur à un Runtime (pas d'accès au centre de sécurité Access)
Je pensais que ça avait un rapport avec la ligne "if left(s,2)="\\" then WriteIntoReg KEY, "AllowNetworkLocations", 1, "REG_DWORD" '1 = autorise les emplacements réseau" du code ... j'ai essayé différents choses, sans succès
Pourriez-vous me dire si c'est possible de coder et si oui, que dois-je modifier pour que ça marche ?
En vous remerciant d'avance pour le temps passé à mon problème.
Partager