CODAGE ET DÉCODAGE DE NOMBRE OU DE CHIFFRE

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 20 juil. 2010 à 13:14
Crash Ov Messages postés 11 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 7 juillet 2009 - 1 nov. 2010 à 10:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52066-codage-et-decodage-de-nombre-ou-de-chiffre

Crash Ov Messages postés 11 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 7 juillet 2009
1 nov. 2010 à 10:40
Le problème vient du fait que la variable X soit de type long donc il ne peut pas contenir 002 par exemple.
Crash Ov Messages postés 11 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 7 juillet 2009
1 nov. 2010 à 08:37
Pas mal ! mais avec "10001" il retourne 101 lors du décryptage.
zulrigh Messages postés 24 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 7 juin 2014
23 juil. 2010 à 04:52
Oué c'est pas mal du tout, j'y jéteré un oeil, mais là j'ai d'autre truc à faire ...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 juil. 2010 à 13:37
Sans trop chercher à comprendre le code, après nettoyage, j'obtiens :

Option Explicit

Private Const CLE As String = "aqwzsxedcrfvtgbyhnujikolpm&é'(-è_çà)=^$ù*,;:!~#{[|`\^@]}€AQWZSXEDCRFVTGBYHNUJ'IK.OL/PM§%µš£°+"

Private Sub Command1_Click()
Dim i As Long
Dim x As Long
Dim sChar As String
Dim LongueurCle As Long
Dim Resultat As String
LongueurCle = Len(CLE)
For i = 1 To Len(Text1.Text)
sChar = Mid$(Text1.Text, i, 1)

If sChar = "," Then
Resultat = Resultat & Mid$(CLE, x + 1, 1) & "²"
ElseIf sChar = " " Then
Resultat = Resultat & Mid$(CLE, x + 1, 1) & " "
End If

If Val(Str$(x) & Val(sChar)) >= LongueurCle Then
Resultat = Resultat & Mid$(CLE, x + 1, 1)
x = Val(sChar)
Else
x = Val(Str$(x) & Val(sChar))
End If
Next
Resultat = Resultat & Mid$(CLE, x + 1, 1)
Text2.Text = Resultat
End Sub

Private Sub Command2_Click()
Dim i As Long
Dim x As Long
Dim sChar As String
Dim Resultat As String
For i = 1 To Len(Text2.Text)
sChar = Mid$(Text2.Text, i, 1)
If sChar = "²" Then
Resultat = Resultat & ","
ElseIf sChar = " " Then
Resultat = Resultat & " "
Else
For x = 1 To Len(CLE)
If Mid$(CLE, x, 1) = sChar Then
Resultat = Resultat & (x - 1)
Exit For
End If
Next
End If
Next
Text3.Text = Resultat
End Sub
zulrigh Messages postés 24 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 7 juin 2014
20 juil. 2010 à 13:32
j'ai mis 500 c'était pour avoir un maximum de caractère (fait à la rache !), mais il vaudrais mieux utiliser un tableau de longueur variable c'est juste !

Les quelques autres lignes pourrait se faire un peu plus "en live" comme tu disais, mais comme je t'ai dit c'est fait à la vas vite il y a un bout de temps déjà !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 juil. 2010 à 13:14
Dim clé As String
clé = "aqwzsxedcrfvtgbyhnujikolpm&é'(-è_çà)=^$ù*,;:!~#{[|`\^@]}¤AQWZSXEDCRFVTGBYHNUJ'IK.OL/PM§%µ¨£°+"

utilises donc un Const

Dim Max As Single
Max = Len(clé)

Pourquoi utiliser une variable décimale pour stocker un nombre de caractères ?

Dim SeRr(500)

pourquoi 500 ? pourquoi un tableau de Variant ?
Rejoignez-nous