Voilà mon p'tit souci :


Je fais quelques essais pour trier une table "Adhérents" assez mal faite, et qui possède un grand nombre de champs.

Cette table dispose d'un champ "Type" qui permet de regrouper les enregistrements en 3 types différents : Personnes, Sociétés, Coopératives.

Le but de ce tri serait de remplir 3 autres tables ("Personnes", "Sociétés", "Coopératives") ayant les mêmes champs que la table initiale "Adhérents", en insérant dans ces 3 tables que les enregistrements concernés.



J'ai prévu un petit formulaire pour effectuer ce tri, ça me permet de me remettre doucement la tête dans Access vu que je suis en stage.

Une liste déroulante me permet d'abord de sélectionner quel type je veux extraire.
Ensuite, un bouton de commande lance le tri via une procédure évènementielle.


Un Select Case sur le choix de la liste déroulante me permet de sélectionner les requêtes à exécuter :


- Je stocke les enregistrements de la table "Adhérents" dans un recordset


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
ExtractPersonne = "Select * From Adherents Where Type='Personne'"
 
Set recordset = CurrentDb.OpenRecordset(ExtractPersonne, dbOpenForwardOnly, dbReadOnly)

- Je parcours le recordset en faisant un INSERT INTO dans la table "Personnes" à chaque enregistrement parcouru

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6

requete = "INSERT INTO Personnes (champ1,champ2,...,champ20) "
requete = requete & "VALUES ('" & recordset("Champ1").Value & "', '" & recordset("Champ2").Value & "',..., '" & recordset("Champ20").Value & "')"

CurrentDb.Execute requete

Mon problème arrive donc ici :

J'ai marqué en orange les 2 énumérations qui me posent problème. En gros dans mon insert into, je dois tapper 20 nom de champs successifs (champs destination dans la table "Personnes"), puis 20 valeurs à insérer piochées dans le recordset par recordset("Nom_du_Champ").value.

Les noms des champs sont assez lourds à tapper, c'est pourquoi je cherche une procédure pour m'éviter ça et construire ma requête (string) dans une boucle while. Un truc du type :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
tant qu il reste des champs dans le recordset faire
 
      requete = requete + nom_du_champ_courant
 
      aller au champ du recordset suivant
 
fin tant que
Pour résumer, je voudrais parcourir le recordset afin de récupérer le nom des champs qui le composent. J'ai cherché un moment, je n'ai rien trouvé là dessus, et je ne sais pas si c'est possible.

Voilà je crois que j'ai fait le tour de mon souci. J'espère qu'il existe une solution pour faire ça. Merci d'avance pour vos réponses

Halz.