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

Macros et VBA Excel Discussion :

Faire fonctionner une requête qui lit une base Access 2010 avec mot de passe [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    xxxxxx
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : xxxxxx

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Faire fonctionner une requête qui lit une base Access 2010 avec mot de passe
    Bonjour à tou(te)s

    je cherche à extraire en vba et avec un query dans excel 2010 une table d'une base access 2010. Cette extraction marche lorsque le fichier Access 2010 (base .accdb) n'a pas de mot de passe.
    Elle ne marche pas si la base a un mot de passe. Par contre le requetage marche bien si j'appelle une base Access 2003 (.mdb)
    Pour éviter les longs discours , j'ai mis un exemple avec un fichier excel et 2 boutons qui appellent 2 bases; une avec mot de passe et une sans. le mot de passe est "motdepasse".
    Il faut créer un connecteur réseau, copier les bases au même endroit et indiquer au fichier excel ou trouver le repertoire (feuille param).
    j'ai une erreur mais pas la même si j'exécute à partir de mon boulot ou à la maison. le message à la maison est plus explicite. Il se bloque sur la saisie mot de passe de l'admin qui n'est pas reconnu.

    quelqu'un aurait-il des pistes de solution à proposer ?

    merci d'avance pour votre aide.
    Bien cordialement.
    Un mister red; très très red.
    j'ai mis en pièce jointe : Pièce jointe 171505
    Fichiers attachés Fichiers attachés

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    J'ai essayé d'ouvrir la pj, ce qui est rare, mais le lien est défectueux.
    Tu pourrais mettre le script de connexion qui te pose pb.

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Futur Membre du Club
    Profil pro
    xxxxxx
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : xxxxxx

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut mise à jour de la pièce jointe + code
    Merci pour ce 1er retour très rapide.

    Je viens de remettre la pièce jointe déjà (avec un 1 en bout du zip). le lien marche peut être mieux ?

    Le code :
    Des constantes, d'abord.

    La procédure avec 2 variantes (une avec mot de passe, l'autre sans mot de passe).

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    Private Const Requete As String = "Requete"
    Private Const c_sql As String = "SELECT * FROM maTable;"
    Private Const c_MotDePasse As String = "motdepasse"
     
    Public Sub CreationRequeteAvecMotDePasse(sql As String, RangeDestination As String, Feuille As Worksheet, QueryName As String)
    'Pour le developpeur
    Dim serveur, NomBASE, RepertoireBase, connexion, baseconnexion, repertoireconnexion
    Dim DebuRequete As range: Set DebuRequete = range(RangeDestination)
    Dim strcrypt As String
     
    On Error GoTo Erreur_CreationRequete
     
        serveur = Sheets("Param").range("Serveur").Value
        NomBASE = Sheets("Param").range("Nom_BASE_AvecMotDePasse").Value
        RepertoireBase = Sheets("Param").range("RepertoireBase")
     
     
     
        baseconnexion = serveur & "\" & RepertoireBase & "\" & NomBASE
        repertoireconnexion = serveur & "\" & RepertoireBase
     
        connexion = "ODBC;DSN=MS Access Database;DBQ=" & baseconnexion & ";DefaultDir=" & repertoireconnexion & ";" _
            & "DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;PWD=" & c_MotDePasse
     
     
     
        Worksheets("Portefeuille").Activate
     
        DebuRequete.Select
        With Feuille.QueryTables.Add(Connection:=(connexion), Destination:=DebuRequete, sql:=(sql))
            .CommandText = ((sql))
            .Name = QueryName
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
    '       .RefreshStyle = xlInsertDeleteCells
            .RefreshStyle = xlOverwriteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
    'ARO 29/09/14
     
    Exit_CreationRequete:
        Exit Sub
     
    Erreur_CreationRequete:
        MsgBox Err.Description
        Resume Exit_CreationRequete
    End Sub
    Public Sub CreationRequeteSansMotDePasse(sql As String, RangeDestination As String, Feuille As Worksheet, QueryName As String)
    'Pour le developpeur
    Dim serveur, NomBASE, RepertoireBase, connexion, baseconnexion, repertoireconnexion
    Dim DebuRequete As range: Set DebuRequete = range(RangeDestination)
    Dim strcrypt As String
     
    On Error GoTo Erreur_CreationRequete
     
        serveur = Sheets("Param").range("Serveur").Value
        NomBASE = Sheets("Param").range("Nom_BASE_SansMotDePasse").Value
        RepertoireBase = Sheets("Param").range("RepertoireBase")
     
     
     
        baseconnexion = serveur & "\" & RepertoireBase & "\" & NomBASE
        repertoireconnexion = serveur & "\" & RepertoireBase
     
        connexion = "ODBC;DSN=MS Access Database;DBQ=" & baseconnexion & ";DefaultDir=" & repertoireconnexion & ";" _
            & "DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
     
     
        Worksheets("Portefeuille").Activate
     
        DebuRequete.Select
        With Feuille.QueryTables.Add(Connection:=(connexion), Destination:=DebuRequete, sql:=(sql))
            .CommandText = ((sql))
            .Name = QueryName
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
    '       .RefreshStyle = xlInsertDeleteCells
            .RefreshStyle = xlOverwriteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
    Exit_CreationRequete:
        Exit Sub
     
    Erreur_CreationRequete:
        MsgBox Err.Description
        Resume Exit_CreationRequete
    End Sub

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Je ne vois pas d'erreur flagrante.
    Juste une idée issue d'un cas vécu : si ton mot de passe est long ( plus de 12 ou 14 car), ou comporte des caractères non ascci, tu peux essayer de le simplifier pour voir si cela ne viendrait pas de là.

    Cordialement,

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Futur Membre du Club
    Profil pro
    xxxxxx
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : xxxxxx

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci pour ce nouveau retour, pgz.
    J'ai essayé avec un mot de passe plus simple ou limité à 8 caractères pour voir si ce ne'st pas un effet de bord de la gestion de sécurité de mon environnement mais cela ne change rien. J'ai lu quelque part qu'Access 2010 n'utilisait plus la gestion de sécurité au niveau utilisateur; ce qui pourrait dire si je comprends bien qu'en fait on ne saurait plus accéder d'une explication extérieure à access 2010 par une protection par mot de passe ! Et qu'il faudrait recourir à une autre forme de protection.

    Du coup, la question que je me pose est de savoir si quelqu'un a réussi ou non à interroger, à partir d'un excel 2010, une base .accdb access 2010 avec mot de passe ?

    Merci pour tout retour à ce sujet

    Bonne journée

  6. #6
    Futur Membre du Club
    Profil pro
    xxxxxx
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : xxxxxx

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Solution de contournement
    Ci-attachée la solution que j'ai récupérée sur le livre " Access.2010.VBA.Macro.Programming" chez Microsoft Editions.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/07/2018, 13h18
  2. [Débutant] Connection à une base Access 2003 avec mot de passe
    Par ekke dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/01/2012, 14h27
  3. Réponses: 2
    Dernier message: 19/08/2011, 10h02
  4. céer une table qui copie une requête
    Par averooès dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/01/2009, 15h27
  5. Comment ouvrir une base Access protègée par mot de passe
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/09/2006, 13h53

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