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 :

Erreur requête SQL en VBA dans Excel : colonne contenant des chiffres et des lettres [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut Erreur requête SQL en VBA dans Excel : colonne contenant des chiffres et des lettres
    Bonjour

    j'ai un problème en SQL dans excel

    donc j'ai une feuille excel dans laquelle il y a une colonne ou il y a une majorité de nombre... mais il y a aussi des lettres.

    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
    '----- Connection -----
    With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & unFichier & _
    ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"";"
    .Open
    End With
     
    '----- Pour les rues entière -----
    texte_SQL = "SELECT * FROM [clients rue entiere$] where [Cat Cptr] <> '2' "
    Set Rst = New ADODB.Recordset
    Rst.ActiveConnection = cn
    Rst.CursorType = adOpenKeyset
    Rst.LockType = adLockOptimistic
     
    Rst.Open texte_SQL
    Dans ma chaîne de connexion j'ai beau préciser "IMEX=1" afin que les données numériques soient importées comme du texte et ainsi pouvoir faire au mieux ma requête SQL comme indiquée au dessus avec dans le where [Cat Cptr] <> '2' et non [Cat Cptr] <> 2 et bien j'ai une erreur comme quoi j'essaye de comparer des chiffres ([Cat Cptr]) à des lettres ('2')...

    est ce que vous savez pourquoi cela n'arrive pas à s'importer en tant que texte ?

    (je précise que j'ai testé en faisant [Cat Cptr] <> 2 mais le problème c'est qu'à ce moment la il ne me prend pas en compte les lignes contenant des lettres... or il me les faut ^^ )

  2. #2
    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
    bonjour,
    Ca m'arrive trop souvent aussi ce genre de truc.
    Alors ta plusieurs méthodes mais perso la plus élégante:
    faire un Schema.ini dans le même dossier

    Alors regarde un peu sur google ou sur msdn
    genre ici : http://msdn.microsoft.com/en-us/library/bb177651.aspx
    http://msdn.microsoft.com/en-us/libr...53(VS.85).aspx

    Si t'y arrive pas jte filerais une fonction qui génère le Schema.ini automatiquement. Elle est proche de celle ci mais j'intègre un param pour forcer le type de certaines colonnes
    http://support.microsoft.com/kb/155512/fr

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut
    merci pour ta réponse

    ta solution doit effectivement fonctionner... je pensais qu'il pouvait y avoir plus simple on va dire pour corriger mon problème ^^

    je vais regarder tes liens en attendant

    merci

  4. #4
    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
    Je crois qu'il y a plus simple.
    En fait tu insères une ligne sous ta ligne d'entête où tu forces ton format.
    Genre dans une colonne où tu as que des LONG (en théorie) ben tu écris "toto".

    Ca marche mais c'est vraiment degeux en terme de prog.
    Je ne te le conseille vraiment pas.

  5. #5
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    puisque tu passes par du SQL, tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT F1 & "", F2 & "" FROM [...
    Le moteur ADO devrait interpréter les champs comme du texte.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut
    Citation Envoyé par cafeine Voir le message
    Hello,

    puisque tu passes par du SQL, tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT F1 & "", F2 & "" FROM [...
    Le moteur ADO devrait interpréter les champs comme du texte.
    ça aurait été pas mal, mais j'ai un problème : mes feuilles excel ou je fais cette requête ont des colonnes variables... du coup je suis obligé de faire un "select * "

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

Discussions similaires

  1. [AC-2003] Plusieures requêtes SQL en vba dans la même macro?
    Par PAUL87 dans le forum VBA Access
    Réponses: 4
    Dernier message: 22/10/2013, 16h43
  2. Requête sql multi-source avec jointure en pur VBA dans excel
    Par guidav dans le forum Général VBA
    Réponses: 1
    Dernier message: 21/09/2013, 20h33
  3. Erreur Requête sql code vba
    Par majudis dans le forum VBA Access
    Réponses: 4
    Dernier message: 24/02/2011, 11h23
  4. Erreur requête SQL en VBA dans Excel
    Par Sergeith dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/06/2009, 15h06

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