Chaine de caractères

Résolu
clovis23 Messages postés 8 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 8 août 2005 - 17 août 2004 à 09:26
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 18 août 2004 à 10:34
Bjr
Je veux ds un champ de saisi, saisir un mot quelconque
(par exemple:FACE) et avec une correspondance alphabétique
(a=1 ,b=2, c=3,d=4, e=5 ,f=6) avoir un resultat qui est un chiffre compris entre 1 et 9 représentant la somme des correspondance (ds notre cas 6+1+3+5=15 réduit encore à 1+5=6)

Merci

6 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
18 août 2004 à 09:13
Note sur le complément à 9 :

Tout nombre divible par 9 te renvoie 0 quand tu fais (Nombre Mod 9). Or la somme des chiffres d'un nombre divible par 9 est ... 9 !

Il faut légèrement adapter ton code.

Dim i
Dim r
r = 0
For i = 1 To Len(Text1.Text)
r = r + Asc(UCase(Mid$(Text1.Text, i, 1))) - 64
Next
If r Mod 9 Then
    MsgBox (r Mod 9)
Else
    MsgBox 9
End If


Mais l'astuce du complément à 9 était pas mal ... bien plus rapide en fait que mon précédent code. Bien joué !

Manu
3
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
17 août 2004 à 09:32
fais toi deja un tableau de concordance Lettre - Chiffre

It@li@
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
17 août 2004 à 09:47
Desolé on peut le faire sans tableau :

TaValeur=CorrespondanceR("m")

-----------------------------------------------------------------------------------
Function CorrespondanceR(ByVal Col As String) As Integer
Col = UCase(Col)

CorrespondanceR = Asc(Col) - 64
If Len(Col) = 2 Then
CorrespondanceR = 26 * CorrespondanceR + Asc(Mid(Col, 2, 1)) - 64
End If
End Function
-----------------------------------------------------------------------------------
It@li@
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
17 août 2004 à 14:00
J'ai réutilisé la fonction de ITALIA, et j'y ai ajouté le reste (on ne va pas réinventer la roue, surtout si elle est bien faîte).

Le texte qu'on "calcule" ici est dans Text1.Text
Un p'tit bouton doit être ajouté pour gérer l'évenement et hop ... çà fonctionne !

Private Sub Command1_Click()
Dim sChiffre As String
Dim i As Long
Dim result As Long

sChiffre = ValeurChaine(Text1.Text)

While Len(sChiffre) > 1
    result = 0
    For i = 1 To Len(sChiffre)
        result = result + Val(Mid(sChiffre, i, 1))
    Next i
    sChiffre = CStr(result)
Wend
MsgBox sChiffre
End Sub

Function ValeurChaine(s As String) As String
Dim i As Long
Dim resultat As Long

    resultat = 0
    For i = 1 To Len(s)
        resultat = resultat + CorrespondanceR(Mid(s, i, 1))
    Next i

ValeurChaine = CStr(resultat)
End Function

Function CorrespondanceR(ByVal Col As String) As Integer
Col = UCase(Col)
CorrespondanceR = Asc(Col) - 64
If Len(Col) = 2 Then
CorrespondanceR = 26 * CorrespondanceR + Asc(Mid(Col, 2, 1)) - 64
End If
End Function



Manu
0

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

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
17 août 2004 à 17:35
Pourquoi ne pas utiliser tout bêtement le complément à 9 ?

Ce tout tit bout de code fait la même chose en + simple :

Dim i
Dim r

r = 0
For i = 1 To Len(Text1)
r = r + Asc(UCase(Mid$(Text1, i, 1))) - 64
Next
MsgBox r & " = " & r Mod 9


Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
18 août 2004 à 10:34
Exact econs, j'avais zappé ce cas.

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
Rejoignez-nous