Newsgroup: it.comp.appl.access
Titolo: Euro.... in lettere

Salve... sono un neoiscritto... probabilmente il mio problema è stato già
affrontato... cmq vi sottopongo la cosa... avrei bisogno di un codice o
procedura che permetta di tradurre in lettere gli importi in euro tipo
compilazione degli assegni bancari più o meno questo
? 12,23 dovrebbe dare
dodici/23
Potete aiutarmi?

 ha scritto nel messaggio
news:H7qc8.85781$3J1.2...@news2.tin.it...


 wrote in message
news:fqrc8.72129$om6.1...@news1.tin.it...


 wrote in message
o8sc8.21198$8F6.9...@twister2.libero.it...

_______________
c'è sul sito comune un esempio (mi sembra di Federico Luciani) che scrivendo
un numero, compare il corrispondente in lettere.
Si puo' adattare per stampare bonifici...
già fatto e funziona alla perfezione...
ciao Riccardo

 ha scritto nel messaggio
news:o8sc8.21198$8F6.9...@twister2.libero.it...


Mi rispondo da solo:
Ecco il codice:
Public Function InLettere(numero As Double) As String
    Dim decine(9) As String
    Dim PrimaDecina(10) As String
    Dim Numeri(10) As String
    Numeri(1) = "uno"
    Numeri(2) = "due"
    Numeri(3) = "tre"
    Numeri(4) = "quattro"
    Numeri(5) = "cinque"
    Numeri(6) = "sei"
    Numeri(7) = "sette"
    Numeri(8) = "otto"
    Numeri(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(2) = "venti"
    decine(3) = "trenta"
    decine(4) = "quaranta"
    decine(5) = "cinquanta"
    decine(6) = "sessanta"
    decine(7) = "settanta"
    decine(8) = "ottanta"
    decine(9) = "novanta"
    Dim migliaia As Integer
    Dim centinaia As Integer
    Dim dec As Integer
    Dim interi As Integer
    Dim result As String
    migliaia = numero \ 1000
    centinaia = (numero - migliaia * 1000) \ 100
    dec = (numero - migliaia * 1000 - centinaia * 100) \ 10
    interi = (numero - migliaia * 1000 - centinaia * 100 - dec * 10)
    If migliaia = 1 Then
    result = "mille"
    Else
    If migliaia > 1 Then
    result = Numeri(migliaia) & "mila"
    End If
    End If
    If centinaia = 1 Then
    result = result & "cento"
    Else
    If centinaia > 1 Then
    result = result & Numeri(centinaia) & "cento"
    End If
    End If
    If dec = 1 Then
    result = result & PrimaDecina(interi)
    ElseIf dec > 1 And (interi = 1 Or interi = 8) Then
        result = result & Left(decine(dec), Len(decine(dec)) - 1)
        result = result & Numeri(interi)
    Else
        result = result & decine(dec) & Numeri(interi)
    End If
    InLettere = result
End Function

 Ciao e grazie!
Anche quello che ho postato sotto ...
basta sistemare la cosa...
ti mando il codice rivisto in posta.
Ciao
:)

 ha scritto nel messaggio
news:%2uc8.21786$8F6.9...@twister2.libero.it...



Perchč non lo rimandi scrivendo DOPO il quoting?
Antonio

 Grazie!
Ok adesso perň sto uscendo. Sistemo il codice stanotte o domani e te lo
mando in posta.
OK?
Ciao

 Ok adesso però sto uscendo. Sistemo il codice stanotte o domani e te lo


 Meglio se lo rimandi al NG! Grazie!One.Emmedi
Meglio se impari a rispondere dopo i messaggi precedenti. Grazie.
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

 hai ragione!
ho visto anche io questo esempio sul sito comune,
abusatene tutti!!!!!  :-)))

 non mandarlo solo a lui, ma anche a me grazie!!! 
onof...@tin.it

 ha scritto nel messaggio
news:3svc8.137$E33....@twister1.libero.it...


 > > Grazie!
