Création d'une table à partir d'une autre en VBA Access
DAVIMIKA
Messages postés118Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention10 janvier 2014
-
16 juil. 2013 à 20:53
jordane45
Messages postés38141Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 avril 2024
-
21 juil. 2013 à 21:21
Bonjour,
Je voudrais à partir de ma tbl adhérents et tbl Adhérents import (dont le champ activités contient des valeurs concaténé) créer une 3ème tbl activités qui comprend une ligne par activité.
Je joins mon code qui me donne un résultat incorrect.
Il faudrait que je puisse ajouter et faire des Màj des enregistrements à chaque importation.
Sub MajActivite()
'--- Ouverture de la base
Set db = CurrentDb
'--- Intérogation de la tbl adhérents rs
rq = * From [tbl Adhérents]"
Set rs = db.OpenRecordset(rq, dbOpenDynaset)
'--- Intérogation de la tbl adhérents Import rs1
rq = "SELECT * From [tbl Adhérents Import]"
Set rs1 = db.OpenRecordset(rq, dbOpenDynaset)
'--- Intérogation de la tbl Activité rs3
rq = "select * From [tbl Activités]"
Set rs3 = db.OpenRecordset(rq, dbOpenDynaset)
'--- Test sur EOF
If rs.EOF Then blnCibleVide True Else blnCibleVide False
'--- Boucle sur la table rs et rs1
Do While Not rs1.EOF
Do While Not rs.EOF
'--- Rechercher si le numéro existe
If blnCibleVide Then
blnExistePas = True
Else
rs3.FindFirst "[RéfAdhérent]=" & (rs![RéfAdhérent]) & ""
blnExistePas = rs3.NoMatch
End If
TabVar = Split((rs1("Activites")), ",")
For intI = 0 To UBound(TabVar)
If blnExistePas Then
rs3.AddNew
rs3("Discipline") = Trim(TabVar(intI))
rs3("RéfAdhérent") = rs("RéfAdhérent")
rs3.Update
Else
'--- Existe on met à jours
rs3.Edit
rs3("Discipline") = TabVar(intI)
rs3("RéfAdhérent") = rs("RéfAdhérent")
rs3.Update
End If
Next
rs1.MoveNext
rs.MoveNext
Loop
Loop
Set rs = Nothing
Set rs1 = Nothing
End Sub
Merci pour votre aide.
Salutations
A voir également:
Access mise à jour table à partir d'une autre table
jordane45
Messages postés38141Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 avril 2024344 17 juil. 2013 à 01:57
Bonjour,
créer une 3ème tbl
Visiblement, tu ne veux pas la créer mais la mettre à jour ( mais la je chipote )
mon code qui me donne un résultat incorrect
Oui..et ? Il est incorrect en quoi ?
- Il bloque sur une ligne ?
- Tu as un message d'erreur ?
- Quelle partie de ton Sub ne donne pas le résultat souhaité ?
'--- Intérogation de la tbl adhérents rs
rq = * From [tbl Adhérents]"
Il ne te manque pas le début ? "Select ..
Bon sinon, si j'ai bien compris, tu veux utiliser tes deux premières tables pour alimenter une troisième, pourquoi ne fais tu pas une seule requête sur les deux ( avec jointure ou union si nécessaire) plutôt que de faire deux boucles imbriquées
DAVIMIKA
Messages postés118Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention10 janvier 2014 17 juil. 2013 à 17:26
Bonjour Jordane,
Merci pour ta réponse.
Oui en effet je veux mettre à jour la 3ème table.
Mon code est incorrect en ce sens que :
- Lorsque je rajoute pour un adhérent une activité dans le champ concaténé de la tbl Adhérents Import, et que je fais une Màj la 1ère activité est remplacée par celle ajoutée au lieu d'être créée.
- Pour un autre adhérent ses activités sont inversées par celles de son épouse.
jordane45
Messages postés38141Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 avril 2024344 17 juil. 2013 à 18:39
Il y a quelque chose que je ne comprend pas....
Dans ton script tu boucle sur la table adhérents Import (RS1)
et puis pour chaque ligne de la table adhérents (RS)
tu vérifie s'il existe ou non dans RS3 ( en fonction de ça, tu ajoutes ou Modifie une ligne)..
Par contre, tu prend l'activité de la ligne où se trouve ta boucle......
Il y a, je pense, un GROS souci dans la conception du script...
Déjà, il faut se baser sur un "ID" Unique et Commun aux tables que tu manipules
Par exemple, La valeur "unique" et commune disponible dans tes deux tables adhérents est celle du numéro de licence.
Ensuite, il ne te faut qu'une seule boucle... pas deux !
Tu boucles UNIQUEMENT sur ta table IMPORT.
-> Pour chaque Ligne de RS1, tu regardes s'il le N° de licence existe dans RS
( Si oui.. tu feras une MODIFICATION, Sinon un AJOUT [toujours avec le split de tes activités])
Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI
- La table activités est vide, je clique sur le bouton Maj des activités du formulaire, la table se remplit correctement.
- Dans la table Adhérents Import je rajoute une activité à un adhérent, je clique sur le bouton Maj des activités du formulaire, et la nouvelle activité est bien rajoutée.
Dans la table Adhérents Import je supprime une activité à un adhérent, je clique sur le bouton Maj des activités du formulaire, et l'activité est toujours présente.
Comment faire pour supprimer cette activité qui ne sert à rien ?
Dans la base j'ai rajouté une autre table « tbl Activité-a » que je voudrais remplir soit avec la table « tbl Activités » ou « tbl Adhérents Import ».
As-tu une piste à m?indiquer ? Car je ne vois pas comment faire.
jordane45
Messages postés38141Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 avril 2024344 21 juil. 2013 à 21:21
Re bonjour,
Sans avoir téléchargé ton fichier access, je pense qu'il faut seulement, lorsque tu mets à jour un adhérent, il faut d'abord lister ses activités, les supprimer, puis les "mettre" à jour avec les nouvelles valeurs
Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI