CONVERSION D'UN NOMBRE EN "PACKED NUMBER", ET INVERSEMENT

Signaler
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
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/51342-conversion-d-un-nombre-en-packed-number-et-inversement

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
On passe de 56 lignes de code (pas de commentaires ni de passages à la ligne inutiles) à 10 lignes de code.
Y'a pas photo, ma solution est la plus courte (mais il vaudrait mieux vérifier si elle fonctionne complètement)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
j'ai parlé un peu vite oui, le code est à optimiser comme l'indique ghuysmans99. reste à voir la taille qu'il prendra alors

++
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,
"Code from WebSeb's Code Snippets"
en effet limite "snippet" = à poster sur codyx.org

j'ai mis à jour pour fusionner tes 2 sources, un peu plus conséquent, ainsi ce code peut rester ici ;)

bonne continuation
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Oops, le code que j'ai posté n'est pas bon.
Voilà la correction :

Public Function PackNum(NumberToConvert As Double, EntirePositionsCount As Integer, DecimalPositionsCount As Integer) As String
Dim TmpVal As String, Last As String * 1
Dim TranslationTable As String: TranslationTable = "{ABCDEFGHI}JKLMNOPQR"
TmpVal = String(EntirePositionsCount + DecimalPositionsCount, "0") & Abs(Fix(NumberToConvert))
TmpVal = TmpVal & Right(Round(Abs(NumberToConvert) * Int("1" & String(DecimalPositionsCount, "0"))), DecimalPositionsCount)
TmpVal = Right(TmpVal, EntirePositionsCount + DecimalPositionsCount) If NumberToConvert < 0 Then Last Mid(TranslationTable, 10 + CInt(Right(TmpVal, 1)), 1) Else Last Mid(TranslationTable, CInt(Right(TmpVal, 1)), 1)
TmpVal = Mid(TmpVal, 1, EntirePositionsCount + DecimalPositionsCount - 1) & Last
PackNum = TmpVal
End Function
Afficher les 7 commentaires