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 :

[VBA-E]Probleme relevant soit de SQL soit de VB


Sujet :

Macros et VBA Excel

  1. #1
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut [VBA-E]Probleme relevant soit de SQL soit de VB
    Bonjour,

    Alors, voilà, je suis en ce moment en train de faire migrer un fichier Excel vers une base de données Access. Pour ce faire, j'utilise VBA et Excel car les méthodes de transfert directes ne sont pas adaptées à mon cas.
    Mon problème ne réside pas dans la logique de l'algorithme, mais dans une erreur d'execution dont je ne comprend pas la provenance.

    Voila le morceau de code incriminé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Str_RequeteSQL = "INSERT INTO TRADUCTEUR(ID_TRADUCTEUR,NOM_PRENOM,PROFESSIONEL,ADRESSE,TELEPHONE,SPECIALITE,ADRESSE_MAIL) VALUES('" & id_traducteur & "','" & nom_prenom & "','" & pro & "','" & adresse & "','" & telephone & "','" & specialite & "','" & adresse_mail & "')"
        MsgBox Str_RequeteSQL
        Connexion.Execute (Str_RequeteSQL)
    Sachant que la MsgBox me sort ceci :
    INSERT INTO TRADUCTEUR(ID_TRADUCTEUR,NOM_PRENOM,PROFESSIONEL,ADRESSE,TELEPHONE,SPECIALITE,ADRESSE_MAIL) VALUES('3','CHAPOUL Isabelle','Faux','Les jardins de l'Atrium 2 av des Contamines','06.74.51.11.00','','')
    et que la structure de la table TRADUCTEUR est :
    ---------------------
    TRADUCTEUR
    ---------------------
    ID_TRADUCTEUR [entier long]
    NOM_PRENOM [Memo]
    ID_EMPLACEMENT [Entier long]
    PROFESSIONEL [Boolean]
    ADRESSE [Memo]
    TELEPHONE [Memo]
    SPECIALITE [Memo]
    ADRESSE_MAIL [Memo]
    ----------------------
    Connexion est un objet ADODB.Connection et Str_RequeteSQL est une variable de type String.

    Bref, à l'exécution, j'obtient ce message d'erreur :
    Erreur d'exécution '-2147217900 (80040e14)':

    Erreur de syntaxe (opérateur absent) dans l'expression ''Les jardins de l'Atrium 2 av des Contamines','06.74.51.11.00','','')'.
    Si vous pouviez avoir la gentillesse de me dire, au moins, si mon erreur est dans la requete ou dans le code VB, je vous en serais très reconnaissant.
    Si, en plus, vous pouviez m'indiquer mon erreur, ce serais vraiment bien, mais je pense qu'avec le peu que j'ai donné cela risque d'être compliqué.

    Merci

    Ahmed

    P.S : les requetes SQL sont codées sur une seule ligne, mais les quotes passent parfois a la ligne tout seuls.

  2. #2
    Expert éminent
    Avatar de bidou
    Profil pro
    Inscrit en
    mai 2002
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : mai 2002
    Messages : 3 054
    Points : 7 431
    Points
    7 431
    Par défaut
    c'est a cause de l'apostrophes de l'atrium
    Il faut dédoubler les quotes dans les chaines

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Si tu enlèves les simples quotes autour de l'identifiant ID_TRADUCTEUR, ça change quelquechose?

    Edit: il est fort, quand même... Et rapide...

  4. #4
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Excuse moi, bidou, est-ce que tu pourrais m'expliquer comment on fait ca? je suis vraiment désolé de poser des questions aussi débiles, mais je n'ai jamais été confronté à ce genre de problèmes. Merci

  5. #5
    Expert éminent
    Avatar de bidou
    Profil pro
    Inscrit en
    mai 2002
    Messages
    3 054
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : mai 2002
    Messages : 3 054
    Points : 7 431
    Points
    7 431
    Par défaut
    par exemple en remplacant
    & adresse &
    part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & Replace(adresse,"'","''") &
    et ainsi pour toute les variables susceptibles de contenir une quote

  6. #6
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    oh, je vois ^^

    Merci beaucoup, tu me retire une énorme épine du pied ^^

  7. #7
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Ben, maintenant, j'ai une autre erreur...

    Comme me l'a conseillé Megaxel, j'ai retiré les simples quotes autour de la valeur id_auteur, et ainsi que me l'a montré Bidou, j'ai doublé les quotes.

    Mais maintenant, j'ai ça :
    Erreur d'exécution'-2147217913(80070e07)':
    Type de données incompatible dans l'expression du critère
    et la requête SQL deviens :
    INSERT INTO TRADUCTEUR(ID_TRADUCTEUR,NOM_PRENOM,PROFESSIONEL,ADRESSE,TELEPHONE,SPECIALITE,ADRESSE_MAIL) VALUES(3,'CHAPOUL Isabelle','Faux','Les jardins de l''Atrium 2 av des Contamines','06.74.51.11.00','','')
    Je suis désolé de vous importuner avec ça, surtout que j'imagine que vous avez d'autres chats à fouetter u__u

  8. #8
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Pour le Booléen, j'ai un doute...
    Ça marche, de mettre "Professionnel" à "Faux" ???

  9. #9
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    ARGH
    J'avais même pas vu XD

    C'est incroyabale ce qu'on peut être aveugle parfois... je vais changer ca tout de suite u__u

    EDIT : je sais pourquoi je l'avais pas remarqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'transformation du champ pro en boolean
        If Range("E" & i).Value = "Oui" Then
            pro = True
        Else
            pro = False
        End If
    Je comprend pas pourquoi dans la chaîne il me met Faux

  10. #10
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je me demande si tu ne dois pas mettre ta variable "pro" à -1 ou 0 pour que ta requête marche?
    Je crois que je me suis cogné à ce problème il-y-a quelques temps...

  11. #11
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Non, le résultat est exactement le même.
    Je pense que je vais changer le type de la variable pro. Ce sera une string et dans mon if, au lieu de True(ou -1) ou False(ou 0), je mettrais "True" et "False".
    Au moins, la ca devrait être net. J'essaye et je vous tiens au courant ^^

    EDIT : Ca ne fonctionne toujours pas. Mais je commence à croire que cette fois, c'est un problème de SQL, pour mettre une valeur boolean à True ou False.

    Je vais me renseigner sur la question

    EDIT : En fait, c'était un problème dû à la modélisation des booleans avec Access : des 0 ou des 1...
    Et donc, je suis obligé de prendre pro comme une variable numérique ou chaîne et de lui claquer 0 ou 1.

    Merci pour votre aide, je considère le problème comme résolu, à présent ^^

    (J'ai encore des erreurs, mais cette fois, je sais d'où elles viennent, et c'est dû a ma modélisation du système d'information)

  12. #12
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je ne me souviens plus de ce que j'avais fait, mais je me demande si je n'avais pas fini par définir ma colonne en base comme un numérique, et je passais de mon booléen VB à ma valeur en base avec des et des

  13. #13
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Je pense que ta solution est adaptable, mais je préfère changer le code plutôt que de refaire ma bdd ^^

    En tous cas, merci beaucoup ^^

  14. #14
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha ben c'est ce que je t'ai proposé plus haut, mettre "pro" à "-1" ou "0".
    Enfin, si tu t'en es sorti, c'est Ok!

  15. #15
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Tout à l'heure, je t'avais mal compris ^^;;

    Je pensais que tu voulais dire qu'il fallait conserver le type boolean pour pro et a la place de true ou false mettre -1 ou 0 ^^

    Mais enfin, le principal, c'est que ca fonctionne ^^

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Trouvé chez microsoft

    Boolean variables are stored as 16-bit (2-byte) numbers, but they can only be True or False. Use the keywords True and False to assign one of the two states to Boolean variables.
    When numeric data types are converted to Boolean values, 0 becomes False and all other values become True. When Boolean values are converted to numeric types, False becomes 0 and True becomes -1.

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

Discussions similaires

  1. [AC-2003] Probleme Echange excel access, sql, retour chariot vba
    Par zapan57 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/03/2012, 15h49
  2. Probleme de variable entre SQL et Php
    Par copin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/06/2005, 10h58
  3. probleme avec creation requete sql server
    Par Firas_tn dans le forum MS SQL Server
    Réponses: 19
    Dernier message: 15/04/2005, 12h12
  4. [VBA-E] problème avec le sendkeys
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2005, 14h25
  5. probleme base de donnée SQL server
    Par waguila666 dans le forum ASP
    Réponses: 9
    Dernier message: 01/12/2004, 11h54

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