Newsgroup: it.comp.aiuto
Titolo: word 97

In una tabella devo convertire un numero (es. 25.500) in testo
(venticinquemilacinquecento), esiste un modo per farlo in automatico?
Grazie e un saluto a tutti
Oscar

(venticinquemilacinquecento), esiste un modo per farlo in automatico?
No. Devi fare una macro che te lo traduce. Un programma del genere
l'ho fatto più di vent'anni fa, a scuola... se vuoi, te lo posso rifare in
VBA...
Ma è un esercizio divertente, se ti stuzzica puoi provarci da solo.
--
Sergio Internicola.

 Sergio Internicola.
-- 
Per scrivermi ( una tua E-Mail e' sempre gradita
), togli "ALIA" dopo @
tin.it
bye-bye.

 +AD4-Ecco il programma free:
+AD4-Semplice ma potente DLL in grado di convertire in
+AD4-lettere qualsiasi
+AD4-numero. P.es. 12.34 viene convertito in +ACI-Twelve
+AD4-and Thirty Four hundredths+ACI-.
Bravo+ACEAIQAh- Ma forse Oscar avrebbe preferito averlo in italiano, magari, non
credi???
Qua di seguito ci sono due funzioncine per la conversione da cifre a lettere
e, gi+AOA- che c'ero
ho fatto anche quella per la conversione in numeri romani...
Bye+ACEAIQAh-
Sergio Internicola.
'+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACo-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
Dim Shared lettera As String
Dim Shared numero  As String
Dim Shared tris    As String
Dim Shared unita(9)       As String
Dim Shared decine(9)      As String
Dim Shared primaDecina(9) As String
'+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACo-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
Function NumLett(x As String)
'  Questa funzione converte da cifre in lettere un numero intero da 0 (zero)
a 999999999999
'
(novecentonovantanovemiliardinovecentonovantanovemilioninovecentonovantanove
milanovecentonovantanove)
   unita(0) +AD0- +ACI-zero+ACI-
   unita(1) +AD0- +ACI-uno+ACI-
   unita(2) +AD0- +ACI-due+ACI-
   unita(3) +AD0- +ACI-tre+ACI-
   unita(4) +AD0- +ACI-quattro+ACI-
   unita(5) +AD0- +ACI-cinque+ACI-
   unita(6) +AD0- +ACI-sei+ACI-
   unita(7) +AD0- +ACI-sette+ACI-
   unita(8) +AD0- +ACI-otto+ACI-
   unita(9) +AD0- +ACI-nove+ACI-
   primaDecina(0) +AD0- +ACI-dieci+ACI-
   primaDecina(1) +AD0- +ACI-undici+ACI-
   primaDecina(2) +AD0- +ACI-dodici+ACI-
   primaDecina(3) +AD0- +ACI-tredici+ACI-
   primaDecina(4) +AD0- +ACI-quattordici+ACI-
   primaDecina(5) +AD0- +ACI-quindici+ACI-
   primaDecina(6) +AD0- +ACI-sedici+ACI-
   primaDecina(7) +AD0- +ACI-diciassette+ACI-
   primaDecina(8) +AD0- +ACI-diciotto+ACI-
   primaDecina(9) +AD0- +ACI-diciannove+ACI-
   decine(1) +AD0- +ACI-dieci+ACI-
   decine(2) +AD0- +ACI-venti+ACI-
   decine(3) +AD0- +ACI-trenta+ACI-
   decine(4) +AD0- +ACI-quaranta+ACI-
   decine(5) +AD0- +ACI-cinquanta+ACI-
   decine(6) +AD0- +ACI-sessanta+ACI-
   decine(7) +AD0- +ACI-settanta+ACI-
   decine(8) +AD0- +ACI-ottanta+ACI-
   decine(9) +AD0- +ACI-novanta+ACI-
   lettera +AD0- +ACIAIg-
   numero +AD0- Right+ACQ-(String+ACQ-(12, +ACI-0+ACI-) +- LTrim(RTrim(x)), 12)
   tris +AD0- Mid+ACQ-(numero, 1, 3)
   If tris +AD4- +ACI-000+ACI- Then
      If tris +AD0- +ACI-001+ACI- Then
         lettera +AD0- lettera +- +ACI-unmiliardo+ACI-
      Else
         TraduciGruppo
         lettera +AD0- lettera +- +ACI-miliardi+ACI-
      End If
   End If
   tris +AD0- Mid+ACQ-(numero, 4, 3)
   If tris +AD4- +ACI-000+ACI- Then
      If tris +AD0- +ACI-001+ACI- Then
         lettera +AD0- lettera +- +ACI-unmilione+ACI-
      Else
         TraduciGruppo
         lettera +AD0- lettera +- +ACI-milioni+ACI-
      End If
   End If
   tris +AD0- Mid+ACQ-(numero, 7, 3)
   If tris +AD4- +ACI-000+ACI- Then
      If tris +AD0- +ACI-001+ACI- Then
         lettera +AD0- lettera +- +ACI-mille+ACI-
      Else
         TraduciGruppo
         lettera +AD0- lettera +- +ACI-mila+ACI-
      End If
   End If
      tris +AD0- Mid+ACQ-(numero, 10, 3)
   If tris +AD4- +ACI-000+ACI- Then
      TraduciGruppo
   End If
   If numero +AD0- +ACI-000000000000+ACI- Then
      lettera +AD0- unita(0)
   End If
   NumLett +AD0- lettera
