Accueil > > > FONCTION SOUNDEX EN VISUAL BASIC 6
FONCTION SOUNDEX EN VISUAL BASIC 6
Information sur la source
Description
Ayant écrit un logiciel de gestion de vidéothèque je me suis aperçu que l'on pouvait vite avoir des soucis avec des noms d'acteurs mal orthographiés... Ex Bruce Willsi à la place de Bruce Willis....... J'ai donc traduit la fonction Soundex (Recherche phonétique) décrite notament par Frédéric Brouard avec qui j'ai bossé (dans une galère.....dans le Var..il devrait reconnaître !!!!) en VB 6.
Source
- Public Function Analyse_Homonyme(ByVal NomActeur As String)
-
- ValeurCaractere = ""
-
- 'passage en majuscule et suppression des espaces
- NomActeur = UCase(NomActeur)
- 'NomActeur = UCase("ZARA WHITE")
- NomActeur = Replace(NomActeur, " ", "")
- caracteredepart = Mid(NomActeur, 1, 1)
-
- 'Elimination des voyelles du H et du W
- For i = 1 To Len(NomActeur)
- caractere = Mid(NomActeur, i, 1)
- Select Case caractere
- Case "A", "E", "I", "O", "U", "Y"
- NouveauNom = NouveauNom
- Case "H", "W"
- NouveauNom = NouveauNom
- Case Else
- NouveauNom = NouveauNom + caractere
- End Select
- Next
-
- 'Analyse du NouveauNom
- For i = 1 To Len(NouveauNom)
- caractere = Mid(NouveauNom, i, 1)
- Select Case caractere
- Case "B", "F", "P", "V"
- ValeurCaractere = ValeurCaractere & 1
- Case "C", "G", "J", "K", "Q", "S", "X", "Z"
- ValeurCaractere = ValeurCaractere & 2
- Case "D", "T"
- ValeurCaractere = ValeurCaractere & 3
- Case "L"
- ValeurCaractere = ValeurCaractere & 4
- Case "M", "N"
- ValeurCaractere = ValeurCaractere & 5
- Case "R"
- ValeurCaractere = ValeurCaractere & 6
- End Select
- Next
-
- Mot_Code = ValeurCaractere
- 'si la longeur est superieure a 4 je ne garde que les 4 premiers
- If Len(ValeurCaractere) >= 4 Then Mot_Code = Mid(Mot_Code, 1, 4)
-
- 'NouveauNom Codé --> Elimination des Doublons consécutifs
- For i = 1 To Len(ValeurCaractere)
- caractere = Mid(ValeurCaractere, i, 1)
- Select Case caractere
- Case "1"
- ' je remonte d une lettre pour verifier les eventuels doublons
- If i > 1 Then
- LettrePrec = Mid(Mot_Code, i - 1, 1)
- valeur = LettrePrec & 1
- End If
- If valeur = "11" Then
- PositionPaire = InStr(1, Mot_Code, valeur)
- Paire (PositionPaire)
- End If
- Case "2"
- ' je remonte d une lettre pour verifier les eventuels doublons
- If i > 1 Then
- LettrePrec = Mid(Mot_Code, i - 1, 1)
- valeur = LettrePrec & 2
- End If
- If valeur = "22" Then
- PositionPaire = InStr(1, Mot_Code, valeur)
- Paire (PositionPaire)
- End If
- Case "3"
- ' je remonte d une lettre pour verifier les eventuels doublons
- If i > 1 Then
- LettrePrec = Mid(Mot_Code, i - 1, 1)
- valeur = LettrePrec & 3
- End If
- If valeur = "33" Then
- PositionPaire = InStr(1, Mot_Code, valeur)
- Paire (PositionPaire)
- End If
- Case "4"
- ' je remonte d une lettre pour verifier les eventuels doublons
- If i > 1 Then
- LettrePrec = Mid(Mot_Code, i - 1, 1)
- valeur = LettrePrec & 4
- End If
- If valeur = "44" Then
- PositionPaire = InStr(1, Mot_Code, valeur)
- Paire (PositionPaire)
- End If
- Case "5"
- ' je remonte d une lettre pour verifier les eventuels doublons
- If i > 1 Then
- LettrePrec = Mid(Mot_Code, i - 1, 1)
- valeur = LettrePrec & 5
- End If
- If valeur = "55" Then
- PositionPaire = InStr(1, Mot_Code, valeur)
- Paire (PositionPaire)
- End If
- Case "6"
- ' je remonte d une lettre pour verifier les eventuels doublons
- If i > 1 Then
- LettrePrec = Mid(Mot_Code, i - 1, 1)
- valeur = LettrePrec & 6
- End If
- If valeur = "66" Then
- PositionPaire = InStr(1, Mot_Code, valeur)
- Paire (PositionPaire)
- End If
- End Select
- If Resultat_Paire <> "" Then
- Mot_Code = Resultat_Paire
- End If
- Next
-
- ValeurCaractere = caracteredepart & Mot_Code
- If Len(ValeurCaractere) > 4 Then
- ValeurCaractere = Mid(ValeurCaractere, 1, 4)
- Else
- For i = 1 To (4 - Len(ValeurCaractere))
- ValeurCaractere = ValeurCaractere & 0
- Next
- End If
-
- End Function
-
- Public Function Paire(ByVal Position As Integer)
-
- chaine1 = ""
- chaine2 = ""
- Resultat_Paire = ""
- ' je recupere la valeur avant le premier doublon
- chaine1 = Mid(Mot_Code, 1, PositionPaire)
- longueurrecupere = Len(chaine1)
- If longueurrecupere >= 3 Then
- chaine2 = ""
- Else
- ' si la position du premier doublon est autre que 1
- If Position = 1 Then
- ' j elimine le caractere de trop
- chaine2 = Mid(Mot_Code, PositionPaire + 2, PositionPaire + 2)
- Else
- chaine2 = Mid(Mot_Code, PositionPaire + 2, 1)
- End If
- End If
- Resultat_Paire = chaine1 & chaine2
-
- End Function
Public Function Analyse_Homonyme(ByVal NomActeur As String)
ValeurCaractere = ""
'passage en majuscule et suppression des espaces
NomActeur = UCase(NomActeur)
'NomActeur = UCase("ZARA WHITE")
NomActeur = Replace(NomActeur, " ", "")
caracteredepart = Mid(NomActeur, 1, 1)
'Elimination des voyelles du H et du W
For i = 1 To Len(NomActeur)
caractere = Mid(NomActeur, i, 1)
Select Case caractere
Case "A", "E", "I", "O", "U", "Y"
NouveauNom = NouveauNom
Case "H", "W"
NouveauNom = NouveauNom
Case Else
NouveauNom = NouveauNom + caractere
End Select
Next
'Analyse du NouveauNom
For i = 1 To Len(NouveauNom)
caractere = Mid(NouveauNom, i, 1)
Select Case caractere
Case "B", "F", "P", "V"
ValeurCaractere = ValeurCaractere & 1
Case "C", "G", "J", "K", "Q", "S", "X", "Z"
ValeurCaractere = ValeurCaractere & 2
Case "D", "T"
ValeurCaractere = ValeurCaractere & 3
Case "L"
ValeurCaractere = ValeurCaractere & 4
Case "M", "N"
ValeurCaractere = ValeurCaractere & 5
Case "R"
ValeurCaractere = ValeurCaractere & 6
End Select
Next
Mot_Code = ValeurCaractere
'si la longeur est superieure a 4 je ne garde que les 4 premiers
If Len(ValeurCaractere) >= 4 Then Mot_Code = Mid(Mot_Code, 1, 4)
'NouveauNom Codé --> Elimination des Doublons consécutifs
For i = 1 To Len(ValeurCaractere)
caractere = Mid(ValeurCaractere, i, 1)
Select Case caractere
Case "1"
' je remonte d une lettre pour verifier les eventuels doublons
If i > 1 Then
LettrePrec = Mid(Mot_Code, i - 1, 1)
valeur = LettrePrec & 1
End If
If valeur = "11" Then
PositionPaire = InStr(1, Mot_Code, valeur)
Paire (PositionPaire)
End If
Case "2"
' je remonte d une lettre pour verifier les eventuels doublons
If i > 1 Then
LettrePrec = Mid(Mot_Code, i - 1, 1)
valeur = LettrePrec & 2
End If
If valeur = "22" Then
PositionPaire = InStr(1, Mot_Code, valeur)
Paire (PositionPaire)
End If
Case "3"
' je remonte d une lettre pour verifier les eventuels doublons
If i > 1 Then
LettrePrec = Mid(Mot_Code, i - 1, 1)
valeur = LettrePrec & 3
End If
If valeur = "33" Then
PositionPaire = InStr(1, Mot_Code, valeur)
Paire (PositionPaire)
End If
Case "4"
' je remonte d une lettre pour verifier les eventuels doublons
If i > 1 Then
LettrePrec = Mid(Mot_Code, i - 1, 1)
valeur = LettrePrec & 4
End If
If valeur = "44" Then
PositionPaire = InStr(1, Mot_Code, valeur)
Paire (PositionPaire)
End If
Case "5"
' je remonte d une lettre pour verifier les eventuels doublons
If i > 1 Then
LettrePrec = Mid(Mot_Code, i - 1, 1)
valeur = LettrePrec & 5
End If
If valeur = "55" Then
PositionPaire = InStr(1, Mot_Code, valeur)
Paire (PositionPaire)
End If
Case "6"
' je remonte d une lettre pour verifier les eventuels doublons
If i > 1 Then
LettrePrec = Mid(Mot_Code, i - 1, 1)
valeur = LettrePrec & 6
End If
If valeur = "66" Then
PositionPaire = InStr(1, Mot_Code, valeur)
Paire (PositionPaire)
End If
End Select
If Resultat_Paire <> "" Then
Mot_Code = Resultat_Paire
End If
Next
ValeurCaractere = caracteredepart & Mot_Code
If Len(ValeurCaractere) > 4 Then
ValeurCaractere = Mid(ValeurCaractere, 1, 4)
Else
For i = 1 To (4 - Len(ValeurCaractere))
ValeurCaractere = ValeurCaractere & 0
Next
End If
End Function
Public Function Paire(ByVal Position As Integer)
chaine1 = ""
chaine2 = ""
Resultat_Paire = ""
' je recupere la valeur avant le premier doublon
chaine1 = Mid(Mot_Code, 1, PositionPaire)
longueurrecupere = Len(chaine1)
If longueurrecupere >= 3 Then
chaine2 = ""
Else
' si la position du premier doublon est autre que 1
If Position = 1 Then
' j elimine le caractere de trop
chaine2 = Mid(Mot_Code, PositionPaire + 2, PositionPaire + 2)
Else
chaine2 = Mid(Mot_Code, PositionPaire + 2, 1)
End If
End If
Resultat_Paire = chaine1 & chaine2
End Function
Historique
- 21 janvier 2007 12:11:44 :
- Oupss j'ai oublié de préciser que la fonction Soundex est une recherche "phonétique" sur un ou plusieurs mots. Chaque mot est codé selon un algorythme donné. il suffit ensuite de comparer les résultats obtenus pour trouver les éventuels homonynes dans la base de données.
- 22 janvier 2007 11:10:04 :
- le 22/01/2007
Y avait un bug........et j ai un peu optimisé la chose...............les tests semblent corrects...........
- 03 février 2007 20:15:43 :
- Une précision s impose........... du fait des differences de langage, (Anglais/Americain et Francais) les prononciatioins ne sont pas les mêmes. La fonction Soundex codée ici est la version Anglaise. La version Française comporte quelques différences dans la valeur des lettres. Un peu de pub maintenant ;) Cette fonction s'intègre dans un logiciel de Gestion de vidéothèque qui hormis les fonctions classiques d'ajout, modification et suppression de films comprend les fonctionnalités suivantes :
- Gestion des Prêts
- Enregistrement semi automatique des films depuis Internet (Récupérations des Acteurs, du Titre, du Résumé du film etc etc..)
- Gestion des jaquettes Vidéos et des photos d'acteurs
- Visualisation du film possible depuis l'application (WMPlayer)
- Multi Bases (Sql et Access)
- Nombreuses Statistiques et Editions.........
- Evolutions futures : Gestion des Editions via Crystal Report... pour le moment c est le bloc notes via un fichier texte......
Voila.......... je m'occupe comme je peux lol
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
base de données [ par kwed ]
bonjour à tous,Je voudrais ajouter un module de recherche sur une base de données gérée par un objet msflexgrid...En fait j'ai réussi à ressortir du t
Données Binaires de la Base de registre. [ par Steph21 ]
Avant tout, je me présente ! Je débute actuellement le VB (version 5), et j'ai déjà utilisé le VBA 97 et 2K.Passons aux choses sérieuses :)J'aimerai e
Base de données sur VB [ par HATEM ]
Je désire recevoir un exemple simple de base données developpé sue VB
Manipulation des données dans un texte !! [ par beber ]
debutant 100% voir plus !Recherche comment ouvrir un fichier contenant des variables X et Y d'une fonction. Puis d'arriver sous VB à les recuperer pou
echange de données entre executable [ par thierry ]
Bonjour,JE souhaiterais savoir s'il est possible avec VB d'échanger des infos entre programmes.exe.Exemple : Dans Un.exe j'ai un programme qui gère de
Operation sur une table avec VB [ par H.laalouj ]
Question 1:J'aimerais avoir un exemple d'acces à une table d'une base de données avec les differentes operations de manipulation de données: Ajout, Re
Echange de données entre .exe [ par BTP ]
Pblm : j'aurais besoin d'envoyer un mot sélectionné dans une application quelconque vers un dico et que ce dernier devienne actif.On m'a parlé des act
Problème d'emission de données sur un port série [ par Lolo ]
Plusieurs collègues et moi même avont constaté un bug du contrôle activeX MSComm32.ocxEn effet lors de l'envoi de données sur le port série en XOn Xof
Problème d'emission de données sur un port série [ par Lolo ]
Plusieurs collègues et moi même avont constaté un bug du contrôle activeX MSComm32.ocxEn effet lors de l'envoi de données sur le port série en XOn Xof
problème Base de données [ par Fab ]
Bonjour,Je travaille à la conception d'un outil (Systeme d'Information Territorial)d'aide à la décision. Je développe sur VB 6 et MapObject.Je suis no
|
Derniers Blogs
[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : VITESSERE : VITESSE par ossama261988
Cliquez pour lire la suite par ossama261988 RE : VITESSERE : VITESSE par ucfoutu
Cliquez pour lire la suite par ucfoutu
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|