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

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Collaborateur comtpable
    Inscrit en
    août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Collaborateur comtpable

    Informations forums :
    Inscription : août 2017
    Messages : 10
    Points : 5
    Points
    5

    Par défaut Sortie différente entre Jet et ACE

    Bonjour,

    J'exploite via VB.Net et une connexion OleDB une BDD Access .mdb avec pour finalité l'exportation d'une table de la BDD vers un fichier Excel et je m'aperçois que le format de sortie est différent selon que j'utilise Jet.OLEDB.4 ou ACE.OLEDB.12.

    La différence est visible sur les colonnes de type texte sous Access mais dont les données sont numériques (ex: 08005001), sous Excel, dans la barre de formule :
    - Par Jet, la cellule a pour valeur '08005001 avec l'apostrophe forcant le format texte, au double clic sur la cellule suivi d'Entrée, la cellule est toujours égale à '08005001
    - Par ACE, la cellule a pour valeur 08005001 sans l'apostrophe, le double-clic suivi d'Entrée a pour effet de repasser la valeur au format numérique, la cellule est donc égale à 8005001

    Je précise que sous Access, la valeur est 08005001 sans apostrophe, le champs étant au format texte et que la longueur est bloquée à 8 caractères sans possibilité de modification.

    Le passage de Jet à ACE a été décidé par rapport au nombre de lignes à exporter.

    Avez-vous une solution pour que l'apostrophe apparaisse avec ACE ?

    Le code de connexion à la BDD et la requête d'exportation vers Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OdbCnn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & maBDD)
    '...
    strSql = "SELECT " & mesChamps & " INTO [Excel 12.0 Xml;Database=" & monExcel & "].[maFeuilleExcel] FROM maTable"
    OdbCmd = New OleDbCommand(strSql, OdbCnn)
    OdbCmd.ExecuteNonQuery()

  2. #2
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    4 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 371
    Points : 9 041
    Points
    9 041
    Billets dans le blog
    27

    Par défaut

    Bonjour,

    J'avoue que je suis surpris. JET est supposé être incompatible avec les formats open xml d'office 2007 et suivants. (Essentiellement les fichiers avec les extensions à 4 lettres). Et puis ACE a été "construit" à partir de JET. Je ne suis pas organisé pour tester, (je n'ai même pas JET sur ma machine), mais comme première tentative, applique manuellement un format texte par défaut à ta colonne dans Excel. Je ne suis pas trop certain si Excel est capable de reconnaître les formats des données transmises par JET ou ACE. En principe, quand le format de la cellule a été défini, Excel applique le format défini. Sinon Excel les organise comme il peut.

    Sinon, si tu essaies dans un nouveau classeur vierge, sans aucune "retouche" manuelle, et dans des cellules différentes pour ACE et JET, cela donne quoi ?
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Collaborateur comtpable
    Inscrit en
    août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Collaborateur comtpable

    Informations forums :
    Inscription : août 2017
    Messages : 10
    Points : 5
    Points
    5

    Par défaut

    Ne sois pas surpris, avec Jet, j'exportais en xls 97-2003, le nombre de lignes à exporter m'a obligé à passer à ACE pour exporter vers en xlsx.

    Sans retouche manuelle, ci-dessous le résultat, visuellement dans la cellule, c'est correcte mais la donnée n'est pas la même, il manque l'apostrophe pour forcer le texte par ACE, si une personne active puis valide la cellule, le type passe en numérique et le 0 en première position disparait...

    ACE
    Nom : ace.jpg
Affichages : 75
Taille : 54,9 Ko

    Jet
    Nom : jet.jpg
Affichages : 74
Taille : 53,5 Ko

  4. #4
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    4 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 371
    Points : 9 041
    Points
    9 041
    Billets dans le blog
    27

    Par défaut

    Bonjour,
    Donc, Excel dit que ton nombre est du texte tant que personne ne touche à Enter ?

    Et si tu mets ta cellule au format texte, cela donne quoi ?


    Nom : texte.jpg
Affichages : 68
Taille : 25,3 Ko


    Nouveau:

    Je viens de faire un test rapide directement dans Excel 2016. Pour qu'un nombre reste au format texte, il faut que la cellule soit au format texte avant que le nombre ne s'y trouve. Et si le format de la cellule change après l'insertion du nombre, il semble perdre son type texte.

    À mon avis, faute d'une cellule Excel formatée en texte avant l'exportation d'Access, Excel applique ses propres critères pour formater les cellules, sans égard aux formats d'Access. Et si cela ressemble à un nombre, cela reste un nombre.

    Je me rappelle également d'une question dans un des forums Office où Excel ne conservait que 256 caractères des champs mémo d'Access.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    9 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2012
    Messages : 9 498
    Points : 16 152
    Points
    16 152
    Billets dans le blog
    1

    Par défaut

    Bonjour,

    Dao.Jet est le moteur de base données Microsoft! Il respecte le mode de pensées Microsoft!

    Adodb (Isam) est un gestionnaire de base de données universel! Il respecte le typage de champ. Hors par définition Excel ne type pas ses champs et ado défi le type de champ sur un échantillonnage de 8 enregistrements consécutifs!

    Je n'ai toujours pas trouvé comment faire fonctionner une base Excel avec shema.ini je pense cela possible mais je ne trouve pas! Sinon il faut formater tes champs dans la requête fromat(1,'00000')

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Collaborateur comtpable
    Inscrit en
    août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Collaborateur comtpable

    Informations forums :
    Inscription : août 2017
    Messages : 10
    Points : 5
    Points
    5

    Par défaut

    Bonjour,

    Je ne peux pas formater Excel avant exportation car je ne colle pas le résultat de la requête, c'est une requête création.

    C'est incroyable que Jet et ACE ne font pas la même chose...

    Comment formater mes champs dans ma requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSql = "SELECT CompteG INTO [Excel 12.0 Xml;Database=" & monExcel & "].[maFeuilleExcel] FROM maTable"

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Collaborateur comtpable
    Inscrit en
    août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Collaborateur comtpable

    Informations forums :
    Inscription : août 2017
    Messages : 10
    Points : 5
    Points
    5

    Par défaut

    Salut,

    Je n'ai pas trouvé le temps d'y réfléchir plus que ca, j'ai opté pour automation en typant la colonne comme texte, ca ne me plait pas mais j'y remettrai dès que je le pourrai.

    A la prochaine !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/08/2011, 18h02
  2. Réponses: 9
    Dernier message: 10/08/2004, 18h13
  3. [Sybase] order by différent entre 2 servers
    Par MashiMaro dans le forum Sybase
    Réponses: 9
    Dernier message: 15/07/2004, 12h01
  4. [ASCII] Codes différents entre 2 logiciels
    Par MinsK dans le forum Assembleur
    Réponses: 3
    Dernier message: 20/04/2004, 10h34
  5. Réponses: 2
    Dernier message: 17/05/2002, 21h37

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