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

VBA Access Discussion :

Import Excel --> Access


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut Import Excel --> Access
    Bonjour.

    J'ai un problème d'import de certaines données excel 1997/2003 vers access 365 avec la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, 9, strTable, strChemin, blnNoms, strOnglet & "!"
    Toutes les lignes sont remontées dans ma table Access mais certains champs sont à NULL.

    Ces champs contiennent la valeur 119,8 et j'ai le message "Échec lors de la conversion de type"
    Pour d'autres valeurs comme 0,15 je n'ai pas de soucis
    Dans Excel les champs sont au format nombre avec 2 décimales et dans access au format texte court (50)

    La seule différence semble donc être le nombre de décimale mais comment résoudre ce problème ?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 116
    Points : 1 639
    Points
    1 639
    Par défaut
    Salut,

    Il peut y avoir plusieurs causes:

    1) Si la table cible n'existe pas:
    Lors de l'import, le moteur de base de données tente de déduire le type de chaque colonne, en se basant sur la majorité des 5 premières lignes.
    Il est tout à fait possible qu'il déduise des nombres alors que ce sont des chaînes, ou des entiers alors que ce sont des flottants, ou des dates alors que ce sont des chaine ou (n'importe quelle autre combinaison de types en conflit).

    2) Si la table cible existe:
    Si ton fichier Excel à été saisit / modifié à la main, il est possible qu'il contienne des erreurs.


    Dans ces cas, la meilleur chose à faire est de réaliser un import brut (tout en texte), faire tourner une fonction de vérification des données, et au choix:
    - Tout importer vers la (ou les) table(s) cible (si aucune erreur).
    - N'importer que les lignes valides (optionnellement, consigner les lignes en erreur dans un reporting).
    - Ne rien importer si la moindre erreur est détectée.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour.

    En fait cela est du au fait que l'utilisateur entre des nombres stockés sous forme de texte.
    Du coup, j'essaie de traduire ce format texte en décimal, mais je n'y arrive pas :

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim cell As Range 'Variable
    For Each cell In Worksheets("Grille").Range("C5", [A65535].End(xlUp))
     
    cell = CDec(cell)
     
    Next

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 116
    Points : 1 639
    Points
    1 639
    Par défaut
    Houla,

    Ne bidouille pas la source des données malheureux !!
    Comment veux-tu ensuite reproduire les anomalies ? Puisque tu les auras corrompues ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Comment avoir des décimaux alors ?

  6. #6
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    On error resume next
    CurrentDb.Execute "Drop table NewTableAccess"
    on error goto 0
    CurrentDb.Execute "SELECT * INTO NewTableAccess FROM [Feulle1$] IN 'C:\Myrep\MyClasseur.Xlsx'[excel 12.0;HDR=Yes;ReadOnly=True;IMEX=1;];"

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 116
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par 69Pierre Voir le message
    Comment avoir des décimaux alors ?
    Je te l'ai indiqué, utilises des tables intermédiaires, qui contiendrons tes imports brut.

Discussions similaires

  1. [Automation]pb import excel dans access
    Par zeloutre dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/04/2007, 11h16
  2. import excel vers access avec bouton "parcourir"
    Par zeloutre dans le forum Access
    Réponses: 3
    Dernier message: 04/04/2007, 19h06
  3. échec importation excel vers access
    Par emmablue dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2006, 11h34
  4. Import Excel vers Access +hypertexte
    Par liop49 dans le forum Access
    Réponses: 2
    Dernier message: 24/07/2006, 14h40
  5. problème d'importation excel dans access
    Par Badboy62cfp dans le forum Access
    Réponses: 6
    Dernier message: 09/05/2006, 16h17

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