Import Excel et tables multiples
Résolu/Fermé
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
-
Modifié le 3 mai 2021 à 17:20
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 - 1 juin 2021 à 10:59
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 - 1 juin 2021 à 10:59
A voir également:
- Import Excel et tables multiples
- Si et excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
7 réponses
Skratus
Messages postés
12
Date d'inscription
mercredi 28 avril 2021
Statut
Membre
Dernière intervention
4 mai 2021
3 mai 2021 à 18:09
3 mai 2021 à 18:09
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+
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
4 mai 2021 à 07:26
4 mai 2021 à 07:26
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à.
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
4 mai 2021 à 13:22
4 mai 2021 à 13:22
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
Skratus
Messages postés
12
Date d'inscription
mercredi 28 avril 2021
Statut
Membre
Dernière intervention
4 mai 2021
4 mai 2021 à 10:17
4 mai 2021 à 10:17
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
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
20 mai 2021 à 15:30
20 mai 2021 à 15:30
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" ?
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
20 mai 2021 à 15:56
20 mai 2021 à 15:56
le point de départ serait de nous montrer la source SQL des deux requêtes.
ainsi que la liste des champs de tes tables, surtout les champs qui servent à lier les tables.
ainsi que la liste des champs de tes tables, surtout les champs qui servent à lier les tables.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
20 mai 2021 à 17:33
20 mai 2021 à 17:33
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 :(
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
20 mai 2021 à 22:10
20 mai 2021 à 22:10
je ne vois pas la source SQL de la requête qui fonctionne (sans les RDV).
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
>
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
Modifié le 21 mai 2021 à 08:04
Modifié le 21 mai 2021 à 08:04
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)
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
21 mai 2021 à 10:58
21 mai 2021 à 10:58
tu écris que tu as trois tables, j'en vois quatre.
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
21 mai 2021 à 09:58
21 mai 2021 à 09:58
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 :(
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
21 mai 2021 à 10:52
21 mai 2021 à 10:52
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.
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
>
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
21 mai 2021 à 10:57
21 mai 2021 à 10:57
cela devrait remplacer les "inner join" de tes requêtes par des "left join" ou des "right join".
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
>
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
21 mai 2021 à 11:38
21 mai 2021 à 11:38
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 :(
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
>
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
21 mai 2021 à 11:58
21 mai 2021 à 11:58
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
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
27 mai 2021 à 13:37
27 mai 2021 à 13:37
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 :(
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
>
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
27 mai 2021 à 14:19
27 mai 2021 à 14:19
quelle version de Access? ne vois-tu pas le type de jointure, comme expliqué dans la page dont j'ai donné le lien?
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
>
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 juin 2021 à 07:34
1 juin 2021 à 07:34
beaucoup de boulot en ce moment, je n'ai pu m'y remettre qu'hier... effectivement, il s'agissait bien du type de jointure... mais bon, j'ai du me taper pas mal de lecture pour m'y retrouver :)
Merci beaucoup à vous pour toute l'aide apportée sur mon problème
Merci beaucoup à vous pour toute l'aide apportée sur mon problème
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
>
Kref01
Messages postés
10
Date d'inscription
lundi 3 mai 2021
Statut
Membre
Dernière intervention
1 juin 2021
1 juin 2021 à 10:59
1 juin 2021 à 10:59
cela prend du temps de se former, et cela en fait gagner ensuite.