IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Cocher via VBA l'autorisation des emplacements approuvés sur mon réseau


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Cocher via VBA l'autorisation des emplacements approuvés sur mon réseau
    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 :

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

    Nom : approuve.JPG
Affichages : 919
Taille : 14,0 Ko

    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.


  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut front end et back end
    Le plus simple serait de donner à tous accès au front-end complet, quitte à cacher certains objets pour ceux qui avaient la version runtime (cacher les objets peut se faire par vba protégé par mot de passe)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 11
    Points
    11
    Par défaut front end et back end
    Bonjour Zekraoui_Jakani et Merci pour ton retour.

    Du côté du Front, l'applicatif ne pose pas de problème. C'est lorsque celui-ci veut interroger l'autre base Access (Back contenant les données), situé sur un autre espace serveur, que le message apparait

    Je viens d'essayé avec une base Access sans VBA ... Rien à faire

    Cordialement

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Si c'est ton appli qui inscrit la valeur dans le Registre, ça ne marchera jamais puisqu'elle n'est pas approuvée et donc ne pourra pas exécuter ton code dans son ensemble.

    Pour pallier, tu peux déployer ton application avec mes outils d'empaquetage...
    Ca créé les emplacements et l'approbation du réseau.

    N.B. à partir de 2010, 2013 et 2016

    Attention toutefois, l'outil d'empaquetage 2010 fournit par Microsoft est buggé et ne fait pas cela correctement ; donc tu peux récupérer ma version en fin page du tuto.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,

    Plus simplement, tu peux contituer un .REG appropié à ton appli et à ta version OFFICE en constituant un .REG avec les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Windows Registry Editor Version 5.00
     
    [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Access\Security\Trusted Locations\Location3]
    "Path"="C:\\Users\\DISTELP5\\Documents\\Programme Prospects\\"
    "Description"="Emplacement d'Access*: bases de données Prospects"
    [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access\Security\Trusted Locations\Location3]
    "Path"="C:\\Users\\DISTELP5\\Documents\\Programme Prospects\\"
    "Description"="Emplacement d'Access*: bases de données Prospects"
    RAPPEL : C'est à personnaliser ton appli et à ta version OFFICE

    CDLT
    "Always look at the bright side of life." Monty Python.

Discussions similaires

  1. [AC-2007] Emplacements approuvés sur un NAS impossible :-/
    Par CrasherSEP dans le forum Macros Access
    Réponses: 1
    Dernier message: 02/07/2014, 12h03
  2. Log des sites web sur mon réseau personnel.
    Par wonderboutin123 dans le forum Sécurité
    Réponses: 2
    Dernier message: 17/01/2013, 16h29
  3. [VBA-W]Insérer des images du web/du réseau
    Par wizdom dans le forum VBA Word
    Réponses: 1
    Dernier message: 22/04/2007, 15h56
  4. VBA-E Recherche des différents noms dans mon tableau excel
    Par tazmania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2007, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo