Le commun de deux mots

Résolu
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008 - 27 déc. 2007 à 10:09
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008 - 27 déc. 2007 à 16:29
bonjour a la chere communauté VBFRANCE

SVP, je veux savoir s'il y a une fonction qui determine les lettres communes entre deux mot

exemple: argentine#bresil
il y a le r et le i qui sont communes

et merci

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 déc. 2007 à 13:37
possible de faire :

Function GetCommonLetters(ByRef vsWord1 As String, ByRef vsWord2 As String) As String
Dim xbTab(1 To 255) As Byte
Dim xbWord() As Byte
Dim nChar As Byte
Dim i As Long
xbWord = StrConv(LCase$(vsWord1), vbFromUnicode)
For i = 0 To UBound(xbWord)
xbTab(xbWord(i)) = 1
Next i

xbWord = StrConv(LCase$(vsWord2), vbFromUnicode)
For i = 0 To UBound(xbWord)
nChar = xbWord(i)
If xbTab(nChar) = 1 Then
GetCommonLetters = GetCommonLetters & Chr$(nChar)
xbTab(nChar) = 2
End If
Next i
End Function


MsgBox GetCommonLetters("Argentine", "BRESIL")
donnera REI
3
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
27 déc. 2007 à 14:33
Tu peux essayer un truc du genre :

Function LettresCommunes(byval Mot1 As String, byval Mot2 As String) As String
Dim i As Long, j As Long, Ret As String, C As String

Mot1 = LCase$(Mot1)
Mot2 = LCase$(Mot2)
For i = 1 To Len(Mot1)
C = Mid$(Mot1, i ,1)
If Instr(Mot2, C) <> 0 And Instr(Ret, C) = 0 Then
Ret = Ret & C
End If
Next
LettresCommunes = Ret
End Function

A utiliser comme ça : Debug.Print LettresCommunes("Argentine","Bresil")
Devrait produire la chaine : "rei"

Par contre, attention au problème des caractères accentués : dans ma fonction e, é, è, ë et ê sont considérés comme 5 lettres différentes ! A voir si ce comportement te convient (dans le cas contraire, il faudra faire une petite conversion de C avant le If).
Par contre je ne distingue pas les majuscules des minuscules, à voir si cela te convient aussi (dans le cas contraire, juste à supprimer les deux lignes appelant LCase$() pour ce cas)
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 déc. 2007 à 15:11
Une autre façon

Private Sub Command3_Click()
  mot1 = "ARGENTINE"
  mot2 = "BRESIL"
  For I = 1 To Len(mot1)
    lettre = Mid(mot1, I, 1)
    If mot2 Like "*" & lettre & "*" Then
      If Not kifkif Like "*" & lettre & "*" Then
        kifkif = kifkif & lettre
      End If
    End If
  Next
  MsgBox kifkif
End Sub
3
divadav Messages postés 94 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 22 janvier 2009 2
27 déc. 2007 à 10:13
Salut !

Hé non, tout n'existe pas sous forme de fonction toute faite !
Il va falloir que tu code toi même cette fonction je pense...
Pour optimiser un peu (si les mots sont obligatoirements en français), alors ne perd pas de vue la Fréquence d'apparition des lettres en français !

<hr size="2" width="100%" />Divad
Techniques de Web Design, Traductions d'articles sur le Web Design, Astuces .Net
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
27 déc. 2007 à 10:16
merci divadav
je dois donc codé ouuuuuuuuf

merci surtout pour l'article (interressant)
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
27 déc. 2007 à 13:52
merci beaucoup Renfield
je vais l'essayer
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
27 déc. 2007 à 14:35
Oups !! Me suis croisé avec Renfield ! Autre technique ...
0
argentin7 Messages postés 125 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 14 juillet 2008
27 déc. 2007 à 16:29
ouaaaaaaaw merci a vous tous
0
Rejoignez-nous