Supprimer les doublons dans une base access

Contenu du snippet

Ce code vous permet de supprimer les enregistrements en double dans une base access : Vous aurez besoin d'une feuille (form1), d'un boutton (command1), d'une listbox(list1) ainsi qu'une progressbar (bar)

Source / Exemple :


Dim base As Database, rst As Recordset
Private Sub Command1_Click()
Set base = OpenDatabase("Votre Base")
Set rst = base.OpenRecordset("Votre Table")
List1.Clear
bar.Max = rst.RecordCount
Dim boucle2, boucle3, boucle4, boucle5 As Integer
For boucle2 = 0 To rst.RecordCount
For boucle3 = 0 To List1.ListCount
If List1.Text <> rst![Champ] Then
If List1.ListIndex = List1.ListCount - 1 Then
List1.AddItem (rst![Champ])
End If
Else
GoTo passe
End If
List1.ListIndex = List1.ListIndex + 1
Next boucle3
passe:
List1.ListIndex = 0
rst.MoveNext
bar.Value = bar.Value + 1
Next boucle2
List1.ListIndex = 0
For boucle5 = 1 To List1.ListCount
List1.ListIndex = List1.ListIndex + 1
Next boucle5
End Sub

Conclusion :


Ce code fonctionne parfaitement à part qu'il est assez lent avec le traitement d'une grosse base. Sinon la progressbar vous indique la progression de votre requête et la liste sert juste de support où sont stockés tous les enregistrements sans doublons : Le code pointe sur un enregistrement dans la base, puis recherche dans la liste(list1) (grace aux boucles) si il existe un identique. Apartir de là, il en conclu : si l'enregistrement est dans la liste il le supprime dans la base alors que si il n'y figure pas il l'ajoute.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (Megadeth01)