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

Access Discussion :

Feuille Excel liée dans Access : Champ Memo tronqué de manière aléatoire


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    consultant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Feuille Excel liée dans Access : Champ Memo tronqué de manière aléatoire
    Bonjour à tous et merci de l'aide que vous pourriez m'apporter.

    La situation : je lie une feuille Excel (office 2013) dans Access (comme une table liée).
    C'est une feuille avec plusieurs colonnes de texte (commentaires clients), et quelques 2000 lignes. Certains commentaires peuvent être assez longs (plus de 4000 caractères).
    Quand je lie la table, Access affecte bien le type Mémo aux champs Texte qui le nécessitent.

    Cependant, et apparemment de manière tout à fait aléatoire, certaines cellules sont tronquées (je dirais environ 2 à 5% des champs).
    J'ai regardé si cela pouvait être lié à la présence de caractères spéciaux ou à la taille du champ initial. Mais rien de récurrent. Ce ne sont même pas les champs les plus longs qui sont tronqués.
    Access ne provoque aucune erreur ni ne génère de table d'erreurs liée à l'opération.
    De plus, j'ai essayé de faire cette opération manuellement et en vba : j'obtiens exactement le même résultat. Et ce sont toujours les mêmes champs qui sont tronqués au même endroit !

    Je deviens fou car je n'ai rien trouvé pour l'instant sur le web qui ressemble à mon problème.

    Quelqu'un a une idée du problème ou alors des idées de tests que je pourrais entreprendre pour déceler le problème ?

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour pas d'idée de la cause mais quelques questions.

    Quelle est la longueur des textes une fois tronqué ? 255 caractères ?
    En Excel dans les champs tronqués, si tu enlèves le caractère qui correspond au dernier, est-ce qu'il tronque toujours ?
    En Excel dans les champs tronqués, si tu enlèves le caractère qui correspond au caractère qui suit le dernier, est-ce qu'il tronque toujours ?

    As-tu essayé d'importer tes données dans une nouvelle table Access ? Est-ce que cela tronque aussi ?
    As-tu essayé d'importer tes données dans une table Access où tu as déjà défini tous les champs ? Est-ce que cela tronque aussi ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    consultant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Marot et merci de t'intéresser à mon problème.

    Quelle est la longueur des textes une fois tronqué ? 255 caractères ? OUI, les champs sont tronqués à 255 caractères.

    En Excel dans les champs tronqués, si tu enlèves le caractère qui correspond au dernier, est-ce qu'il tronque toujours ? OUI Toujours tronqué au même endroit
    En Excel dans les champs tronqués, si tu enlèves le caractère qui correspond au caractère qui suit le dernier, est-ce qu'il tronque toujours ? OUI Toujours tronqué au même endroit

    As-tu essayé d'importer tes données dans une nouvelle table Access ? Est-ce que cela tronque aussi ? Quand j'essaie d'importer dans une nouvelle table, cela provoque une erreur ! "La clé de recherche n'a été trouvée dans aucun enregistrement" suivi du message " une erreur est survenue lors de l'importation du fichier XXXX. Le fichier n'a pas été importé" (je me demande si ce n'est pas à cause de cette erreur que je suis passé par une table liée qui elle passe).
    As-tu essayé d'importer tes données dans une table Access où tu as déjà défini tous les champs ? Est-ce que cela tronque aussi ? Je n'ai pas fait cela et ne pourrais pas le faire pour 3 raisons :
    1) le fichier que j'importe est potentiellement différent à chaque import (il y a une procédure d'analyse du fichier et de mapping des différentes colonnes qui m'intéressent vers les les tables de ma base)
    2) le fichier que j'importe comporte beaucoup trop de colonnes.
    3) a priori mon fichier fait bugguer l'import (cf point précédent).

    Est-ce que ces symptomes t'évoques qq chose ?

    Merci encore.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    OUI, les champs sont tronqués à 255 caractères.
    OK, pour une raison que j'ignore, Access vois tes colonnes comme des champs textes. Comme la décision lui appartient et que nous avons aucun contrôle là dessus, il va falloir trouver une solution alternative.

    Trop de colonnes ? Plus de 255 colonnes ?

    Si oui, je pense que passer par un export en mode CVS + du VBA sera la solution.

    Si tu veux quelques chose de plus exotique :-), tu peux regarder du côté du XML. Personnellement je ne m'en suis jamais servi mais c'est sans doute faisable.

    Donc je procéderai ainsi :

    1. Export du fichier Excel en CSV (avec entêtes de colonne)
    2. Lecture séquentielle du fichier CSV avec du code VBA
    3. Découpage (avec Split) du 1er enregistrement pour récupérer les entêtes.
      Les entêtes vont servir à faire la correspondance entre les colonnes et les champs de la table de destination.
    4. Découpage (avec Split) des autres enregistrements pour récupérer les données.
    5. En se basant sur la position des entêtes récupérées précédemment, assignation des valeurs des champs de la table de destination.
      Faire attention aux conversion, dans ton tableau toutes tes données sont de type "Texte".


    Si tu passes par du XML. les étapes sont en gros les mêmes. Les instructions pour y arriver seront bien sur différentes.

    Une autre possibilité est de faire du "copié/collé" de Excel à Access.
    Tu ouvres le fichier Excel à partir d'Access.
    Tu parcours chacune des lignes et des colonnes (cellule par cellule) du Excel et tu copie la valeur de la cellule dans le champ de la table Access.

    Je l'ai fait et cela marche mais dans mon cas c'étais BEAUCOUP trop lent donc j'ai fais la solution CSV + VBA.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    consultant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    CA Y EST !!! problème identifié... donc il n'y a "plus qu'à trouver" la solution technique pour le résoudre.

    Le problème vient qu'Access n'utilise pour déterminer le type de données dans une colonne Excel que les 8 premières lignes du fichier Excel.
    (source : http://stackoverflow.com/questions/1...ess-memo-field)

    Donc si Access ne trouve que des champs de moins de 255 caractères dans les 8 premières lignes, alors il décide que c'est un champs Texte court.

    Une solution consisterait à insérer avant la liaison de la feuille Excel dans Access une fausse ligne avec plus de 255 caractères sur les champs... mais là ça me parait compliqué... donc je vais opter pour une préparation manuelle du fichier à importer.

    Merci à Marot pour son aide.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Problème connu en effet.

    Quoiqu'il en soit, tu ne pourras pas dépasser la limite de 32767 caractères par cellule qui est la limite des cellules Excel. Soit moitié moins que la capacité du champs mémo.

    Cependant en utilisant l'automation tu peux sans problème copier le contenu d'un recordset d'ACCESS vers EXCEL. A part les champs de type Hyperlien et PJ tous le reste est géré nativement.

    Si tu veux un exemple fonctionnel de ce type d'export tu en as un dans mon tuto :

    http://loufab.developpez.com/tutorie...herche3fin/#LV

    Il s'agit d'un code déjà ancien mais parfaitement fonctionnel et perfectible.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    consultant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Après moult essais... la seule solution trouvée est seulement une solution de contournement.
    je rentre manuellement une première ligne dans mon fichier Excel où je colle du faux texte de plus de 255 là où je veux des champs memo.

    Sinon, j'ai essayé comme suit en VBA, mais sans résultat...

    1) je lie la table Excel dans Access
    2) j'en fais une copie locale de la structure de cette table
    3) je change dans la copie locale le type de tous les champs Texte court en Champs MEMO
    4) j'importe directement le fichier Excel dans la nouvelle table locale (en me disant que j'allais importer dans des champs MEMO, donc je résolvais le problème) avec une commande DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12.

    Mais en fait cela ne change rien. Access à l'air de toujours faire une vérif du type de champ qu'il importe, quelque soit le champ destination. Et s'il a décidé d'importer du Texte Court, alors il se moque que le champs destination soit un champ MEMO !

    Si kk1 pense à une autre solution... je suis toujours preneur !

    Merci.

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Si quelqu'un pense à une autre solution... je suis toujours preneur !
    Moi justement ! Mais tu es absolument libre de l'ignorer.



    Des fois on a l'impression d'être des David Westin en puissance...
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre régulier
    Femme Profil pro
    Technicienne
    Inscrit en
    Mai 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicienne
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 96
    Points : 89
    Points
    89
    Par défaut Champ Mémo tronqué
    Bonjour,

    Ça fait longtemps que j'essai de régler ce problème de champ mémo tronqué. J'ai déjà changé dans ACCESS le format du champ de Texte Brut à Texte enrichi dans les tables et les formulaire. Ça marché quelque temps. Et là, le problème est de retour, alors, je vous donne ma dernière trouvaille qui a fonctionné ce matin, au cas où ça marcherai longtemps . Alors dans mes requêtes de transfert j'avais un regroupement que j'ai retiré et j'ai aussi placé en début d'extraction le champ mémo et ça marche. Je croise les doigts pour que ça fonctionne longtemps.

    Bonne journée

  10. #10
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Salut .. sujet intéressant.
    Je viens de faire un Test avec un fichier XLS (2000) en table liée avec access (2000)
    table : champ Memo tronqué a 255 carac
    Requête : tronqué a 255 carac mais les critères marche sur les champs non visible
    état : affichage de la totalité du champ
    je précise ma cellule est en 14 eme ligne et continent 296 caractères
    D'autre part en requête si on fait un Nbcar du champ access affiche la bonne valeur.

    Avis Perso : j’évite l'utilisation de champ mémo... trop de déboires...

    Bonne journée

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    De memoire les versions de Excel avant 2003 etaient limitees a 255 caracteres dans une cellule.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Marot_r,
    Je viens de faire le test j'ai mis 331 caractères dans une cellule....
    ++

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Merci james68 de la correction.

    Ce doit etre les versions plus anciennes de Excel qui etaient limitees car je me souviens avoir frapper ce mur la.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  14. #14
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Apres analyse et moult test je viens de constater que dans la table lié xls access il y a un @ dans le format de champ.
    apres suppression du @ et affichage de la table le champ apparaît au complet.
    Fermeture de la table et réouverture le champ apparait tronqué et le @est de nouveau la dans le format de champ.
    une piste a suivre peut etre...
    Images attachées Images attachées  

  15. #15
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Merci james68 de la correction.

    Ce doit etre les versions plus anciennes de Excel qui etaient limitees car je me souviens avoir frapper ce mur la.

    A+
    je peux meme faire un test en access 97... j'ai encore une appli access autocad14 sous win 2000 qui tourne en VM... if you want...

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si tu as le temps et le gout de le faire, c'est quand meme un peu de l'archeologie rendu la :-).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Voici un exemple de code pour faire de l'export vers Excel, justement pour le problème des champs mémo.

    http://blogaccess.free.fr/?p=170

    Si on passe par un export/link classique (via l'interface) le mémo peut être considéré comme un champ texte classique, limité de fait à 255 car.

    cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. [AC-2007] Feuille Excel liée à Access avec mot de passe
    Par rch05 dans le forum VBA Access
    Réponses: 0
    Dernier message: 27/05/2011, 11h00
  2. écrire dans plusieur feuille Excel depuis vba access
    Par bossLINDROS dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/11/2008, 21h28
  3. Réponses: 1
    Dernier message: 15/11/2007, 13h51
  4. Line Feed et Carriage Return dans un champs MEMO de Access..
    Par Mustard007 dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/01/2006, 06h52
  5. Lire dans un champ MEMO
    Par Sydaze dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/04/2005, 15h54

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