Import Excel et tables multiples
Résolu
Kref01
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Import Excel et tables multiples
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Déplacer colonne excel - Guide
- Excel moyenne - Guide
7 réponses
Bonjour,
a mon avis, il va falloir que tu utilise un peu le VBA pour:
1 - Lire le fichier CSV
2 - Vérifier si la structure existe, et la créer avec les infos du csv si ce n'est pas le cas
3 - importer les données du csv dans les bonnes tables
Il y a peut être une façon plus simple, mais je ne la connais pas...
A+
a mon avis, il va falloir que tu utilise un peu le VBA pour:
1 - Lire le fichier CSV
2 - Vérifier si la structure existe, et la créer avec les infos du csv si ce n'est pas le cas
3 - importer les données du csv dans les bonnes tables
Il y a peut être une façon plus simple, mais je ne la connais pas...
A+
Merci pour le retour Skratus ;)
Je pensais bien devoir en passer par là, cela ne me dérange pas trop, mais je ne sais pas comment créer un enregistrement dans une table et récupérer la clé primaire de cet enregistrement créé...
Je vais essayer de regarder de ce côté là.
Je pensais bien devoir en passer par là, cela ne me dérange pas trop, mais je ne sais pas comment créer un enregistrement dans une table et récupérer la clé primaire de cet enregistrement créé...
Je vais essayer de regarder de ce côté là.
bonjour,
ceci montre comment créer un enregistrement et en récupérer la clé primaire: https://docs.microsoft.com/fr-ca/office/client-developer/access/desktop-database-reference/recordset-lastmodified-property-dao
ceci montre comment créer un enregistrement et en récupérer la clé primaire: https://docs.microsoft.com/fr-ca/office/client-developer/access/desktop-database-reference/recordset-lastmodified-property-dao
rs.AddNew rs!FirstName = "Roger" rs!LastName = "Harui" rs.Update ' Move current record pointer to the most recently ' changed or added record. rs.Bookmark = rs.LastModified nouvellecleprimaire = rs!id
Bonjour Kref01,
Voici un lien de téléchargement sur une base access faite rapidement.
https://www.cjoint.com/c/KEeinqTvPui
Jette un oeil du coté du VBA pour voir comment lire un csv (séparateur ;) et insérer les données dans une table. Mon fichier CSV ne se limitait qu'a deux colonnes, que l'on récupère avec le tableau tblign(0) (dans mon csv, ca correspond au nom de la strcuture) et tblign(1) (correspond à l'adresse de la structure)
je compare les données du fichier avec ce qu'il y a dans la table structure grace à la fonction Dlookup (colonne à chercher,nomde la table, filtre à appliquer)
Bon courage
Voici un lien de téléchargement sur une base access faite rapidement.
https://www.cjoint.com/c/KEeinqTvPui
Jette un oeil du coté du VBA pour voir comment lire un csv (séparateur ;) et insérer les données dans une table. Mon fichier CSV ne se limitait qu'a deux colonnes, que l'on récupère avec le tableau tblign(0) (dans mon csv, ca correspond au nom de la strcuture) et tblign(1) (correspond à l'adresse de la structure)
je compare les données du fichier avec ce qu'il y a dans la table structure grace à la fonction Dlookup (colonne à chercher,nomde la table, filtre à appliquer)
Bon courage
Désolé pour mon retour tardif... couché/malade :(
En fait maintenant, je fais mes imports sans problème (merci Skratus et yg_be).
Le problème se pose sur mes exports que je fait directement par un :
par contre, j'aimerais récupérer les données, dans un seul fichier de mes 3 tables : STRUCTURES/CONTACTS/RDV
sachant que CONTACTS est lié à STRUCTURES par la clé primaire de STRUCTURES, et que RDV est liée à CONTACTS par la clé primaire de CONTACTS
Chaque fiche STRUCTURE est associé à un employé (donc implicitement, les contacts et les rdv aussi).
Pour faire ma requête, je suis passé par la création de requête sur Access, et j'ai sélectionné les champs qui m’intéressent, et posé un critère dans nom_agent=Me.Fiche_qui
Par un choix d'employé dans une liste déroulante (Me.fiche_qui) , si je lance ma requête pour récupérer les STRUCTURES et les CONTACTS, cela marche nickel, mais si je demande en plus les RDV associés... je ne récupère rien... :(
Une idée de "comment faire" ?
En fait maintenant, je fais mes imports sans problème (merci Skratus et yg_be).
Le problème se pose sur mes exports que je fait directement par un :
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "R_Synchro_STRUCTURES", "X:\TOTAL_" & Me.fiche_qui & ".xls", True
par contre, j'aimerais récupérer les données, dans un seul fichier de mes 3 tables : STRUCTURES/CONTACTS/RDV
sachant que CONTACTS est lié à STRUCTURES par la clé primaire de STRUCTURES, et que RDV est liée à CONTACTS par la clé primaire de CONTACTS
Chaque fiche STRUCTURE est associé à un employé (donc implicitement, les contacts et les rdv aussi).
Pour faire ma requête, je suis passé par la création de requête sur Access, et j'ai sélectionné les champs qui m’intéressent, et posé un critère dans nom_agent=Me.Fiche_qui
Par un choix d'employé dans une liste déroulante (Me.fiche_qui) , si je lance ma requête pour récupérer les STRUCTURES et les CONTACTS, cela marche nickel, mais si je demande en plus les RDV associés... je ne récupère rien... :(
Une idée de "comment faire" ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Les 3 tables : STRUCTURES / CONTACTS / RDV
STRUCTURES
-structure_num*
-structure_nom
-agent_nom
-structure_adresse
-structure_cp
-structure_ville
CONTACTS
-contact_num*
-structure_nom => lié à structure_num de la tables STRUCTURES
-contact_nom
-contact_prenom
-contact_mail
-contact_tel_fixe
RDV
-rdv_num*
-contacts_nom => lié à contact_num de la table CONTACTS
-rdv_date
-rdv_commentaire
J'ai un formulaire avec une liste déroulante de nom de personne : fiche_qui et je veux extraire toutes les infos sur les structures, les contacts et rdv associés pour lesquels agent_nom = fiche_qui
mon code SQL est celui là (généré automatiquement par la création de requête) :
Qui ne me retourne aucune info :(
Mais si je fais cette requête en supprimant les RDV, cela fonctionne très bien.
J'ai besoin de cet export total :(
STRUCTURES
-structure_num*
-structure_nom
-agent_nom
-structure_adresse
-structure_cp
-structure_ville
CONTACTS
-contact_num*
-structure_nom => lié à structure_num de la tables STRUCTURES
-contact_nom
-contact_prenom
-contact_mail
-contact_tel_fixe
RDV
-rdv_num*
-contacts_nom => lié à contact_num de la table CONTACTS
-rdv_date
-rdv_commentaire
J'ai un formulaire avec une liste déroulante de nom de personne : fiche_qui et je veux extraire toutes les infos sur les structures, les contacts et rdv associés pour lesquels agent_nom = fiche_qui
mon code SQL est celui là (généré automatiquement par la création de requête) :
SELECT AGENT.agent_num, STRUCTURES.structure_nom, STRUCTURES.agent_nom, STRUCTURES.structure_adresse, STRUCTURES.structure_cp, STRUCTURES.structure_ville, CONTACTS.contact_nom, CONTACTS.contact_prenom, CONTACTS.contact_mail, CONTACTS.contact_tel_fixe, RDV.rdv_date, RDV.rdv_commentaire
FROM (AGENT INNER JOIN STRUCTURES ON AGENT.agent_num = STRUCTURES.agent_nom) INNER JOIN (CONTACTS INNER JOIN RDV ON CONTACTS.contact_num = RDV.contacts_nom) ON STRUCTURES.structure_num = CONTACTS.structures_nom
WHERE (((AGENT.agent_num)=[Formulaires]![F_Synchro]![fiche_qui]));
Qui ne me retourne aucune info :(
Mais si je fais cette requête en supprimant les RDV, cela fonctionne très bien.
J'ai besoin de cet export total :(
Oupsss désolé je pensais l'avoir mise.
Voila la requete qui me retourne bien une liste de structures et les contacts associés :
comme pour l'autre requête, elle est construite "graphiquement" dans Access. La différence, c'est que je ne fais pas apparaitre la table des RDV... mais je sèche (ce qui n'est pas évident avec le temps dehors aujourd'hui... :D)
Voila la requete qui me retourne bien une liste de structures et les contacts associés :
SELECT AGENT.agent_num, STRUCTURES.structure_nom, STRUCTURES.agent_nom, STRUCTURES.structure_adresse, STRUCTURES.structure_cp, STRUCTURES.structure_ville, CONTACTS.contact_nom, CONTACTS.contact_prenom, CONTACTS.contact_mail, CONTACTS.contact_tel_fixe, CONTACTS.contact_tel_portable
FROM (AGENT INNER JOIN STRUCTURES ON AGENT.agent_num = STRUCTURES.agent_nom) INNER JOIN CONTACTS ON STRUCTURES.structure_num = CONTACTS.structures_nom
WHERE (((AGENT.agent_num)=[Formulaires]![F_Synchro]![fiche_qui]));
comme pour l'autre requête, elle est construite "graphiquement" dans Access. La différence, c'est que je ne fais pas apparaitre la table des RDV... mais je sèche (ce qui n'est pas évident avec le temps dehors aujourd'hui... :D)
dans mes tests je suis allé plus loin...
En fait, ce qui pose souci avec ma requête, c'est qu'en fait, je ne récupère les Structures que si il y a un Contact, et idem pour les RDV.... c'est pour cela que tout est vide :(
Du coup, dans ma requête, je ne sais pas du tout comment lui dire de remonter les structures MEME SI il n'y a pas de contact, et donc pas de RDV...
Le problème ne se situait donc pas réellement ou je pensais :(
En fait, ce qui pose souci avec ma requête, c'est qu'en fait, je ne récupère les Structures que si il y a un Contact, et idem pour les RDV.... c'est pour cela que tout est vide :(
Du coup, dans ma requête, je ne sais pas du tout comment lui dire de remonter les structures MEME SI il n'y a pas de contact, et donc pas de RDV...
Le problème ne se situait donc pas réellement ou je pensais :(
J'espérais qu'il s'agissait de cela, c'est le plus facile à comprendre.
Tu as probablement utilisé un outil graphique pour spécifier les relations entre tes tables (avec des lignes reliant les tables).
Dans cet outil, en cliquant "à droite" sur une jointure (ligne), tu peux gérer les propriétés de cette jointure. Cela devrait faire apparaitre les options dont tu as besoin.
Tu as probablement utilisé un outil graphique pour spécifier les relations entre tes tables (avec des lignes reliant les tables).
Dans cet outil, en cliquant "à droite" sur une jointure (ligne), tu peux gérer les propriétés de cette jointure. Cela devrait faire apparaitre les options dont tu as besoin.
oui, j'ai bien utilisé l'outil graphique, et toutes mes relations sont de type "1 à plusieurs"
Une structure peut avoir plusieurs contacts
1 contact peut avoir plusieurs RDV
donc je pense que de ce côté là, c'est ok, mes relations sont bien mises en place.
Je pense que mon problème vient vraiment de ma requete SQL car je demande à sortir les infos d'une structure, d'un contact, et de rdv... mais si il n'y a pas de rdv créé pour ce contact... il zappe l'info :(
Une structure peut avoir plusieurs contacts
1 contact peut avoir plusieurs RDV
donc je pense que de ce côté là, c'est ok, mes relations sont bien mises en place.
Je pense que mon problème vient vraiment de ma requete SQL car je demande à sortir les infos d'une structure, d'un contact, et de rdv... mais si il n'y a pas de rdv créé pour ce contact... il zappe l'info :(
le problème est, bien sûr, dans la requête SQL. comme tu ne l'écris pas toi-même, Access utilise les informations des relations pour la créer.
et tu dois donc adapter ces informations, comme expliqué ici: https://support.microsoft.com/fr-fr/office/joindre-des-tables-et-des-requ%C3%AAtes-3f5838bd-24a0-4832-9bc1-07061a1478f6
il ne s'agit pas du type de relation, il s'agit du type de jointure.
suivant la version d'Access, il faut peut-être cliquer un bouton "type de jointure" pour visualiser ces options.
et tu dois donc adapter ces informations, comme expliqué ici: https://support.microsoft.com/fr-fr/office/joindre-des-tables-et-des-requ%C3%AAtes-3f5838bd-24a0-4832-9bc1-07061a1478f6
il ne s'agit pas du type de relation, il s'agit du type de jointure.
suivant la version d'Access, il faut peut-être cliquer un bouton "type de jointure" pour visualiser ces options.
Bonjour,
J'ai lu très vite ta question et les réponses qu'on t'a données. Si j'ai compris ton problème est très classique; il s'agit d'aller de 1 à plusieurs, mais dans les 2 sens, de la structure vers les RV, et inversement. Si c'est bien cela la question, la réponse est assez simple, il te faut une table relai entre les deux tables, qui te donne dans un sens de 1 à plusieurs, et aussi dans l'autre.
Réfléchis, c'est la même chose que la gestion d'un hôtel. Dans une chambre il passe plusieurs clients, mais si un client vient plusieurs fois il ne sera pas toujours dans la même chambre. La solution est alors d'avoir cette table relai (Séjours?) qui permet d'appeler soit la chambre soit le client, et d'obtenir qui est passé dans la chambre, et quelle chambre a eu tel ou tel client.
En espérant avoir aidé à résoudre ta question
Cordialement
J'ai lu très vite ta question et les réponses qu'on t'a données. Si j'ai compris ton problème est très classique; il s'agit d'aller de 1 à plusieurs, mais dans les 2 sens, de la structure vers les RV, et inversement. Si c'est bien cela la question, la réponse est assez simple, il te faut une table relai entre les deux tables, qui te donne dans un sens de 1 à plusieurs, et aussi dans l'autre.
Réfléchis, c'est la même chose que la gestion d'un hôtel. Dans une chambre il passe plusieurs clients, mais si un client vient plusieurs fois il ne sera pas toujours dans la même chambre. La solution est alors d'avoir cette table relai (Séjours?) qui permet d'appeler soit la chambre soit le client, et d'obtenir qui est passé dans la chambre, et quelle chambre a eu tel ou tel client.
En espérant avoir aidé à résoudre ta question
Cordialement
Merci pour ton retour Tessel75, mais je pense que mes relations entre tables sont bien OK. Il ne peut s'agir de plusieurs à plusieurs dans les deux sens :(
J'ai bien un contact qui ne peut faire partie que d'une structure, mais une structure peut avoir plusieurs employés (=contacts).
J'avoue que je me penche sur les problèmes de jointure évoqués par yg_be... mais j'ai plus l'impression de me perdre qu'autre chose :(
J'ai bien un contact qui ne peut faire partie que d'une structure, mais une structure peut avoir plusieurs employés (=contacts).
J'avoue que je me penche sur les problèmes de jointure évoqués par yg_be... mais j'ai plus l'impression de me perdre qu'autre chose :(