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 :

[E-02] Requetes SQL sur fichier .txt delimité par ";"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Par défaut [E-02] Requetes SQL sur fichier .txt delimité par ";"
    Bonjour à tous,

    J'ai un fichier .txt de plus de 300 000 lignes. Le delimiteur est un ";".
    J'ai essayé de trouver comment changer le delimiteur en cherchant une propiété quand je declare ma base en ADODB ou en DAO : impossible.

    J'ai fait des recherches et j'ai rien trouvé.
    Je suis tombé sur un post d'un autre forum où la personne conseillait de changer le delimiteur direct dans le registre Ya pas un autre moyen?

    Pouvez-vous m'aider svp.

    Merci

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par -={-_-}=- Voir le message
    Bonjour à tous,

    Je suis tombé sur un post d'un autre forum où la personne conseillait de changer le delimiteur direct dans le registre Ya pas un autre moyen?
    Faire un find replace sur ton fichier texte avant l'import.
    J'ai déjà vu une solution sur le forum très très rapide aux dire du créateur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Par défaut
    Sur 300 000 lignes ca plante quand je fais un CTRL+H à la main. Trop de données surement.
    Tu penses que ca change quelque chose si j'ouvre notepad avec ma macro que je demande à ma macro de faire un find/replace?

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    non,
    je voulais parler d'un code vba qui fait cela, je pense même que cela venait de ucfoutu.

    Sinon, je sais le faire avec line-input en utilisant un fichier input et un temporaire en output puis replace d'un par l'autre, mais il parait qu'il y a plus simple.

    laisse moi-chercher un peu svp.

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Une première solution

    une autre meilleure ici

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Par défaut
    Merci beacoup,
    Ca marche bien
    Dans ton post précédent, tu m'avais donné l'idée donc j'ai fais un code et qui tourne en plus

    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
     
    Sub ChangerSemicolonEnComma()
        Open "P:\o.txt" For Input As #1 'ouvre le fichier données brutes
        Open "P:\titi.txt" For Append As #2 'ouvre un fichier pour les données retraitées
        Do While Not EOF(1)                             'Tant qu'on est pas à la fin du fichier.
            Line Input #1, ligne ' Lecture de la ligne à modifier
     
            'On s'assure qu'il n'y ait pas de virgules (exemple nombres)
            lignetemp = ""
            sp = Split(ligne, ",")
            For i = 0 To UBound(sp) - 1
                lignetemp = lignetemp & sp(i) & "."
            Next i
            lignetemp = lignetemp & sp(UBound(sp))
     
            'On change le delimiter du fichier source en ","
            sp = Split(lignetemp, ";")
            lignetemp = ""
            For i = 0 To UBound(sp) - 1
                lignetemp = lignetemp & sp(i) & ","
            Next i
            lignetemp = lignetemp & sp(UBound(sp))
     
            'on ecrit la ligne retraitée dans le fichier des données retraitées
            Print #2, lignetemp
        Loop
     
        'on ferme les deux fichiers apres traitement
        Close #2
        Close #1
    End Sub
    Mon Code est bien sur modifiable notament si ton delimiter change tu peux faire avec en input le delimiteur en question de ta base source
    tu peux également rajouter un second input si choisir le delimiteur ouput
    mais c'est inutile si comme moi tu veux faire du SQL sur le fichier (delimiteur :",")

    De plus, les perfs sont vraiment acceptables vu la taille du fichier (<10s)

    Merci pour tt

  7. #7
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904

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

Discussions similaires

  1. [XL-2007] Problème de requete SQL sur fichiers xls/csv
    Par Cyborg dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/10/2011, 17h35
  2. ADO.NET Requete SQL sur fichier Access
    Par doc_tah dans le forum ADO.NET
    Réponses: 4
    Dernier message: 09/08/2010, 09h18
  3. Requete sql sur un fichier excel
    Par lepiou dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/12/2007, 10h34
  4. Donnee excel pour requete sql dans fichier txt ou doc
    Par Yogi_01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2006, 10h04
  5. Réponses: 2
    Dernier message: 03/05/2004, 12h13

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