[Doublons dans table] : algorithme

Bonjour,

Le problème : une table T1 avec un champ Id et un champ Ref. Le champ Ref de T1 comporte des doublons.
Id Ref
1 ref_a
2 ref_b
3 ref_b

Je voudrais détecter mes doublons, les copier dans une table T2 et suprimmer le doublon en question de ma table T1 (ici, Id=2 ; Ref=Ref_b)
Je ne vois pas dans quel sens partir et je n'ai rien trouvé de concluant sur le oueb. Si quelqu'un avait un petit bout d'algorithme (ou un petit bout de VBA), je suis preneur...

Merci.

2 réponses

  1. ben d'abord tu commences par faire une requete
    avec des fonctions de regroupement bouton sigma
    tu mets le champ avec doublons a regroupement
    sur la ligne operation
    et tu mets un autre champ avec la fonction de regroupement
    compte et le where >1
    ca te donne la liste des doublons
    maintenant si tu veux crer une table sans doublon
    tu fais une requete création de table avec regroupement des deux champs

    0
    1. ... je suis passé par un petit bout de code. Il y a surement plus simple. Il faut tout d'abord dupliquer la table T1 => T2 (même champs)

      Dim base As Database
      Dim record_T1, record_T2 As Recordset
      Dim temp_Id, temp_Ref As Variant
      Dim SQL As String

      Set base = DBEngine.Workspaces(0).Databases(0)
      SQL = "Select * from T1 order by Ref"
      Set record_T1= base.OpenRecordset(SQL, dbOpenDynaset)
      Set record_T2= base.OpenRecordset("T2", dbOpenDynaset)

      record_T1 .MoveFirst
      temp_id = ""
      temp_ref = ""

      Do Until record_T1.EOF
      record_T1.Edit
      If record_T1![Ref] = temp_ref
      With record_T2
      record_T2.AddNew
      record_T2![Id] = record_T1![Id]
      record_T2![Ref]= record_T1![Ref]
      record_T2.update
      End With
      record_T1.Delete
      Else
      temp_id = record_T1![Id]
      temp_ref = record_T1![Ref]
      End If
      record_T1.MoveNext
      Loop

      record_T1.Close
      record_T2.Close
      base.close

      C'est tout ...
      0