IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[A2000-VBA] Concaténer des tables tout en éliminant les doublons


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut [A2000-VBA] Concaténer des tables tout en éliminant les doublons
    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

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    tu peux le faire en sql avec une requête union
    ceci étant il suffit de faire tourner 4 requêtes ajouts
    access prendra en charge la suppression des doublons si patient est déclaré en clef unique

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Oui, j'avais bien pensé à le faire avec des requêtes ajout mais si je souhaite le faire en VBA?
    Ca complique beaucoup les choses?

    A moins qu'il me suffise de faire tourner le programme ci-dessus 3 fois en prenant dans un premier temps tbl1 ="Identification1" et tbl2 ="Identification2" puis tbl1 ="Identification3" et tbl1 ="Identification4"!!! Les données des tables seront rajoutées dans tbl2!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.1] Jointure en éliminant les doublons d'une des tables
    Par nazguhl dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/11/2014, 15h12
  2. concaténer des tables à 2 colonnes verticalement
    Par stefsas dans le forum SAS Base
    Réponses: 1
    Dernier message: 28/05/2008, 18h16
  3. Réponses: 5
    Dernier message: 25/04/2007, 12h34
  4. [VBA]Liaison des tables
    Par TLImpala dans le forum VBA Access
    Réponses: 7
    Dernier message: 17/04/2007, 11h48
  5. pas d'accès aux tables tout en ayant les droits ?
    Par electrosat03 dans le forum Access
    Réponses: 15
    Dernier message: 12/12/2006, 19h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo