Supprimer les doublons dans une base access

0/5 (2 avis)

Snippet vu 6 065 fois - Téléchargée 45 fois

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

Ajouter un commentaire Commentaires
cs_Thorn Messages postés 7 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 9 décembre 2005
11 janv. 2003 à 11:37
Salut a vous deux, bon j'ai un ch''tit pbs: J'ai une table a 2colonne(c'est peu) mais elle a pas loin de 200 000 entrées(c'est deja plus), et bien ssur grand blaguer que je suis je voudrais que Access me trie tous se bordel et vire les doublons... Et les list de VB sont un peu short pour espérer quelque chose avec sa!
Voila ....
Merci d'avance
cs_urban Messages postés 8 Date d'inscription vendredi 21 juin 2002 Statut Membre Dernière intervention 8 août 2002
6 août 2002 à 02:13
il y a beaucoup plus simple et plus rapide en utilisant une requête avec un regroupement sur les champs qui doivent être vérifiés et en comptant le nombre d'occurences multiples. Tous ceux qui donnent un comptage supérieur à 1 doivent être traités. On compte une valeur de clé par exemple. Le meilleur moyen reste quand même d'analyser correctement sa structure et de placer des index uniques.
Par ailleurs les GOTO sont à oublier depuis bien des années ...

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)