End Function
'+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACo-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
Sub TraduciGruppo()
' Questa Sub +AOg- utilizzata da NumLett per tradurre ciascun gruppo di tre
cifre (posponendo poi +ACI-miliardi+ACI-, +ACI-milioni+ACI-, +ACI-mila+ACI-, ecc.)
   If Mid+ACQ-(tris, 1, 1) +AD4- 0 Then
      If Mid+ACQ-(tris, 1, 1) +AD4- 1 Then
         lettera +AD0- lettera +- unita(Val(Mid+ACQ-(tris, 1, 1)))
      End If
      lettera +AD0- lettera +- +ACI-cento+ACI-
   End If
   If Val(Mid+ACQ-(tris, 2, 2)) +AD4- 9 And Val(Mid+ACQ-(tris, 2, 2)) +ADw- 20 Then
      lettera +AD0- lettera +- primaDecina(Val(Mid+ACQ-(tris, 3, 1)))
      Exit Sub
   End If
   If Val(Mid+ACQ-(tris, 2, 1)) +AD4- 1 Then
      lettera +AD0- lettera +- decine(Val(Mid+ACQ-(tris, 2, 1)))
      If Mid+ACQ-(tris, 3, 1) +AD0- +ACI-1+ACI- Or Mid+ACQ-(tris, 3, 1) +AD0- +ACI-8+ACI- Then
         lettera +AD0- Left+ACQ-(lettera, Len(lettera) - 1)
      End If
   End If
   If Mid+ACQ-(tris, 3, 1) +AD4- +ACI-0+ACI- Then
      lettera +AD0- lettera +- unita(Val(Mid+ACQ-(tris, 3, 1)))
   End If
End Sub
'+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACo-
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
Function NumRomani(x As String)
' Questa Function converte un numero da cifre arabe a numeri romani da 1 a
tremilanovecentonovantanove
' +AOg- stata usata per scrivere l'anno di una data in numeri romani...
   numero +AD0- Right(+ACI-000000000000+ACI- +- LTrim(RTrim(x)), 12)
   lettera +AD0- +ACIAIg-
   Select Case Mid(numero, 9, 1)
      Case +ACI-0+ACI-, +ACI-1+ACI-, +ACI-2+ACI-, +ACI-3+ACI-
         lettera +AD0- lettera +- String(Val(Mid(numero, 9, 1)), +ACI-M+ACI-)
      Case Else
   End Select
   Select Case Mid(numero, 10, 1)
      Case +ACI-0+ACI-, +ACI-1+ACI-, +ACI-2+ACI-, +ACI-3+ACI-
         lettera +AD0- lettera +- String(Val(Mid(numero, 10, 1)), +ACI-C+ACI-)
      Case +ACI-4+ACI-
         lettera +AD0- lettera +- +ACI-CD+ACI-
      Case +ACI-5+ACI-, +ACI-6+ACI-, +ACI-7+ACI-, +ACI-8+ACI-
         lettera +AD0- lettera +- +ACI-D+ACI- +- String(Val(Mid(numero, 10, 1)) - 5, +ACI-C+ACI-)
      Case +ACI-9+ACI-
         lettera +AD0- lettera +- +ACI-CM+ACI-
      Case Else
   End Select
   Select Case Mid(numero, 11, 1)
      Case +ACI-0+ACI-, +ACI-1+ACI-, +ACI-2+ACI-, +ACI-3+ACI-
         lettera +AD0- lettera +- String(Val(Mid(numero, 11, 1)), +ACI-X+ACI-)
      Case +ACI-4+ACI-
         lettera +AD0- lettera +- +ACI-XL+ACI-
      Case +ACI-5+ACI-, +ACI-6+ACI-, +ACI-7+ACI-, +ACI-8+ACI-
         lettera +AD0- lettera +- +ACI-L+ACI- +- String(Val(Mid(numero, 11, 1)) - 5, +ACI-X+ACI-)
      Case +ACI-9+ACI-
         lettera +AD0- lettera +- +ACI-XC+ACI-
      Case Else
   End Select
   Select Case Mid(numero, 12, 1)
      Case +ACI-0+ACI-, +ACI-1+ACI-, +ACI-2+ACI-, +ACI-3+ACI-
         lettera +AD0- lettera +- String(Val(Mid(numero, 12, 1)), +ACI-I+ACI-)
      Case +ACI-4+ACI-
         lettera +AD0- lettera +- +ACI-IV+ACI-
      Case +ACI-5+ACI-, +ACI-6+ACI-, +ACI-7+ACI-, +ACI-8+ACI-
         lettera +AD0- lettera +- +ACI-V+ACI- +- String(Val(Mid(numero, 12, 1)) - 5, +ACI-I+ACI-)
      Case +ACI-9+ACI-
         lettera +AD0- lettera +- +ACI-IX+ACI-
      Case Else
   End Select
   If lettera +AD0- +ACIAIg- Then lettera +AD0- +ACIAKgAqACoAKgAqACI-
   NumRomani +AD0- lettera
