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 :

Ajouter des nouvelles données dans une table


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Points : 33
    Points
    33
    Par défaut Ajouter des nouvelles données dans une table
    Bonjour,

    J'ai besoin de vos conseils dans la procédure à suivre pour ajouter les nouvelles données dans une table.

    Voici les infos que je possède :
    1)J'ai un fichier Excel dans lequel j'ai une feuille de données qui contient que 2 champs : UAI et NomEtab
    2)J'ai une table dans Access, nommée Etablissement qui contient plusieurs champs notamment : CodeEtab (NumAuto), UAI (Texte), NomEtab(Texte), etc...

    Le champ UAI est utilisé comme critère de comparaison entre le fichier excel et la table Etablissements.
    Je voudrais ajouter les enregistrements issus du fichier excel dans la table Etablissements, mais uniquement ceux qui n'existent pas dans la table.

    Je pensais procéder comme suit :
    Etap1 : Je crée une macro pour importer les données du fichier excel dans une table que je nomme Nouvel Etablissement. Si cette table existe déjà alors j'efface son contenu.

    Etap2 : je crée une autre macro qui lance une requête Ajout pour ajouter les nouvelles données issues de la table Nouvel Etablissement dans la table Etablissement

    Que pensez-vous de ma manière de procéder? Existe-t-il une procédure plus rapide ?

    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Pour l'instant je suis ma procédure, mais j'ai une question sur l'action TransférerFeuilleCalcul.

    J'ai un fichier ou classeur Excel qui comporte plusieurs feuilles du type feuil1, feuil2, etc
    Est-il possible de spécifier un nom précis d'une feuille à importer comme importer que la feuil1 par exemple.

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si je devais le faire,
    je lies la table Excel dans Access.
    Je fais une requête qui reprend les deux "tables", je prends tous les enregistrement de la table excel et pour la table Access, je ne prends que les vide avec le critère "is null".
    Tu auras les enregistrement non présent dans ta table.
    Et ensuite une requête ajout sur la première requête.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Je comprends ta proposition pour lier le fichier excel à une table Access, cependant la première requête n'est pas tout à fait ce que je veux.

    Je fais une requête qui reprend les deux "tables", je prends tous les enregistrement de la table excel et pour la table Access, je ne prends que les vide avec le critère "is null".
    Tu auras les enregistrement non présent dans ta table.
    Et ensuite une requête ajout sur la première requête.
    La table liée n'a pas de clé primaire, elle possède le champ UAI dont les valeurs sont de type texte exemple "TR000AG01" et le champ NomEtab.
    La table à laquelle je veux ajouter les données, Etablissements possède une clé primaire nommé CodeEtab, un champ UAI même type que dans la table liée, un champ NomEtab et d'autres champs.
    Donc je dois effectuer une comparaison sur le critère UAI dans ma requête basée sur les 2 tables et pour sélectionner uniquement les enregistrements de la table liée (Excel) qui ne sont pas présents dans l'autre table.
    Ensuite je pourrai créer une requête ajout sur la première requête.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    soit les 2 tables : "Excel" (liée) et "Access" on peut directement imaginer une requete ajout du type :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Access ( NomEtab, UAI )
    SELECT Excel.NomEtab, Excel.UAI
    FROM Access RIGHT JOIN Excel ON Access.UAI = Excel.UAI
    WHERE (((Access.UAI) Is Null));

  6. #6
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Je penses que ce sera plutot :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Access ( NomEtab, UAI )
    SELECT Excel.NomEtab, Excel.UAI
    FROM Excel LEFT JOIN Access ON Access.UAI = Excel.UAI
    WHERE (((Access.UAI) Is Null));

    Sinon la procédure est cohérente

    Edit : tout bien réfléchi, les deux requetes reviennent au même mais en terme de logique et de compréhension..celle de gomi me semble un peu bancale par rapport à l'explication du process

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    La proposition de say est effectivement plus logique...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    J'ai suivi vos instructions et j'ai réussi

    merci à vous.

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

Discussions similaires

  1. Insérer des données de Jtable dans une table
    Par mimati dans le forum Général Java
    Réponses: 0
    Dernier message: 15/11/2013, 18h18
  2. [MySQL] Affichage tirage au sort des données puis copiage dans une table
    Par legrandse dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/02/2012, 13h04
  3. Réponses: 9
    Dernier message: 26/03/2011, 09h46
  4. Réponses: 3
    Dernier message: 20/01/2010, 18h40
  5. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 09h22

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