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 :

Transfert rapide fichier txt en tableau puis recherche dans ce tableau


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 20
    Points
    20
    Par défaut Transfert rapide fichier txt en tableau puis recherche dans ce tableau
    Bonjour
    J'ai besoin de retrouver les valeurs d1 tableau (environ 1000-2000 rows, 3-4 col) à partir d1 fichier txt.
    Le souci est qu'il s'agit d1 appel frequent à ce fichier , pour en extraire que les x dernieres lignes, donc rebatir à chaque fois un tableau complet avec un split de chaque ligne , y a peut être plus rapide ?
    La recherche est du meme gout , plutot que de balayer il faudrait que j'arrive à element N du tableau .
    Vos avis ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,
    Dans ta fonction d'extraction, tu peux peut-être passer en paramètre le nombre de lignes que tu souhaites récupérer en partant de la fin.
    Je pense que tu l'as déjà lu, mais voici un cours qui devrait t'aider.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Par exemple :
    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
    Private Sub LireFichier(ligneDepart As Long)
        Dim oFSO As Scripting.FileSystemObject
        Dim oTxt As Scripting.TextStream
        Dim cpt As Long
     
        'Instanciation du FSO et ouverture du fichier
        Set oFSO = New Scripting.FileSystemObject
        Set oTxt = oFSO.OpenTextFile("D:\Texte\monfichier.txt", ForReading)
        cpt = 1
     
        ' Lecture du fichier
        With oTxt
            While Not .AtEndOfStream
                If cpt >= ligneDepart Then
                    Debug.Print .ReadLine
                Else
                    .SkipLine
                End If
                cpt = cpt + 1
            Wend
        End With
     
        ' Fermeture du fichier
        oTxt.Close
    End Sub

  4. #4
    Membre à l'essai
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par paidge Voir le message
    Par exemple :

    While Not .AtEndOfStream
    If cpt >= ligneDepart Then
    Debug.Print .ReadLine
    Else
    ....
    End Sub[/code]
    Ok , c'est bien ou j'en suis (FSO+ split pour decouper en champs)... mais on passe par un while donc si j'en suis au 1498eme pour ne récupérer que les 2 derniers je suis obligé de balayer tout depuis le debut .
    Ce que je cherche un moyen "rapide" pour formater le fichier csv en qqchose de lisible à partir Xeme enregistrement

    EDIT : je viens de trouver : .SkipLine // pour le lecture, ca va le faire je pense . // Bah non ! on ne peut pas faire un : .SkipLine 1400 ... donc toujours une boucle

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    A ma connaissance, ce que tu veux faire n'est pas possible. Je viens de chercher et je n'ai rien trouvé malheureusement. Si j'ai bien lu, si tu connais le nombre de caractères à sauter oui c'est possible...Mais là on pparle de lignes (A moins que chaque ligne ait un nombre de caractères fixes)

  6. #6
    Membre à l'essai
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    oui c'est ca , et bien sur la taille varie sur chaque ligne (trop simple sinon )
    Merci qd meme

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Lorsque tu parles d'appel fréquent c'est plusieurs fois par jour ?

    Si oui pourquoi ne pas charger ce fichier une fois par jour dans une table et ensuite interroger la table ?

    Si c'est un fichier évolutif, tu peux le charger dans une table (un import), avec une table correctement indéxé pour éviter les doublons, donc seulement les dernières données seront ajoutées.

    La lecture dans cette table sera beaucoup plus rapide.

    Voilà une piste de réflexion.

    Philippe

  8. #8
    Membre à l'essai
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    merci Philippe pour ton idée, mais dans la cas précis cela ne convenait pas car c'est toutes les 2 secondes... sur timer donc
    Le fichier n'est pas enorme 64Ko , et ca à l'air de tenir la route , avec un split dès que la bonne ligne est trouvée ...

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/07/2013, 10h06
  2. [WD-2007] Transfert données fichier .txt vers word
    Par Paro. dans le forum Word
    Réponses: 3
    Dernier message: 29/03/2012, 15h28
  3. Transfert de fichier txt -> access en C#
    Par claudelana dans le forum C#
    Réponses: 0
    Dernier message: 10/01/2011, 13h16
  4. Réponses: 5
    Dernier message: 10/08/2009, 21h48
  5. Réponses: 5
    Dernier message: 15/03/2007, 06h58

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