0/5 (5 avis)
Snippet vu 12 925 fois - Téléchargée 31 fois
Private Function Crypt(ByVal strChaine As String, blnCryptage As Boolean) As String Dim I, J, K As Integer Dim strCryptKey As String Dim strLettre As String Dim strKeyLettre As String Dim intLettre As Long Dim intKeyLettre As Long Dim strResultat As String If strChaine = "" Then Crypt = "" Exit Function End If strCryptKey = "chiffrement de Vigenere" For K = 0 To 10 Step 1 strResultat = "" For I = 1 To Len(strChaine) Step 1 strLettre = Mid(strChaine, I, 1) J = I Do While J > Len(strCryptKey) J = J - Len(strCryptKey) Loop strKeyLettre = Mid(strCryptKey, J, 1) intLettre = Asc(strLettre) intKeyLettre = Asc(strKeyLettre) If blnCryptage = True Then intLettre = intLettre + (intKeyLettre * Len(strChaine)) Else intLettre = intLettre - (intKeyLettre * Len(strChaine)) End If Do While intLettre > 255 intLettre = intLettre - 255 Loop Do While intLettre < 0 intLettre = intLettre + 255 Loop strResultat = strResultat & Chr(intLettre) Next I strChaine = strResultat Next K Crypt = strResultat End Function
3 nov. 2006 à 11:53
Juste à noter aussi que dans votre exemple I et J seront considérés comme Variant.
Dim I, J, K As Integer => Seulement K est un integer
La bonne syntaxe c'est
Dim I As Integer, J As Integer, K As Integer
Ce n'est pas génant pour le fonctionnement mais c'est bon à savoir.
En tout cas, cette source m'est d'une grande utilité merci encore.
1 juin 2005 à 23:12
13 avril 2005 à 13:32
25 mars 2005 à 06:43
25 mars 2005 à 02:26
A un moment, tu fais intLettre = intLettre + (intKeyLettre * Len(strChaine))
Sachant que intLettre est un Integer et que sa valeur maximum ne peut pas dépasser 32767, si la longueur de la chaine strChaine est trop longue, tu vas arriver en dépassement de capacité.
Ca permet quand même de coder une chaine de 268 caractères standards (cas du "z" = 122)
Mais il suffit de dimensionner intLettre As Long pour augmenter la capacité
D'autre part, dans la déclaration de ta fonction, tu utilises Function Crypt(strChaine As String, ...
Ceci sous-entend que les variables sont passées à la fonction ByRef, c'est à dire que la variable que tu utilises pour fournir la chaine d'origine est modifiée par la fonction, ce qui n'est pas très pratique
--> Function Crypt(ByVal strChaine As String, ...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.