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

Requêtes et SQL. Discussion :

Erreur sur Import depuis excel 255 caracteres [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 44
    Points
    44
    Par défaut Erreur sur Import depuis excel 255 caracteres
    Bonjour,
    J'ai une requete ajout qui importe sans problème depuis quelques temps déjà des valeurs d'un tableau Excel

    Je rencontre une #Erreur sur une donnée "particulière"

    Lorsque je regarde la valeur source dans le champ [Estimated products] le contenu est tronqué à 255 caractère (cela ne me dérange pas)
    Lorsque je regarde la valeur de ma requete préparée j'ai le message "#Erreur" dans la cellule du champ [RaccEstProd]

    La formule dans le champs concerné est
    RaccEstProd : Droite([Estimated products];200)

    l'erreur ce reproduit aussi sur un test
    RaccEstProd : NbCar([Estimated products])

    La valeur brut de cette cellule dans la source sur Excel est :
    "300719-1(1) 300719-2(1) 300719-3(1) 300719-4(1) 300719-5(1) 300719-6(1) 300719-7(1) 300719-8(1) 300719-9(1) 300719-10(1) 300719-11(1) 300719-12(1) 300719-13(1) 300719-14(1) 300719-15(1) 300719-16(1) 300719-17(1) 300719-18(1) 300719-19(1) 300719-20(1) 300719-21(1) 300719-22(1) 300719-23(1) 300719-24(1) 300719-25(1) 300724-1(1) "


    Le nombre de caractère de cette donnée Excel est de 328
    Je pourrai manuellement couper depuis Excel cette donnée mais cela ne m'arrange pas

    Pouvez-vous m'aider à convertir cette donnée pour qu'elle devienne importable depuis la requete Access?

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 810
    Points : 14 894
    Points
    14 894
    Par défaut
    Bonjour,
    personnellement, je ferai un copier / coller les valeurs dans une nouvelle feuille pour éviter qu'Access lise les formules.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Merci de ta réponse tee_grandbois

    Mais je souhaitais surtout ne pas avoir à me préoccuper de la longueur de la chaine de caractère des cellule de la feuille Excel liée à ma base de donnée.
    J'avais pensé traiter le problème en réduisant la taille de la chaine de caractère à 200 lors de l'ajout des données à une table.

    Et je suis surpris de ne pas pouvoir importer et couper une chaine d'une cellule Excel qui dépasse 255 caractères.

    Existe-t-il une solution depuis une requête sous access pour réduire cette chaine sans générer une erreur ?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 810
    Points : 14 894
    Points
    14 894
    Par défaut
    Bonsoir,
    je n'ai pas de solution à te proposer, d'autant plus que j'ai testé sans rencontrer le problème que tu décris avec Access et Excel 2013.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Regarde ICI si cela peut t’aider.

    Ce qui est dit c’est qu’il faut vérifier que le champ de la table est en "long text" avec comme format "rich text" ce qui correspond au type memo des versions Access antérieures à 2013.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    https://mon-partage.fr/f/LoCWKVjq/

    Excel ne dispose pas de typage dz champs et encore moins de taille de champ.

    C'est le driver odbc qui défini ces valeur par apprentissage. La norme veut 8 lignes mais dans le fais c'est 3.

    Ajoute en dessous des entêtes une valeur de plusse 255 caractères pour tromper Odbc et a exclure de tes traitement.
    Dernière modification par Invité ; 08/06/2018 à 17h19.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonsoir,

    https://mon-partage.fr/f/LoCWKVjq/

    Excel ne dispose pas de typage dz champs et encore moins de taille de champ.

    C'est le driver odbc qui défini ces valeur par apprentissage. La norme veut 8 lignes mais dans le fais c'est 3.

    Ajoute en dessous des entêtes une valeur de plusse 255 caractères pour tromper Odbc et a exclure de tes traitement.
    Bien vu "dysorthographie", et merci "Informer"

    Effectivement le problème est résolu en plaçant dans la table lié "Excel" dans la première ligne sous les titres du champs concerné la cellule avec plus de 255 caractères. (le format de la table lié s'en trouve changé et passe à mémo)

    La requête remarche et ne génère plus l'erreur.

    Dommage de ne pas avoir d'astuce pour contourner ou détecter l'erreur en automatique il va me falloir trouver un bout de code de surveillance de la présence de l'erreur si je ne veut pas me retrouver avec ce bug d'importation non fait.

    Je marque en résolu
    mais si quelqu'un trouve une astuce pour couper une chaine d'un champs contenant plus de 255 caractère d'une table liée Excel dont le type de donnée n'est pas bon (et donc pas sous le format memo), je suis preneur.



    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Il est possible d'étendre la zone d'apprentissage odbc de 2,10,100,1000 en bricolant la base de registre mais je l'ai jamais fait.

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    une solution est
    • Créer dans MS-Access un paramétrage d'import texte en y identifiant le champ à déclarer en memo (Données externes -> fichier texte -> Sélectionner la source et la destination des données-> ... avant de terminer cliquer sur Avancer et enregistrer les paramètres d'import exemple paramImport
    • transformer l'onglet Excel à charger en csv
    • Utiliser DoCmd.TransferText acImportDelim, "paramImport", "myTable", "C:\Txtfiles\file.txt"


    J'ai pu charger un fichier texte avec en champ 2 pour la ligne :
    1 : 24 caractères
    2 : 671 caractères

    Donc aucune gestion de ligne fictive de plus de 255 caractères

    Attention DoCmd.TransferText
    • Crée la table cible si elle n'existe pas
    • ajoute les données sans écrasement si la table existe

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Pour moi le.plus simple est d'ouvrir une instance Excel (vba), insérer une ligne sous les entête, faire un string(256,"X"), sauvegarder , fermé et repartir avec Access.

    Bien sur pour le traitement par requêté Access faire where champ not like 'XXXXX*'

    Le plus efficace mais pas forcément le plus simple étant de modifier la base de registre se Windows pour qu'odbc prenne en charge un nombre de lignes plus conséquent pour son apprentissage des type et taille de champ.

    Si il y a la possibilité pour qu'un onglet appelé schéma puisse définir ces informations je suis preneur, j'ai rien trouvé de comparable pour le moment !
    Dernière modification par Invité ; 09/06/2018 à 14h44.

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

Discussions similaires

  1. [AC-2010] Import depuis excel Erreur 462 une fois sur 2
    Par prendel dans le forum Access
    Réponses: 2
    Dernier message: 28/07/2014, 14h13
  2. Message d'erreur sur importation Excel
    Par abdelkarim_1987 dans le forum Macros Access
    Réponses: 7
    Dernier message: 03/07/2013, 09h36
  3. clé primaire sur table importée depuis Excel
    Par bravojr dans le forum Modélisation
    Réponses: 6
    Dernier message: 24/10/2008, 08h53
  4. [SQL Server 2000] erreur lors importation fichier excel
    Par Abydos Business Group dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/03/2006, 09h24
  5. Problemes d'importation depuis excel
    Par KANCRENAZ dans le forum Access
    Réponses: 3
    Dernier message: 17/02/2005, 09h57

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