Isoler des doublons potentiels dans une table
Fermé
babal
-
11 janv. 2010 à 20:28
blux Messages postés 26569 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 3 janvier 2025 - 12 janv. 2010 à 08:56
blux Messages postés 26569 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 3 janvier 2025 - 12 janv. 2010 à 08:56
A voir également:
- Isoler des doublons potentiels dans une table
- Table ascii - Guide
- Table des matières word - Guide
- Supprimer les doublons excel - Guide
- Doublons photos - Guide
- Supprimer les doublons photos gratuit - Télécharger - Nettoyage
3 réponses
Salut
Il existe une fonction SOUNDEX() qui t'est peut-être disponible et qui renvoie une "signature vocale" de la chaine passée en argument : tu pourrais t'en servir pour dire que si deux soundex sont identiques c'est que les chaines qui en sont à l'origine sont similaires ; un bémol toutefois, je crois bien que ce soundex() ne fonctionne qu'en anglais (c'est pour ça que je m'en suis jamais servi)
Il existe une fonction SOUNDEX() qui t'est peut-être disponible et qui renvoie une "signature vocale" de la chaine passée en argument : tu pourrais t'en servir pour dire que si deux soundex sont identiques c'est que les chaines qui en sont à l'origine sont similaires ; un bémol toutefois, je crois bien que ce soundex() ne fonctionne qu'en anglais (c'est pour ça que je m'en suis jamais servi)
Comme j'ai bien peur que tu aies peu de réponses supplémentaires, j'aurais tendance à te conseiller d'explorer la voie avec soundex et de prévoir le traitement du reliquat avec des méthodes rudimentaires de ton cru (filtrer sur une différence d'1 car non alphanum par ex) en attendant l'arrivée d'une méthode polyvalente
bon courage
bon courage
Merci Flu,
Malheureusement, dans mon cas ce que tu appelles le reliquats correspond a 90% des enregistrements... :))
Je ne desespere pas: si quelqu'un est pris d'insomnie et veut bien m'aider, je suis preneur!
Anyway, si quelqu'un est interresse par la creation d'une formule excel SOUNDEX(), voici le code Vba pour le faire (de peu d'utilite dans mon cas...):
Malheureusement, dans mon cas ce que tu appelles le reliquats correspond a 90% des enregistrements... :))
Je ne desespere pas: si quelqu'un est pris d'insomnie et veut bien m'aider, je suis preneur!
Anyway, si quelqu'un est interresse par la creation d'une formule excel SOUNDEX(), voici le code Vba pour le faire (de peu d'utilite dans mon cas...):
Function SOUNDEX(Surname As String) As String ' Developed by Richard J. Yanco ' This function follows the Soundex rules given at ' http://home.utah-inter.net/kinsearch/Soundex.html Dim Result As String, c As String * 1 Dim Location As Integer Surname = UCase(Surname) ' First character must be a letter If Asc(Left(Surname, 1)) < 65 Or Asc(Left(Surname, 1)) > 90 Then SOUNDEX = "" Exit Function Else ' St. is converted to Saint If Left(Surname, 3) = "ST." Then Surname = "SAINT" & Mid(Surname, 4) End If ' Convert to Soundex: letters to their appropriate digit, ' A,E,I,O,U,Y ("slash letters") to slashes ' H,W, and everything else to zero-length string Result = Left(Surname, 1) For Location = 2 To Len(Surname) Result = Result & Category(Mid(Surname, Location, 1)) Next Location ' Remove double letters Location = 2 Do While Location < Len(Result) If Mid(Result, Location, 1) = Mid(Result, Location + 1, 1) Then Result = Left(Result, Location) & Mid(Result, Location + 2) Else Location = Location + 1 End If Loop ' If category of 1st letter equals 2nd character, remove 2nd character If Category(Left(Result, 1)) = Mid(Result, 2, 1) Then Result = Left(Result, 1) & Mid(Result, 3) End If ' Remove slashes For Location = 2 To Len(Result) If Mid(Result, Location, 1) = "/" Then Result = Left(Result, Location - 1) & Mid(Result, Location + 1) End If Next ' Trim or pad with zeroes as necessary Select Case Len(Result) Case 4 SOUNDEX = Result Case Is < 4 SOUNDEX = Result & String(4 - Len(Result), "0") Case Is > 4 SOUNDEX = Left(Result, 4) End Select End If End Function Private Function Category(c) As String ' Returns a Soundex code for a letter Select Case True Case c Like "[AEIOUY]" Category = "/" Case c Like "[BPFV]" Category = "1" Case c Like "[CSKGJQXZ]" Category = "2" Case c Like "[DT]" Category = "3" Case c = "L" Category = "4" Case c Like "[MN]" Category = "5" Case c = "R" Category = "6" Case Else 'This includes H and W, spaces, punctuation, etc. Category = "" End Select End Function
blux
Messages postés
26569
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
3 janvier 2025
3 323
12 janv. 2010 à 08:56
12 janv. 2010 à 08:56
Salut,
tu pourrais peut-être explorer la voie de suppression des caractères spéciaux afin d'éliminer les -,. et autres joyeusetés.
Par contre, pour la graphie différente des noms, à part un truc du genre soudex...
tu pourrais peut-être explorer la voie de suppression des caractères spéciaux afin d'éliminer les -,. et autres joyeusetés.
Par contre, pour la graphie différente des noms, à part un truc du genre soudex...
11 janv. 2010 à 23:17
Merci beaucoup, j'ai explore cette piste et malheureusement cela ne marche pas des lors qu'il y a des nombres dans le mot (donc cela ne marche pas pour l'exemple F-345 et F345).
Quelqu'un aurait-il une autre idee?