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 :

Récupération de données ACCESS [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut Récupération de données ACCESS
    Bonsoir.

    Je souhaiterais exploiter les données d'un fichier .mdb, contenant un peu plus d' 1100000 lignes.

    La structure de la bdd est la suivante :
    Table1 :
    Champ1 = Numéro de série
    Champ2 = Info produit 1
    Champ3 = Info produit 2
    Champ4 = Info produit 3
    Champ5 = Info produit 4

    Dans un fichier excel, j'écris un numéro de série dans la cellule A1 de la Feuille1, j'aimerais alors que les lignes correspondantes au numéro de série soient collées dans la feuille 2 du classeur excel.
    Exactement comme ce qui est indiqué sur cette page, mais avec un filtrage préalable des données.

    Pouvez-vous m'aider ?

    Merci d'avance et bonne fin de journée.

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Une solution sans VBA ici http://www.excel-formations.fr/Trucs...s/ACCESS01.php mais qui peut aussi être évoquée via VBA...

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    Merci 78chris, je vais creuser dans cette direction.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    La solution de Chris fonctionne parfaitement. Il faut juste prévoir de rafraîchir les données au bon moment et de désactiver la mise à jour en arrière plan.

    Merci !

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    Une dernière remarque toujours à ce sujet.

    J'ai remarqué que depuis la mise en place de cette méthode, le processus excel.exe ne se termine pas toujours (problème aléatoire) à la fermeture du classeur excel.
    Il semblerait que ça soit la liaison avec la base de donnée access qui ne se clôture pas à la fermeture d'excel.

    Comment puis-je résoudre ce problème qui empêche le bon fonctionnement du classeur lors de sa réouverture ?

    Merci.

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Utilises-tu juste la liaison vers la requête Access ou y a-t-il du code VBA ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    ]Bonsoir,
    Personnellement j'ai une base access utilisée par une quinzaine d'utilisateurs sens problème.

    Il faut aller dans les paramètre Access et rendre la base partagé sens verrouillage des enregistrements.

    En revanche Excel a la fâcheuse habitude à ouvrir ses connectons en mode exclusive !

    Je ne laisse jamais Excel gérer les choses pour moi. J'utilise Ado.

    D'ailleurs, je n'ai prévu aucune commande pour fermer la bdd, en existe il une ?
    Quand tu quittes ton fichier Excel la connexion est rendu au {Garbage collecteur}, la connexion n'est pas a proprement parlé clôturée, c'est Windows qui la referme après quelque temps plus ou moins long!
    Dernière modification par Invité ; 20/04/2017 à 23h11.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    Bonjour.

    Voici les paramètres d'Access à ce sujet, ils me semblent corrects.

    Nom : Capture.PNG
Affichages : 290
Taille : 8,8 Ko

    Je ne connais pas du tout ADO, penses-tu que ma demande soit réalisable avec cette méthode ?

    Merci.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans Access décoche avec enregistrement verrouillés.

    Code Module de classe1 : 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
    Private Cn As Object, Base_ As String
    Private Sub Class_Initialize()
    Set Cn = CreateObject("Adodb.connection")
    End Sub
    Public Property Let Base(Value As String)
    Base_ = Value
    End Property
    Private Sub connection()
    On Error Resume Next
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Base_
    If Err Then MsgBox Err.Description
    On Error GoTo 0
    End Sub
    Private Sub Class_Terminate()
    If Cn.State <> 0 Then Cn.Close
    Set Cn = Nothing
    End Sub
    Public Function OpenRecordset(Sql) As Object
    If Cn.State = 0 Then connection
    If Cn.State <> 0 Then
        On Error Resume Next
        Set OpenRecordset = Cn.Execute(Sql)
        If Err Then MsgBox Err.Description
        On Error GoTo 0
    End If
    End Function
    Public Function Execute(Sql) As Object
    If Cn.State = 0 Then connection
    If Cn.State <> 0 Then
        On Error Resume Next
       Cn.Execute (Sql)
        If Err Then MsgBox Err.Description
        On Error GoTo 0
    End If
    End Function
    Code Module standard : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Cn As New Classe1
    Sub test()
    Cn.Base = "C:\Users\dysorthographie\Documents\Base de données1.mdb"
    Set Rs = Cn.OpenRecordset("SELECT Toto.* FROM Toto WHERE Toto.Identifian='ad';")
    If TypeName(Rs) = "Nothing" Then Exit Sub
    With Rs
        For i = 0 To .Fields.Count - 1
            ActiveSheet.Range("A1").Offset(, i) = .Fields(i).Name
        Next
            ActiveSheet.Range("A2").CopyFromRecordset Rs
    End With
    End Sub

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    Enorme merci à toi dysorthographie

    Cette technique est merveilleuse, j'ai suivi le tuto dispo sur cette page, et tout fonctionne mieux, plus fluide, plus fiable, bref, le top !

    Excellent week-end à vous !

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

Discussions similaires

  1. BLOB-récupération de données dans access
    Par Thierrydu50 dans le forum VB.NET
    Réponses: 3
    Dernier message: 05/10/2009, 15h15
  2. Réponses: 3
    Dernier message: 20/06/2009, 15h34
  3. [ODBC] Récupération de données en PHP sur access
    Par frogs dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 04/11/2008, 14h50
  4. Récupération de données Access pour un formulaire Excel
    Par roudy78 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/05/2007, 10h02
  5. Récupération de données d'une base access
    Par ologele dans le forum VB 6 et antérieur
    Réponses: 39
    Dernier message: 05/08/2006, 13h37

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