CODAGE ET DÉCODAGE DE NOMBRE OU DE CHIFFRE

Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
- - Dernière réponse : 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

Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
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 ?
zulrigh
Messages postés
24
Date d'inscription
samedi 10 janvier 2009
Statut
Membre
Dernière intervention
7 juin 2014
-
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
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
-
Oué c'est pas mal du tout, j'y jéteré un oeil, mais là j'ai d'autre truc à faire ...
Crash Ov
Messages postés
11
Date d'inscription
jeudi 20 octobre 2005
Statut
Membre
Dernière intervention
7 juillet 2009
-
Pas mal ! mais avec "10001" il retourne 101 lors du décryptage.