End Function

 Sergio Internicola.
-- 
Per scrivermi ( una tua E-Mail e' sempre
graditaX-Mozilla-Status: 0009 @
tin.it
bye-bye.




Questo e' un esempio di quello che tutti gli utenti di Agent possono
vedere del tuo sicuramente interessante articolo.
Dovresti cortesemente ripostarlo, settando opportunamente il tuo OE in
modo testo. 
In tal modo tutti ti potranno leggere.
Grazie.
Paolo

...






In tal modo tutti ti potranno leggere.
Grazie della segnalazione... provvederò...
--
Sergio Internicola

...


Riecco le funzioncine (spero che si leggano bene...):
'***************************************************************************
***************
Dim Shared lettera As String
Dim Shared numero As String
Dim Shared tris As String
Dim Sharde unita(9) As String
Dim Shared decine(9) As String
Dim Shared primaDecina(9) As String
'***************************************************************************
***************
Function NumLett(x As String)
'  Questa funzione converte da cifre in lettere un numero intero da 0 (zero)
a 999999999999
'
(novecentonovantanovemiliardicentoquarantasettemilioniquattrocentoottantatre
milaseicentoquarantasette)
   unita(0) = "zero"
   unita(1) = "uno"
   unita(2) = "due"
   unita(3) = "tre"
   unita(4) = "quattro"
   unita(5) = "cinque"
   unita(6) = "sei"
   unita(7) = "sette"
   unita(8) = "otto"
   unita(9) = "nove"
   primaDecina(0) = "dieci"
   primaDecina(1) = "undici"
   primaDecina(2) = "dodici"
   primaDecina(3) = "tredici"
   primaDecina(4) = "quattordici"
   primaDecina(5) = "quindici"
   primaDecina(6) = "sedici"
   primaDecina(7) = "diciassette"
   primaDecina(8) = "diciotto"
   primaDecina(9) = "diciannove"
   decine(1) = "dieci"
   decine(2) = "venti"
   decine(3) = "trenta"
   decine(4) = "quaranta"
   decine(5) = "cinquanta"
   decine(6) = "sessanta"
   decine(7) = "settanta"
   decine(8) = "ottanta"
   decine(9) = "novanta"
   lettera = ""
   numero = Right$(String$(12, "0") + LTrim(RTrim(x)), 12)
   tris = Mid$(numero, 1, 3)
   If tris > "000" Then
      If tris = "001" Then
         lettera = lettera + "unmiliardo"
      Else
         TraduciGruppo
         lettera = lettera + "miliardi"
      End If
   End If
   tris = Mid$(numero, 4, 3)
   If tris > "000" Then
      If tris = "001" Then
         lettera = lettera + "unmilione"
      Else
         TraduciGruppo
         lettera = lettera + "milioni"
      End If
   End If
   tris = Mid$(numero, 7, 3)
   If tris > "000" Then
      If tris = "001" Then
         lettera = lettera + "mille"
      Else
         TraduciGruppo
         lettera = lettera + "mila"
      End If
   End If
      tris = Mid$(numero, 10, 3)
   If tris > "000" Then
      TraduciGruppo
   End If
   If numero = "000000000000" Then
      lettera = unita(0)
   End If
   NumLett = lettera
End Function
'***************************************************************************
***************
Sub TraduciGruppo()
' Questa sub viene utilizzata da NumLett per tradurre un singolo gruppo
' di tre cifre. A ciascun gruppo verrà poi aggiunto il suffisso "miliardi",
' "milioni", ecc.
   If Mid$(tris, 1, 1) > 0 Then
      If Mid$(tris, 1, 1) > 1 Then
         lettera = lettera + unita(Val(Mid$(tris, 1, 1)))
      End If
      lettera = lettera + "cento"
   End If
   If Val(Mid$(tris, 2, 2)) > 9 And Val(Mid$(tris, 2, 2)) < 20 Then
      lettera = lettera + primaDecina(Val(Mid$(tris, 3, 1)))
      Exit Sub
   End If
   If Val(Mid$(tris, 2, 1)) > 1 Then
      lettera = lettera + decine(Val(Mid$(tris, 2, 1)))
      If Mid$(tris, 3, 1) = "1" Or Mid$(tris, 3, 1) = "8" Then
         lettera = Left$(lettera, Len(lettera) - 1)
      End If
   End If
   If Mid$(tris, 3, 1) > "0" Then
      lettera = lettera + unita(Val(Mid$(tris, 3, 1)))
   End If
End Sub
'***************************************************************************
***************
Function NumRomani(x As String)
' Questa funzione traduce un numero in cifre arabe in un numero in cifre
romane
   numero = Right("000000000000" + LTrim(RTrim(x)), 12)
   lettera = ""
   Select Case Mid(numero, 9, 1)
      Case "0", "1", "2", "3"
         lettera = lettera + String(Val(Mid(numero, 9, 1)), "M")
      Case "4"
         lettera = lettera + "MK"
      Case "5", "6", "7", "8"
         lettera = lettera + "K" + String(Val(Mid(numero, 9, 1)) - 5, "M")
      Case "9"
         lettera = lettera + "MW"
      Case Else
   End Select
   Select Case Mid(numero, 10, 1)
      Case "0", "1", "2", "3"
         lettera = lettera + String(Val(Mid(numero, 10, 1)), "C")
      Case "4"
         lettera = lettera + "CD"
      Case "5", "6", "7", "8"
         lettera = lettera + "D" + String(Val(Mid(numero, 10, 1)) - 5, "C")
      Case "9"
         lettera = lettera + "CM"
      Case Else
   End Select
   Select Case Mid(numero, 11, 1)
      Case "0", "1", "2", "3"
         lettera = lettera + String(Val(Mid(numero, 11, 1)), "X")
      Case "4"
         lettera = lettera + "XL"
      Case "5", "6", "7", "8"
         lettera = lettera + "L" + String(Val(Mid(numero, 11, 1)) - 5, "X")
      Case "9"
         lettera = lettera + "XC"
      Case Else
   End Select
   Select Case Mid(numero, 12, 1)
      Case "0", "1", "2", "3"
         lettera = lettera + String(Val(Mid(numero, 12, 1)), "I")
      Case "4"
         lettera = lettera + "IV"
      Case "5", "6", "7", "8"
         lettera = lettera + "V" + String(Val(Mid(numero, 12, 1)) - 5, "I")
      Case "9"
         lettera = lettera + "IX"
      Case Else
   End Select
   If lettera = "" Then lettera = "*****"
   NumRomani = lettera
End Function
'***************************************************************************
***************
e questo è un esempio di applicazione:
'***************************************************************************
***************
1998    MCMXCVIII  millenovecentonovantotto
1999    MCMXCIX    millenovecentonovantanove
2000    MM                duemila
1492    MCDXCII      millequattrocentonovantadue
0           *****                zero
1           I                       uno
2           II                      due
3           III                     tre
4           IV                    quattro
5           V                     cinque
6           VI                    sei
7           VII                   sette
8           VIII                  otto
9           IX                    nove
10         X                     dieci
11         XI                    undici
12         XII                   dodici
13         XIII                  tredici
14         XIV                 quattordici
15         XV                  quindici
16         XVI                 sedici
17         XVII                diciassette
18         XVIII               diciotto
19         XIX                 diciannove
20         XX                  venti
'***************************************************************************
***************
 --
Sergio Internicola

 ha
scritto:
->  [...] 
-> Qua di seguito ci sono due funzioncine per la conversione da cifre a
lettere
-> e, gi+AOA- che c'ero
-> ho fatto anche quella per la conversione in numeri romani...
-> 
-> Bye+ACEAIQAh-
-> Sergio Internicola.
-> 
->
'+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq-
->
+ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACo-
-> [...]
Carinissima!
Ti dispiacerebbe, traduzione per traduzione, tradurre anche il tuo
messaggio?  ;-))))))))))))))))))
Grasssssie!
-----------------------
Per rispondere rimuovere ~NO.SPAM~ dall'indirizzo E-Mail
To reply remove ~NO.SPAM~ from E-Mail address
Name: Pierluigi Gargiulo
Address: Ancona, Italy
E-Mail: 
plg...@ntt.it
-----------------------

Il giorno Thu, 17 Dec 1998 18:17:40 GMT plg.mp@~NO.SPAM~
ntt.it
 (Pierluigi &
Marina) ha scritto:
-> [...]
OK! Vedo che gia' ti hanno segnalato la cosa (e che hai... tradotto)!
Scusa, quindi, la duplicazione. Ciao e ri-grazie.


 >ConvertNum 1.0
--
