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 :

Problème d'importation d'un fichier Excel dans une application ACCES


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Problème d'importation d'un fichier Excel dans une application ACCES
    Bonjour tout le monde,

    lors d'une importation d'un fichier Excel dans une base ACCESS je reçois le message d'erreur suivant :

    -n'a pas pu ajouter toutes les données à la table.
    le contenu de champs de 0 enregistrement a été effacé et 0 enregistrement ont été perdus à la suite de violation de clé.
    *Si des données ont été effacées, celles que vous avez collées ou importées ne correspondent pas aux types de données des champs ou la propriété Taille du champ dans la table de destination.
    * Si les enregistrements ont été perdus, les enregistrements que vous avez collés contiennent des valeurs de clés primaires qui existent déjà dans la table de destination ou ils ne respectent pas les règles d’intégrité référentielle pour une relation définie entre les tables.
    Voulez vous continuez ?
    si je clique non => erreur : l'action TransferSpreadsheet a été annulée.
    Si je clique oui => il y a trois cas :
    + dans le cas ou le fichier Excel contient nulle dans la colonne de l'identifiant, il fait rien, bien sur parce que on essaye d'importer nulle dans un champ auto incrément.
    +et si cette colonne d'identifiants contient des identifiants qui existent dans la base il ajoute des doublons avec les nouvelles données importées.
    + et si cette colonne contient des nouveaux identifiants qui n'existent pas en base là il n'ajoute rien aussi.

    + Mes questions sont :
    comment faire pour ne pas afficher ce message d'erreur et le remplacer par un autre personnalisé par exemple ?
    comment faire si on veut ajouter des nouveaux identifiants avec des nouvelles données ?
    comment faire pour remplacer les anciens données par les nouvelles dans le cas où les identifiants existent ?

    Je vous remercie d'avance pour vos réponses

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    Je pense qu'il te faudrait passer par une table intermédiaire et faire "manuellement" par vba ou requête les 3 actions que tu veux faire en comparant les identifiants de ta table intermédiaire et ta table finale. Tu vides ta table intermédiaire à la fin.

    La deuxième méthode serait de faire la comparaison en "pilotant" ton Excell par vba, mais je pense que par souci d'homogéneité, vaut mieux prendre la première solution.

    Bonne continuation et racontes-nous la suite.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Re Bonjour à tous,

    On fait dans mon premier mail j'ai pas mis le bout de code ou l'erreur saute c'est celui en dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, TABLE_IMPORTATION, nomFichier, False, "A11:CZ65535"
    dans cette ligne nomFichier est un fichier intermidiare et TABLE_IMPORTATION.

    madefemere, tu vois bien qu'on passe par un fichier intermédiaire et une table d'importation intermédiaire et c'est au niveau de la table d’importation intermédiaire qu'il y a le problème je pense, et je ne suis pas sur.

    mais lorsque je debug c'est au niveau de cette ligne que je reçois l'erreur.

    quelqu'un a une idée !!!!!

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    En fait, tu veux importer dans une table existante "TABLE_IMPORTATION" avec des données et un champ auto-incrémenté des données à partir de la plage de cellule "A11:CZ65535" de la feuille Excel nomFichier.

    Je ne te parle pas de FICHIER INTERMEDIAIRE sous Excell dans mon message, mais bien de table intermédiaire sous ACCESS.

    En premier, au lieu d'importer directement dans ta TABLE_IMPORTATION tes données, les importer d'abord dans une table "T_INTERMEDIAIRE_IMPORT" avec le même structure mais VIDE, pour éviter les violations de clés et conflits en termes d'ajout de données. Cette table sera vidée avant l'exécution de ta routine

    Ajouter à la suite une méthode (requête ajout ou vba) pour ajouter les informations à partir de "T_INTERMEDIAIRE_IMPORT" vers "TABLE_IMPORTATION" en anticipant tes 3 cas.

    comment faire pour ne pas afficher ce message d'erreur et le remplacer par un autre personnalisé par exemple ?
    comment faire si on veut ajouter des nouveaux identifiants avec des nouvelles données ?
    comment faire pour remplacer les anciens données par les nouvelles dans le cas où les identifiants existent ?
    Normalement le message apparait quand tu veux ajouter des données pour un identifiant existant.
    Cas où identifiant existant : écraser les données
    Cas où nouvel identifiant : ajouter.

    J'espère que ça te fera avancer.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/08/2012, 16h41
  2. Import d'un fichier Excel dans une base de données MySql via POI
    Par intel42 dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 27/07/2011, 16h24
  3. Importation d'un fichier excel dans une table access
    Par cmaitre dans le forum VBA Access
    Réponses: 11
    Dernier message: 15/04/2008, 16h59
  4. Réponses: 7
    Dernier message: 23/11/2005, 18h20
  5. Réponses: 7
    Dernier message: 04/10/2005, 18h21

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