Bonjour,
J'ai l'impression de poser toujours le même genre de questions car je stagne mais il y a un mois de ça, je ne connaissais pas VBA! Et j'avais aperçu Access et ses requêtes SQL pendant quelques heures de cours, juste pour vous expliquer mon niveau! Je découvre la programmation mais j'ai bien l'intention de comprendre!!!!
J'ai un grand nombre de tables (75) que je dois nettoyer afin de concevoir une base de données unique (à titre statistique uniquement!)
Cependant je souhaite automatiser tout ce que je fais comme manipulations pour que mon travail puisse resservir à quelqu'un d'autre plus tard! C'est bien en utilisant VBA?
Donc j'ai tout d'abord créer une table vide afin de définir le type, les propriétés, les index... de mes 6 champs (CodePatient, NomFamille, Prenom...etc)!
Ceci étant fait et fonctionne, je souhaite ajouter dans cette table vide, 4 tables (Identification1, Identification2, ...) ayant la même structure. Je voudrais également que les doublons sur le champ "CodePatient" soient supprimer automatiquement!
J'ai appris par mes lectures que je pouvais le faire en copiant la structure (seulement) de mes tables, puis en définissant mon champ "CodePatient" comme clé primaire, et enfin avec des requêtes ajout!
Cependant, j'aimerais le faire avec VBA, j'ai trouvé ce code sur la faq Access et il fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Sub Insertion(oRst1 As DAO.Recordset, orst2 As DAO.Recordset) On Error GoTo err Dim Fld As DAO.Field orst2.AddNew For Each Fld In oRst1.Fields If (Fld.Attributes And dbAutoIncrField) = 0 Then orst2.Fields(Fld.Name).Value = Fld.Value End If Next Fld orst2.Update End Sub Sub copier() Dim tbl1 As String, tbl2 As String Dim oRst1 As DAO.Recordset, orst2 As DAO.Recordset Dim odb As DAO.Database Dim Message As String Set odb = CurrentDb tbl1 = "Identification1" tbl2 = "IdentificationVIDE" Set oRst1 = odb.OpenRecordset(tbl1) Set orst2 = odb.OpenRecordset(tbl2) While Not oRst1.EOF Insertion oRst1, orst2 oRst1.MoveNext Wend If Not orst2.EOF Then orst2.MoveLast Message = "Opération terminée" & vbCrLf & vbCrLf & _ "La table source comportait : " & oRst1.RecordCount & " enregistrement(s)," & vbCrLf & _ "la table de destination en comporte " & orst2.RecordCount MsgBox Message, vbInformation, "MAJ terminée" End Sub
Ma table source contient bien 6106 enregistrements mais ma table de destination (IdentificationVIDE) en contient 0, donc là ça ne fonctionne pas.
Mais si je prends tbl1 = "Identification1" et tbl2 = "Identification2", ça marche!!
Mais si j'ai bien compris le programme, la recherche de doublons s'effectue sur les lignes entières? Comment faire pour qu'elle ne s'effectue uniquement sur le "CodePatient"? Et comment faire pour que les données s'ajoutent à ma table vide en VBA?
Beaucoup de blabla pour peu de chose!
N'hésitez pas à me renvoyer sur des tutoriels et des faq (même si je les ai lu plusieurs fois)! Il y a du vocabulaire qui m'échappe...
Peut-être n'ai-je pas vraiment compris le code? (La programmation a vraiment une logique... difficile à acquérir!!!)
N'hésitez pas à me poser des questions si je n'ai pas été claire!!!
Merci
Partager