Ecco di seguito il codice rivisto.
Effettivamente, come dicevi tu, sistemare tutto tutto mi ha impiegato più di
dieci minuti! :)
Credo di aver sistemato tutto; fai delle prove tu ed eventualmente dimmi se
c'è qualche problema!!
Adesso converte i numeri fino al miliardo (escluso).
Per sistemare la faccenda dei centesimi puoi scrivere una funziona
combinandola con la InLettere che trovi sotto.
Qualcosa del tipo:
= InLettere(cifra) & "//" & decimali
Da notare la soluzione Divide Et Impera con la doppia ricorsione per i
numeri più grandi di un milione! :)
Buona Giornata
AM Liapunov
---Cut---
 Public Function InLettere(numero As Double) As String
    If numero > 999999999 Then
        InLettere = "Numero troppo grande!"
        Exit Function
    End If

    Dim migliaia As Double
    Dim centinaia As Double
    Dim dec As Double
    Dim interi As Double
    Dim result As String
    Dim milioni As Integer
    migliaia = numero \ 1000
    centinaia = (numero - migliaia * 1000) \ 100
    dec = (numero - migliaia * 1000 - centinaia * 100) \ 10
    interi = (numero - migliaia * 1000 - centinaia * 100 - dec * 10)
    If migliaia = 1 Then
        result = "mille"
    ElseIf migliaia > 1 And migliaia <= 9 Then
        result = Numeri(migliaia) & "mila"
    ElseIf migliaia > 9 And migliaia < 20 Then
        result = PrimaDecina(migliaia - 10) & "mila"
    ElseIf migliaia >= 20 And migliaia < 1000 Then
        result = InLettere(CDbl(migliaia)) & "mila"
    ElseIf migliaia >= 1000 Then
        milioni = migliaia \ 1000
        If milioni = 1 Then
            result = "unmilione" & InLettere(CDbl(numero - milioni *
1000000))
            InLettere = result
            Exit Function
        Else
            result = InLettere(CDbl(milioni)) & "milioni" &
InLettere(CDbl(numero - milioni * 1000000))
            InLettere = result
            Exit Function
        End If
    End If
    If centinaia = 1 Then
        result = result & "cento"
    ElseIf centinaia > 1 And dec = 8 Then
        result = result & Numeri(centinaia) & "cent"
    ElseIf centinaia > 1 Then
        result = result & Numeri(centinaia) & "cento"
    End If
    If dec = 0 Then
        result = result & Numeri(interi)
    ElseIf dec = 1 Then
        result = result & PrimaDecina(interi)
    ElseIf dec > 1 And (interi = 1 Or interi = 8) Then
        result = result & Left(decine(dec), Len(decine(dec)) - 1)
        result = result & Numeri(interi)
    ElseIf dec > 1 Then


 wrote in message
TUIc8.3848$Zf3.1...@twister2.libero.it...

Scusa se mi intrometto, ma giusto per un controllo, su come funzionasse, ho
copiato la tua routine,
poi in debug ho scritto
?inLettere(999.25)
ma su invio mi scrive solo l'intero senza i decimali.
come mai non li riporta?
ciao Riccardo

 ciao Riccardo
Mi ero spiegato nel post con il codice:
La funzione riporta la traduzione in lettere degli interi; E' dunque di
carattere generale!
Per compilare un assegno o un bonifico o quant'altro e sufficiente comporre
la funzione in questo modo:
= InLettere(cifra) & "//" & decimali
dove decimali sarà stato opportunemente calcolato.
Dal momento che ho fatto questa funzione di fretta ieri sera non mi sono
messo a scrivere anche la procedurina per estrerre i decimali... ma è cosa
da poco...

 ciao Riccardo
Ad esempio, tanto per completare... la funzione riportata sotto fa quello
che serve.
Supponendo di avere una maschera con un contro TxtNum che contiene il numero
da convertire per l'assegno, sarà possibile scrivere compattamente e
logicamente la seguente espressione:
=InLettere([txtNum]) & "//" & Decimali([txtnum])
Public Function Decimali(numero As Double) As String
    If InStr(numero, ",") = 0 Then
        Decimali = "00"
    Else
        Decimali = Mid(numero, InStr(numero, ",") + 1, 2)
    End If
End Function

 wrote in message
gEJc8.3992$Zf3.1...@twister2.libero.it...

perfetto!
mi ero modificato quello del sito comune, ma il tuo è di piu' agevole
utilizzo.
thank's
Riccardo

 ha scritto nel messaggio
news:gEJc8.3992$Zf3.1...@twister2.libero.it...

Scusate l'intromissione
Tanto per dirne una: la funzione Replace è molto comoda quando si vogliono
evitare molte if then else nidificate.
Per esempio:
st1 = "Ottocentoottantaotto"
st1 = Replace (st1,"oo","o") restituisce "Ottocentottantaotto"
in seguito
st1 = Replace (st1,"ao","o") restituisce "Ottocentottantotto"
Che ne dite?
One.Emmedi

 ha scritto nel messaggio
news:KnLc8.2369$3s4....@news1.tin.it...


 Da cosa dipende?
Dal fatto che non scrivi DOPO il quoting!!!
Antonio

 > ti mando il codice rivisto in posta.
 Ciao
Perchè non lo posti nel NG?
Ciao Ferdinando