![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Conception Le forum qui vous aide à résoudre vos questions relatives à la modélisation de votre base de données sous Access. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Candidat au titre de Membre du Club
![]() |
Bonjour,
Je suis débutant sous Access. J'ai actuellement 4 tables dans ma base :
Chaque tables ont deux colonnes communes qui correspondent à un code, du genre AR9875976 et FR0984567. J'ai donc créer une 5ème table (Comandes_Generales) qui regroupe l'ensemble des colonnes des 4 autres tables. Je dois aussi préciser que les 4 tables citées plus haut sont des tables liées à des tableaux Excel. Ce que je cherche à faire c'est de regrouper les infos des 4 différentes tables dans la table Commandes_Generales par rapport aux deux colonnes communes qui sont présentes dans ces dernières. J'ai essayé de chercher du côté de l'outil Relation dans Access mais ça n'a rien donné. Si quelqu'un peut m'aider ça serait bien. Merci d'avance. |
|
|
|
|
|
#2 (permalink) | ||
![]() |
Bonjour et bienvenue sur le forum Office de DVP.
Citation:
Citation:
Cela se fait par des requêtes d'ajout, de mises à jour, etc ... mais sans plus d'informations ce n'est pas évident de trouver les bonnes requêtes. Remarque : Je trouve cela dangereux, tu veux mettre dans une table des données venant de fichiers Excel, hors cela ne pourra se faire que par des requêtes, car tu ne pourras lier cette nouvelle table au autres, en effet il faut bien mettre des données à l'intérieur et ce n'est pas les relations qui le feront. Tu auras donc une table figé par rapport aux données récupérées de tes fichiers Excel, mais que se passera-t-il si dans Excel on change une donnée ? Starec |
||
|
|
|
|
|
#3 (permalink) |
|
Candidat au titre de Membre du Club
![]() |
Bonjour,
Merci pour ta réponse. Tu me dis que si les données proviennent de tables liées à Excel, la table dans laquelle je regroupe tous les données resteront fixent et ne bougeront pas. Mais si j'exécute une requête d'ajout ou de mise à jour à chaque fois qu'il y a de nouvelles données, ça devrait marcher ? J'ai fait des recherche sur les requêtes d'ajout. Je sais comment les faire maintenant, mais comment je fais pour lui dire lors de l'ajout de copier les données suivant les deux colonnes (dont j'en parle dans mon post précédent). Est-ce que c'est dans les critères (sorte de where colonne source = colonne de destination ). Comment faire les requêtes de mises à jour ? Sachant que je sais quand les fichiers Excel sont modifiés, et que ces modifs sont répercutées dans les tables liées, comment faire cette requête de mise à jour qui m'irait chercher les dernières mises à jour ? Merci |
|
|
|
|
|
#4 (permalink) | |||
![]() |
Bonjour
Citation:
Citation:
Citation:
Je t'avoue que personnellement je n'aime pas cette méthode, n'as-tu pas plutôt la possibilité de tout faire sous Access ? Starec |
|||
|
|
|
|
|
#5 (permalink) |
|
Candidat au titre de Membre du Club
![]() |
Non je ne peux pas tout faire sur Access. Un des 4 fichiers excel m'est envoyé quotidiennement. En fait je ne recevrai plus que 3 fichiers, le 4ème étant un import de l'historique, je n'ai plus en m'en occupé.
En fait ces fichiers excel servent à gérer des commandes de matériels. Un des fichiers regroupe les nouvelles commandes, un autre sert au suivi et un autre au retours. Sachant que ces fichiers n'ont les mêmes colonnes (à part les deux colonnes cités dans le premier post), c'est pour ça que j'ai créé une table qui regroupait l'ensemble des colonnes de ces fichiers. Si tu as une autre méthode à me proposer, je t'écoute. Merci |
|
|
|
|
|
#7 (permalink) |
![]() |
Bonjour
Dans ce cas aucun soucis, on vide la table et on la remplit de nouveaux. Je ne sais pas combien tu as de données, mais avec 4 feuilles Excel et 2 colonnes par feuille, cela ne devrait pas te faire perdre trop de temps. Donc il faut déjà déterminé les colonnes dans Excel. Créer ta table de destination. Et créer tes requêtes. Cependant encore des questions : Est-ce que des données des 4 fichiers Excel se trouveront dans le même enregistrement (la même ligne) du tableau Excel ? Car on ne connait pas toujours ta structure. Y a t il points communs entre tes tables ? Tu aurais pu faire cela sous Excel, pourquoi Access ? Quel est le but ? Connaitre le pourquoi de ta démarche pourrait aider les membres. Ce qui me gêne énormément dans ce que tu veux faire c'est la cohérence des données, comme je ne sais pas ce que tu veux saisir prenons un exemple. Tu as un client Mr Dupont, demain tu te trompes tu écris Mr Dupond dans ton fichier Excel, alors que c'est la même personne. Cela te donnera une incohérence de données, et faussera tes extractions. Hors avec une base de donnée relationnelles, plus de soucis. C'est pourquoi ce que tu veux faire (qu'il faudrait plus nous détailler et donc répondre aux questions) me gêne conceptuellement. Starec
__________________
En cas de questions techniques par MP ou message visiteur ![]() Office : :Les Cours, Les FAQs VB : Les Cours, Les FAQs Mes articles : ici Me connaitre Dernière modification par Philippe JOCHMANS ; 11/09/2008 à 04h47 |
|
|
|
|
|
#8 (permalink) |
|
Candidat au titre de Membre du Club
![]() |
Bonjour,
Merci pour ta réponse. Les colonnes communes dont je te parlait contiennent des n° de commandes du genre AT937423489 et l'autre colonne un n° d'intervention du genre RT59383487. Je pense que tu as compris que ce sont des n° uniques, donc il n'y aura pas de souci d'erreurs (comme ce ne sont pas des noms). Je t'explique la situation plus précisément: Jusqu'à aujourd'hui je concaténait et mettait à jour les commandes sous Excel. Mais là j'ai de nouveaux besoins et le fichiers excel commencent à grossir, de plus il est partagé dans un partage réseau. J'avais également besoin de formulaires pour différents utilisateurs. C'est pourquoi j'ai décidé de passé sur Excel. 1) J'ai importer le tableau excel où je concaténait mes commandes dans une tables excel. Maintenant je n'ai plus besoin de m'en occuper. 2) Ensuite j'ai 3 autres fichiers excel comme je te l'ai dis plus haut: 2 colonnes communes aux trois fichiers, les autres colonnes contiennent les adresses, e-mail, nom, et d'autres infos. C'est pour ça que j'ai créé une table qui rassemblait toutes les colonnes de ces trois fichiers excel + un fichier csv que je recevrai avec de nouvelles commandes. 3) Pour le fichier CSV, j'ai juste besoin de faire un import (concaténation) sur la première table que j'avais importer. 4) Au final la 5ème table que j'avais créée contient :
Voilà Merci |
|
|
|
|
|
#10 (permalink) |
|
Candidat au titre de Membre du Club
![]() |
Parce que comme je l'ai dit, ce sont des fichiers excel que je reçois de collaborateurs qui travaillent eux sur excel.
Sinon: les 3 fichiers, Retour, Livraison et Suivi, sont des petits fichiers, avec peu de colonnes et de lignes. Est-ce qu'on ne pourrait pas les importer sur access (donc la ça serait de vrai tables) et via une requête (ou code VBA) je cré un bouton qui effacerait ces tables et qui réimporterait les données des fichiers excel quand je recevrai les nouveaux fichiers ? Donc après on n'aura plus de table liée et la vous pourriez m'expliquer comment je pourrais regrouper l'ensemble des infos des différentes tables en une seule ? Merci |
|
|
|
|
|
#11 (permalink) | |||
![]() |
Re
Citation:
Citation:
Citation:
Par automation en pilotant Excel : Tapes Excel dans la FAQ Access Par Sql pour récupérer des données, mais cela implique une rigueur dans la saisie du classeur Excel, tu peux t'aider de ce tuto de Silkyroad : http://silkyroad.developpez.com/VBA/ClasseursFermes/, mais lit bien les instructions sur la structure du fichier. Starec |
|||
|
|
|
|
|
#12 (permalink) | |
|
Candidat au titre de Membre du Club
![]() |
Citation:
|
|
|
|
|
|
|
#14 (permalink) |
|
Candidat au titre de Membre du Club
![]() |
Je viens de lire le tuto, surtout la partie sur la lecture des fichiers excel. Voici le code qui m'a intérressé:
Code :
Sub RequeteClasseurFerme() Dim Cn As ADODB.Connection Dim Fichier As String Dim NomFeuille As String, texte_SQL As String Dim Rst As ADODB.Recordset 'Définit le classeur fermé servant de base de données Fichier = "C:\monClasseurBase.xls" 'Nom de la feuille dans le classeur fermé NomFeuille = "Feuil1" Set Cn = New ADODB.Connection '--- Connection --- With Cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & Fichier & _ ";Extended Properties=Excel 8.0;" .Open End With '----------------- 'Définit la requête. '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille. texte_SQL = "SELECT * FROM [" & NomFeuille & "$]" Set Rst = New ADODB.Recordset Set Rst = Cn.Execute(texte_SQL) 'Ecrit le résultat de la requête dans la cellule A2 Range("A2").CopyFromRecordset Rst '--- Fermeture connexion --- Cn.Close Set Cn = Nothing End Sub Code :
Range("A2").CopyFromRecordset Rst Est-ce possible ? Ou c'est tiré par les cheveux ? |
|
|
|
|
|
#15 (permalink) |
|
Candidat au titre de Membre du Club
![]() |
Bonjour,
J'ai décidé de faire autrement. Voilà comment j'ai procédé:
Donc je vais travailler là avec des vrais tables Access. Étant donné que j'ai juste besoin de créer un formulaire qui va afficher les différentes infos d'un numéro de commande, j'ai décidé de relier les tables entre elles en fonction de ce numéro de commande, en théorie. Mais en pratique c'est autre chose. Une des tables (suivi commande pour être plus précis) peut comporter des doublons (du numéro de commandes mais qui correspond aux différents états de la commande) que je ne peux pas supprimer, et ça c'est pas bon pour créer des relations. Alors je voulais vous demander comment je pouvais faire pour afficher toutes les infos concernant une commande à partir des différentes tables Access. Merci d'avance. |
|
|
|
![]() |
![]() |
||
Relation entre tables Access
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|