cs_pit1
Messages postés32Date d'inscriptiondimanche 15 juin 2003StatutMembreDernière intervention17 janvier 2007 25 nov. 2006 à 18:39
Si c'est pour optimiser la vitesse, essaye une fois (j'ai enlevé la conversion string->long et long->string à chaque itération):
Function DecToB26(ByVal Value As String) As String
If Not IsNumeric(Value) Then Return Value
Dim v1 As Long
Dim Resultat As String = ""
v1=int(Value)
Do While v1 > 0
Resultat = chr$((Value Mod 26)+65) & Resultat
v1 = clng(v1 / 26)
Loop
Return Resultat
End Function
perceval_59
Messages postés18Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention17 septembre 2020 25 nov. 2006 à 13:44
Merci .. vérifié, ce n'est pas flagrant mais sur une boucle test de 2M j'obtient 49s avec constante et 44s avec chr asc
par contre juste une petite modi a ton code pour que ca marche:
'Decimal vers Hexavigesimal windows
Function DecToB26(ByVal Value As String) As String
If Not IsNumeric(Value) Then Return Value
Value = Value -1
Dim v1 As Long
Dim Resultat As String = ""
Do While (Value >= 0)
v1 = (Value Mod 26)
Value = Int(Value / 26) - 1
Resultat = Mid$(Chaine26, v1 + 1, 1) & Resultat
Loop
Return Resultat
End Function
25 nov. 2006 à 18:39
Function DecToB26(ByVal Value As String) As String
If Not IsNumeric(Value) Then Return Value
Dim v1 As Long
Dim Resultat As String = ""
v1=int(Value)
Do While v1 > 0
Resultat = chr$((Value Mod 26)+65) & Resultat
v1 = clng(v1 / 26)
Loop
Return Resultat
End Function
25 nov. 2006 à 13:44
par contre juste une petite modi a ton code pour que ca marche:
Resultat = Mid$(Chaine26, 0 + v1, 1) & Resultat
devient Resultat = chr$(v1+65) & Resultat
v2 = InStr(1, Chaine26, Mid$(MyString2, i, 1))
devient v2 = asc(Mid$(MyString2, i, 1)))-64
sinon j'ai viré les $ .... faute d'euros je prefere rien mettre ;)
24 nov. 2006 à 20:29
Resultat = Mid$(Chaine26, 0 + v1, 1) & Resultat
devient Resultat = chr$(v1+65) & Resultat
v2 = InStr(1, Chaine26, Mid$(MyString2, i, 1))
devient v2 = asc(Mid$(MyString2, i, 1)))-65
Cela devrait marcher, sans l'avoir testé!
24 nov. 2006 à 20:26
ca marche impec (je vien de tester avec une boucle sur 100000 et pas d'erreur.
je desesperai depuis deux jours:)
encore merci
24 nov. 2006 à 07:47
'Decimal vers Hexavigesimal windows
Function DecToB26(ByVal Value As String) As String
If Not IsNumeric(Value) Then Return Value
Value = Value -1
Dim v1 As Long
Dim Resultat As String = ""
Do While (Value >= 0)
v1 = (Value Mod 26)
Value = Int(Value / 26) - 1
Resultat = Mid$(Chaine26, v1 + 1, 1) & Resultat
Loop
Return Resultat
End Function
Cela fonctionne correctement chez moi
A+