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 :

Import Excel tronqué sur Access


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Import Excel tronqué sur Access
    Bonjour à tous,

    J'ai pour projet de migrer une base FileMaker vers une base Access.
    Le tout est quasi fini, mon seul hic est lorsque j'essaie d'importer des colonnes d'Excel vers Access, mon import est tronqué lorsqu'il s'agit d'information importante.

    Mon champs est sous forme "Mémo" donc je suppose qu'il ne s'agit pas d'une limite de caractère.

    Voici un exemple de test plus clair peut être :

    Le résultat propre sur Excel

    Nom : Excel.png
Affichages : 639
Taille : 6,3 Ko

    Le résultat "tronqué" sur Access lors de l'import.

    Nom : access.png
Affichages : 637
Taille : 5,0 Ko

    Sur les fiches avec moins d'information, ça passe très bien. Mais pour les longues fiches, ça coupe et je dois repasser manuellement dessus.
    Je précise que ce résultat se produit uniquement lorsque j'importe le fichier excel vers acess, ou bien quand je copie/colle la colonne en entier (avec plus de 1500 lignes). Par contre quand je copie/colle fiche par fiche, ça passe. J'utilise la suite Office 2010.

    Y aurait-il une solution à ce problème ?

    Merci,
    MawlF.

  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.

    Vérifie que le texte et tronqué à 255 caractères.
    C'est l'ancienne limite pour la taille des textes en Excel et il arrive parfois qu'elle se manifeste.

    Si c'est cela, essaye d'exporter ton fichier Excel en fichier CSV et d'importer à partir du fichier.

    Sinon tu peux aussi écrire du code VBA pour transférer "à la main" tes données des cellules de Excel dans les champs de Access.
    Ce n'est pas très compliqué mais c'est généralement plus lent.

    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
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ta réponse marot_r

    Je pense bien qu'au final, c'est bel et bien tronqué à 255 caractères.

    Je ne pense pas que je pourrais passer par le .csv étant donné qu'il ne garde pas ma mise en page (saut de ligne, accent...), j'ai tenté l'import, le rendu est pas génial.

    Ensuite pour le VBA, j'ai essayé de faire quelque recherche, mais ça me semble compliqué à mettre en place sachant qu'il ne me reste plus énormément de temps.

    MawlF

  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
    C'est une chose que tu vas faire régulièrement ou c'est juste une fois ?

    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
    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
    Regarde aussi un export XML import XML.

    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.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    C'est un import qui est à faire une seule fois, il faut juste que je migre la base FileMaker vers Access.

    C'est la même chose qu'avec le .csv au niveau du fichier XML, pas de prise en compte des accents. :/

    MawlF

  7. #7
    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
    Vérifie aussi si tu peux :
    • Importer les données directement de FileMaker
    • Exporter les données de FileMaker vers un BD Access
    • Exporter tes données de FileMaker vers un autre format que Excel.



    Sinon ici du code pour copier de Excel à Access, une cellule à la fois.
    Suppose que l'entête de la colonne et le nom du champ dans ta table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
        ' Initialiser les variables
        dim AppExcel as Obejct 'Excel.Application
        Set AppExcel = CreateObject("Excel.Application")
        AppExcel.Visible=true
        dim classeur as OBject 'Excel.WorkBoo
        Set classeur = AppExcel.Workbooks.Open("X:\TonChemin\TonClasseur.xlsx")
        dim feullle as Object 'Excel.Wortsheet
        set feuille = calsseur.worksheets("NomTaFeuille")
        cont LIGNE_ENTETE as long=1
     
        dim db as dao.database: set db=currentdb
        dim r as dao.recordset: set r=db.openrecordset("NomTaTable", dbOpenRecordset)
        dim f as dao.field
     
        dim iLigne as long
        dim iCol as long
     
        for iLigne=LIGNE_ENTETE+1 to IciNombreLigneMax
            r.addnew
     
            for iCol=1 to iciNombreCololonneMax
                set f=r.fields(feuille.cells(LIGNE_ENTETE, ICol).Value)
                f=feuille.cells(iLigne, iCol).value
     
                if instr(f,vbLf)<>0 then
                    f=replace(f, vbLF, vbNwLine) 'Remplace les sauts de ligne Excel par des sauts de ligne Access.
                end if
     
            next iCol
     
            r.update
        next iIligne
     
        r.close: set r=nothing
        db.close: set db=nothing
     
        set feuille=nothing
        call classeur.close: set classeur=nothing
        call AppExcel.quit: set AppExcel=nothhing
    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.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Encore merci Marot_r pour ton aide.

    J'ai essayé d'appliquer ton code, pour l'instant sans succès.

    Au niveau de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim r As DAO.Recordset: Set r = db.OpenRecordset("NomTaTable", dbOpenRecordset)
    , que dois-je mettre à la place de NomTaTable ?

    Quoi que je puisse mettre, Access me met
    Run-time error '3001' : Invalid Argument
    Merci

  9. #9
    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.

    C'est le nom de la table de destination dans Access. Là où tu veux copier les données.

    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.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci, un peu trop hâtif comme message envoyé peut être, je m'en suis rendu compte quelques minutes après l'avoir envoyé.

    Je bloque maintenant sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set f = r.Fields(feuille.cells(LIGNE_ENTETE, iCol).Value)
    , je ne sais pas si je dois modifier certaines valeurs et par quoi. :/

    Merci,

  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
    As-tu un message d'erreur ?
    Autre chose ?

    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
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Syntax error au niveau de "cont LIGNE_ENTETE as long=1"
    Run-Time error '1004': Application-defined or object-defined error pour "Set f = r.Fields(feuille.cells(LIGNE_ENTETE, iCol).Valu"
    Merci,
    MawlF

  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
    Désolé, faute de frappe.

    C'est const à la place de cont.

    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.

Discussions similaires

  1. Erreur lors de l'importation Excel via VBA Access
    Par blacklolou dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/01/2013, 19h31
  2. [AC-2010] Import Excel vers table Access
    Par texas2607 dans le forum IHM
    Réponses: 1
    Dernier message: 02/07/2012, 06h30
  3. [AC-2003] Importation excel vers table Access
    Par demichoux dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/02/2011, 17h01
  4. Import Excel vers Base Access
    Par Nako_lito dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/10/2009, 16h42
  5. Réponses: 3
    Dernier message: 29/11/2007, 14h19

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