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 :

Probleme de lecture de fichier Excel avec ADODB recordset


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Par défaut Probleme de lecture de fichier Excel avec ADODB recordset
    Bonjour à tous,
    je rencontre un souci avec un code vba sous access me permettant de lire un fichier excel pour alimenter mes tables.

    Ci joint le code me permettant de parcourir le fichier. Cela fonctionne, j'arrive à parcourir mes données et les lire, mais j'aurais besoin de la position de mon enregistrement et en utilisant la propriété absoluteteposition, celle ci reste à -1 tout au long de l'éxécution, alors que la navigation dans le recordset fonctionne puisque j'arrive à récupérer les champs de tous mes enregistrements.
    De al même façon, la propriété recordcount ne fonctionne pas alors que mon recordset n'est pas vide.

    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
    Sub import_filiation()
     
    'connection au fichier excel
    Dim cn_xls As ADODB.Connection
    Dim Rst_xls As ADODB.Recordset
    Dim fichier As String
    Dim NomFeuille As String, texte_sql As String
     
    'Définition du classeur fermé servant de source
    chemin = "C:\Mon Espace Disque\"
    fichier = "conversion SAP_Pere_Fils.xls"
    NomFeuille = "extract" 'A METTRE A JOUR
     
    chemin_fichier = chemin & fichier
     
    'Connection à la source Excel
    Set cn_xls = New ADODB.Connection
    With cn_xls
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
        "DBQ=" & chemin_fichier & "; ReadOnly=False;"
        .Open
    End With
     
    '----- Définition de la requête ------
    texte_sql = "SELECT * FROM [" & NomFeuille & "$]"
    Set Rst_xls = New ADODB.Recordset
    Set Rst_xls = cn_xls.Execute(texte_sql)
    MsgBox (Rst_xls.RecordCount)
     
    'Parcours sur les lignes du fichier excel pour traiter les differentes informations
    Do While Not (Rst_xls.EOF)
        MsgBox (Rst_xls.AbsolutePosition)
        MsgBox (Rst_xls.Fields(0))
        Rst_xls.MoveNext
    Loop
     
    End Sub
    J'ai du oublier quelque chose mais je ne vois pas quoi. je précise que je ne suis pas expert en vba sous access, je me suis inspiré de tutos trouvés sur le site pour écrire ce code.

    Merci par avance de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Rst_xls.EOF = False Then
        Rst_xls.MoveLast
        MsgBox Rst_xls.RecordCount
        Rst_xls.MoveFirst
    End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Rst_xls = New ADODB.Recordset
    Set Rst_xls = cn_xls.Execute(texte_sql)
    Dernière modification par Invité ; 28/10/2016 à 12h28.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Par défaut
    Merci de ton aide.

    je ne comprends pas le msgbox abs(-1)

    Sinon, lorsqu'il arrive sur le movelast, j'ai un message d'erreur "l'ensemble de lignes en prend pas en charge les récupérations arrière".
    Il semblerait que cela vienne du type de recordset mais :
    - je ne connais pas les différents types possibles, ni comment en changer
    - c'est bizarre car le movelast correspond à un "mouvement en avant non"

  4. #4
    Invité
    Invité(e)
    Par défaut
    le MoveLast positionne ton RecordSet à la fin de ta requête et le MoveFirst en début de ta requête!

    je ne comprends pas le msgbox abs(-1)
    Absolut position

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Par défaut
    OK pour le movelast, mais dans mon exemple, il me donne l'erreur "l'ensemble de lignes en prend pas en charge les récupérations arrière"

  6. #6
    Invité
    Invité(e)
    Par défaut
    l'histoire du MoveLast c’était pour dire que le RecordCount retourne toujours 1 au début de la requête!


  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Par défaut
    J'aimerais bien justement que mon recordcount me donne 1.

    Avec le code suivant, mes 2 valeurs sont à -1 (recordcount et absoluteposition), d'ou mon problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '----- Définition de la requête ------
    texte_sql = "SELECT * FROM [" & NomFeuille & "$]"
    'Set Rst_xls = New ADODB.Recordset
    Set Rst_xls = cn_xls.Execute(texte_sql)
     
    MsgBox Rst_xls.RecordCount
    MsgBox Rst_xls.AbsolutePosition

Discussions similaires

  1. [Débutant] Problem d'ecriteur sur fichier EXCEL Avec VB.net
    Par abdego dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/09/2012, 21h04
  2. Réponses: 5
    Dernier message: 04/07/2011, 20h55
  3. Lecture de fichier excel avec phpExcelReader
    Par lekonquerant dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/06/2010, 18h06
  4. Probleme de lecture de fichier Excel sous Access
    Par tribaleur dans le forum VBA Access
    Réponses: 6
    Dernier message: 10/03/2008, 07h51
  5. Probleme de lecture de fichier swf avec c#
    Par Vince57 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/06/2006, 14h18

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