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 :

Modelisation : mise a jour externe d'une table [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Modelisation : mise a jour externe d'une table
    Bonjour a tous,

    J'ai une question existentielle sur la methode a appliquer pour ma base de donnee.

    Ma base donnee sert a gerer des projets pour mon equipe. Ma table principale dans access consiste on des donnees generiques sur le projet (numero, nom, employe affecte, statut) et des donnes de gestions (dates, checklist...). D'autres tables sont liees pour les commentaires etc...

    J'ai un systeme exterieur qui genere une liste de nouveaux projets chaque semaine. Donc chaque semaine, il va falloir ajouter a ma table principale une liste de projets (plusieures dizaines). J'aiemrai eviter de faire de la saisie manuelle et utiliser uneemthode plus automatisee. Mais comment faire?

    Si j'importe les nouvelles donnees a partie de "sources de donnees exterieur" via excel, est ce que cela va les ajouter "au fond" de ma table? Ou est ce que cela va ecraser mes donnees?

    Merci pour votre aide!

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 585
    Points
    31 585
    Billets dans le blog
    16
    Par défaut
    Bonsoir Jurassix,


    Supposons que dans la base de données ACCESS (de mon côté j’utilise ACCESS 2003), la table PROJET soit celle-ci :




    1) Si la feuille EXCEL a la même structure :



    Alors il est possible d’importer de façon simple les données de la feuille et de les stocker à la suite des autres dans la table.

    Dans la barre de menu d’ACCESS 2003 :

    Fichier > Données externes> Importer

    ACCESS demande le nom du fichier à importer, puis il demande si la 1re ligne est un en-tête (c'est oui dans l’exemple), il demande encore si on importe dans une nouvelle table ou dans une table existante (dans l’exemple, c’est donc dans une table existante, à savoir PROJET).

    Au résultat, les lignes venant d'Excel ont bien été ajoutées à la suite des autres :




    2) Prenons maintenant le cas où la table et la feuille Excel n’ont pas la même structure :




    On utilise à nouveau le processus d’importation, mais en demandant à ce que les données soient stockées dans une nouvelle table, appelons-la EXCEL_PROJET. Au résultat :




    Dans ce contexte, on aura créé une requête ne faisant mention que des colonnes pertinentes de la table EXCEL_PROJET, et où l'on peut aussi ne retenir que certaines lignes :




    Suite à l’exécution de cette requête, le contenu de la table PROJET devient le suivant :



    Où effectivement, le projet 11 ne figure pas, en vertu de la condition « WHERE idProjet > 11 ».

    Si les données sont éparpillées dans plus d’une feuille Excel, pas de problème, on créée par exemple une table par feuille, et dans la requête on met en œuvre la batterie des jointures qui vont bien.

    Les manipulations sont peut-être plus simples avec ACCESS 2010 : à vérifier.

    Si cette réponse vous a été utile, n’hésitez pas à voter...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci pour la reponse super precise.

    Mon fichier a la meme structure que la table, ce qui va grandement aider.

    Maintenant, je me rend compte qu'il y a un soucis : le systeme duquel on recupere les projets crees donne aussi un statut (en cours ou clos). Cela signifie que je peux avoir dans ma base de donnee access un numero projet d'il y a qlq semaine (statut "en cours"), et ce meme numero qui ressort plus tard avec le statut "clos".
    Comment proceder si je souhaite que dans ma base access, l'enregistrement du projet qui viens d'etre clos ait son statut mis a jour sans ajouter un doublon?

    Encore merci pour le support!

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 585
    Points
    31 585
    Billets dans le blog
    16
    Par défaut
    Bonsoir Jurassix,



    Partons de la situation initiale suivante :




    La feuille Excel comporte des ajouts et des clôtures :




    On crée une table de travail, appelons-la EXCEL_PROJET_STATUT, on la charge bestialement à partir de la feuille Excel. Au résultat :




    Au moyen de la requête suivante, on ajoute dans la table PROJET les projets dont le statut sera « en cours » :




    Et au moyen de la 2e la requête suivante, on modifie le statut des projets à clore :




    Après exécution des deux requêtes, la table PROJET est dans l’état suivant :




    Est-ce bien ce que vous vouliez ?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Tout d'abord merci beaucoup pour tes explications fsmrel.
    Mais je n'ai pas bien saisi un point : il faut que les nouvelles lignes et/ou lignes modifiees soient dans un nouveau fichier excel ? C'est a dire un fichier excel ou il n'y pas les lignes non modifiees deja presentes dans la table access ?

    Merci d'avance

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 585
    Points
    31 585
    Billets dans le blog
    16
    Par défaut
    Bonjour gabzout,


    Citation Envoyé par gabzout Voir le message
    Je n'ai pas bien saisi un point : il faut que les nouvelles lignes et/ou lignes modifiées soient dans un nouveau fichier Excel ?
    Non, du reste vous pouvez le tester. Cela dit, la requête utilisée jusqu’ici devrait être modifiée :


    En effet, en cas de tentative d’ajout de lignes déjà présentes dans la table, Access va le signaler, à cause des clés primaires. Il pose donc la question : « Ignore-t-on les doublons ? » Si on répond oui, tout se passera bien, les nouvelles lignes seront ajoutées et les candidats doublons trouble-fête seront poubellés : au final le résultat sera correct, mais il est préférable de travailler proprement, c'est-à-dire faire évoluer la requête INSERT ainsi :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO PROJET (ProjetId, EmployeaffecteId, ProjetNom, ProjetDebut, ProjetStatut)
        SELECT ProjetId, EmployeaffecteId, ProjetNom, ProjetDebut, ProjetStatut
        FROM   EXCEL_PROJET_STATUT
        WHERE  ProjetStatut = 'en cours'
          AND NOT EXISTS (SELECT ' ' 
                          FROM   PROJET
                          WHERE  ProjetId = EXCEL_PROJET_STATUT.ProjetId);

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    Super!
    Merci beaucoup

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/09/2013, 13h02
  2. mise a jour automatique d'une table
    Par boboss123 dans le forum jQuery
    Réponses: 5
    Dernier message: 15/12/2010, 13h18
  3. [MySQL] Mise a jour de toute une table
    Par FoxLeRenard dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/01/2009, 15h15
  4. Empecher la mise a jour auto d'une table
    Par SnakeCharmer dans le forum IHM
    Réponses: 2
    Dernier message: 03/04/2008, 15h04
  5. Mise à jour automatique d'une table access via un .xls
    Par infratunes dans le forum Access
    Réponses: 4
    Dernier message: 05/04/2006, 18h33

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