border
VB 6
 
 
  #1 (permalink)  
Antiguo 15-08-2012, 15:01:54
Avatar de leosantafesino
Gran Participación en el Foro
 
Registrado: abr 2007
Ubicación: Santa Fe Capital
Posts: 107
Créditos: 3.509
leosantafesino Valoración +2
Predeterminado Pasar de número a letras.

Hola muchachada! Manada programadora de VB6 ajaja (como lo llamo yo cariñosamente). Todo bien?

Quisiera saber si encontraron por algún lado alguna rutina para pasar de número a texto. Yo lo unico que encontré fué un OCX muy claro y facil de usar pero cuando hace la conversión pone la palabra "peso" o "pesos" en el medio, y no necesito eso. Necesito que solamente esté el texto convertido.

Cuidensé y anden bien.
Abrazo!
__________________
Santa Fe es de UNIÓN.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2 (permalink)  
Antiguo 15-08-2012, 17:36:56
Gran Participación en el Foro
 
Registrado: ago 2010
Posts: 134
Créditos: 3.557
Liudex Aun no valorado
Cool Re: Pasar de número a letras.

Bueno prueba este codigo, ve si te funciona, es el que yo uso..

Código:
Public Sub Convertir()

    Dim sValor As String, siValor As Single

    Dim i, r As Single

    sValor = Int(TxtMonto)

    TxtMontoL = Val(Replace(sValor, ",", "."))

    i = Int(Val(TxtMonto))

    r = CDbl((TxtMonto - i) * 100)

    Num2Text (TxtMonto)

    If r > 0 Then

        TxtMontoL = TxtMontoL.Text & " CON " + Num2Text(r) + " CENTIMOS"

    End If

End Sub

Public Function Num2Text(ByVal value As Double) As String

    value = Int(value)

    Select Case value

        Case 0
            Num2Text = "CERO"

        Case 1
            Num2Text = "UN"

        Case 2
            Num2Text = "DOS"

        Case 3
            Num2Text = "TRES"

        Case 4
            Num2Text = "CUATRO"

        Case 5
            Num2Text = "CINCO"

        Case 6
            Num2Text = "SEIS"

        Case 7
            Num2Text = "SIETE"

        Case 8
            Num2Text = "OCHO"

        Case 9
            Num2Text = "NUEVE"

        Case 10
            Num2Text = "DIEZ"

        Case 11
            Num2Text = "ONCE"

        Case 12
            Num2Text = "DOCE"

        Case 13
            Num2Text = "TRECE"

        Case 14
            Num2Text = "CATORCE"

        Case 15
            Num2Text = "QUINCE"

        Case Is < 20
            Num2Text = "DIECI" & Num2Text(value - 10)

        Case 20
            Num2Text = "VEINTE"

        Case Is < 30
            Num2Text = "VEINTI" & Num2Text(value - 20)

        Case 30
            Num2Text = "TREINTA"

        Case 40
            Num2Text = "CUARENTA"

        Case 50
            Num2Text = "CINCUENTA"

        Case 60
            Num2Text = "SESENTA"

        Case 70
            Num2Text = "SETENTA"

        Case 80
            Num2Text = "OCHENTA"

        Case 90
            Num2Text = "NOVENTA"

        Case Is < 100
            Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)

        Case 100
            Num2Text = "CIEN"

        Case Is < 200
            Num2Text = "CIENTO " & Num2Text(value - 100)

        Case 200, 300, 400, 600, 800
            Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"

        Case 500
            Num2Text = "QUINIENTOS"

        Case 700
            Num2Text = "SETECIENTOS"

        Case 900
            Num2Text = "NOVECIENTOS"

        Case Is < 1000
            Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)

        Case 1000
            Num2Text = "MIL"

        Case Is < 2000
            Num2Text = "MIL " & Num2Text(value Mod 1000)

        Case Is < 1000000
            Num2Text = Num2Text(Int(value \ 1000)) & " MIL"

            If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)

        Case 1000000
            Num2Text = "UN MILLON"

        Case Is < 2000000
            Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)

        Case Is < 1000000000000#
            Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "

            If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)

        Case 1000000000000#
            Num2Text = "UN BILLON"

        Case Is < 2000000000000#
            Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

        Case Else
            Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"

            If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

    End Select

    If value = 1 Then

        TxtMontoL = Num2Text

    Else

        TxtMontoL = Num2Text

    End If

End Function
__________________
Liudex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3 (permalink)  
Antiguo 16-08-2012, 03:50:51
Avatar de leosantafesino
Gran Participación en el Foro
 
Registrado: abr 2007
Ubicación: Santa Fe Capital
Posts: 107
Créditos: 3.509
leosantafesino Valoración +2
Predeterminado Re: Pasar de número a letras.

Cita:
Empezado por Liudex Ver Mensaje
Bueno prueba este codigo, ve si te funciona, es el que yo uso..

Código:
Public Sub Convertir()

    Dim sValor As String, siValor As Single

    Dim i, r As Single

    sValor = Int(TxtMonto)

    TxtMontoL = Val(Replace(sValor, ",", "."))

    i = Int(Val(TxtMonto))

    r = CDbl((TxtMonto - i) * 100)

    Num2Text (TxtMonto)

    If r > 0 Then

        TxtMontoL = TxtMontoL.Text & " CON " + Num2Text(r) + " CENTIMOS"

    End If

End Sub

Public Function Num2Text(ByVal value As Double) As String

    value = Int(value)

    Select Case value

        Case 0
            Num2Text = "CERO"

        Case 1
            Num2Text = "UN"

        Case 2
            Num2Text = "DOS"

        Case 3
            Num2Text = "TRES"

        Case 4
            Num2Text = "CUATRO"

        Case 5
            Num2Text = "CINCO"

        Case 6
            Num2Text = "SEIS"

        Case 7
            Num2Text = "SIETE"

        Case 8
            Num2Text = "OCHO"

        Case 9
            Num2Text = "NUEVE"

        Case 10
            Num2Text = "DIEZ"

        Case 11
            Num2Text = "ONCE"

        Case 12
            Num2Text = "DOCE"

        Case 13
            Num2Text = "TRECE"

        Case 14
            Num2Text = "CATORCE"

        Case 15
            Num2Text = "QUINCE"

        Case Is < 20
            Num2Text = "DIECI" & Num2Text(value - 10)

        Case 20
            Num2Text = "VEINTE"

        Case Is < 30
            Num2Text = "VEINTI" & Num2Text(value - 20)

        Case 30
            Num2Text = "TREINTA"

        Case 40
            Num2Text = "CUARENTA"

        Case 50
            Num2Text = "CINCUENTA"

        Case 60
            Num2Text = "SESENTA"

        Case 70
            Num2Text = "SETENTA"

        Case 80
            Num2Text = "OCHENTA"

        Case 90
            Num2Text = "NOVENTA"

        Case Is < 100
            Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)

        Case 100
            Num2Text = "CIEN"

        Case Is < 200
            Num2Text = "CIENTO " & Num2Text(value - 100)

        Case 200, 300, 400, 600, 800
            Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"

        Case 500
            Num2Text = "QUINIENTOS"

        Case 700
            Num2Text = "SETECIENTOS"

        Case 900
            Num2Text = "NOVECIENTOS"

        Case Is < 1000
            Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)

        Case 1000
            Num2Text = "MIL"

        Case Is < 2000
            Num2Text = "MIL " & Num2Text(value Mod 1000)

        Case Is < 1000000
            Num2Text = Num2Text(Int(value \ 1000)) & " MIL"

            If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)

        Case 1000000
            Num2Text = "UN MILLON"

        Case Is < 2000000
            Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)

        Case Is < 1000000000000#
            Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "

            If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)

        Case 1000000000000#
            Num2Text = "UN BILLON"

        Case Is < 2000000000000#
            Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

        Case Else
            Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"

            If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

    End Select

    If value = 1 Then

        TxtMontoL = Num2Text

    Else

        TxtMontoL = Num2Text

    End If

End Function
Hola LIUDEX, gracias por el pedaso de código. Lo probé rápido en el trabajo y funcionó excelente. Ahora estoy viendo que cambios le tengo que realizar para poder utilizarlo acá en mi casa para un proyecto que tengo hecho en donde tengo varias cajas de texto con números para convertir. Cuando tenga algo más o menos hecho vuelvo. Saludos
__________________
Santa Fe es de UNIÓN.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4 (permalink)  
Antiguo 17-08-2012, 18:03:33
Buena Participación en el Foro
 
Registrado: jun 2012
Ubicación: Chile
Posts: 58
Créditos: 3.048
yayita2108 Aun no valorado
Contactar con yayita2108 a través de MSN
Predeterminado Re: Pasar de número a letras.

prueba este tambien te puede servir


Código:
Function MontoEscrito(numero As Long) As String
Dim Palabra As String
Dim CMi As Long
Dim DMi As Long
Dim UMi As Long
Dim Cm As Long
Dim Dm As Long
Dim Um As Long
Dim c As Long
Dim d As Long
Dim U As Long
Dim pU
Dim pd
Dim PC
Dim Pe

Palabra = ""
If numero > 0 Then
    CMi = (numero) \ 100000000
    DMi = (numero - (CMi * 100000000)) \ 10000000
    UMi = (numero - (DMi * 10000000 + CMi * 100000000)) \ 1000000
    Cm = (numero - (UMi * 1000000 + DMi * 10000000 + CMi * 100000000)) \ 100000
    Dm = (numero - (Cm * 100000 + UMi * 1000000 + DMi * 10000000 + CMi * 100000000)) \ 10000
    Um = (numero - (Dm * 10000 + Cm * 100000 + UMi * 1000000 + DMi * 10000000 + CMi * 100000000)) \ 1000
    c = (numero - (Um * 1000 + Dm * 10000 + Cm * 100000 + UMi * 1000000 + DMi * 10000000 + CMi * 100000000)) \ 100
    d = (numero - (c * 100 + Um * 1000 + Dm * 10000 + Cm * 100000 + UMi * 1000000 + DMi * 10000000 + CMi * 100000000)) \ 10
    U = (numero - (d * 10 + c * 100 + Um * 1000 + Dm * 10000 + Cm * 100000 + UMi * 1000000 + DMi * 10000000 + CMi * 100000000)) \ 1
    pU = Array("Cero ", "Un ", "Dos ", "Tres ", "Cuatro ", "Cinco ", "Seis ", "Siete ", "Ocho ", "Nueve ")
    pd = Array("", "Diez ", "Veinte ", "Treinta ", "Cuarenta ", "Cincuenta ", "Sesenta ", "Setenta ", "Ochenta ", "Noventa ")
    PC = Array("Cien ", "Ciento ", "Doscientos ", "Trecientos ", "Cuatrocientos ", "Quinientos ", "Seiscientos ", "Setecientos ", "Ochocientos ", "Novecientos ")
    Pe = Array("", "Once ", "Doce ", "Trece ", "Catorce ", "Quince ")
    If U > 0 Then
        Palabra = pU(U)
    End If
    If d > 0 Then
        If U > 0 Then
            Palabra = pd(d) & "y " & Palabra
        Else
            Palabra = pd(d) & Palabra
        End If
    End If
    If ((d * 10) + U) > 10 And ((d * 10) + U) < 16 Then
        Palabra = Pe(U)
    End If
    If c > 0 Then
        If c = 1 And d = 0 And U = 0 Then
            Palabra = PC(0) & Palabra
        Else
            Palabra = PC(c) & Palabra
        End If
    End If
    If Um > 0 And Dm = 0 Then
        Palabra = pU(Um) & "Mil " & Palabra
    End If
    If ((Dm * 10) + Um) > 10 And ((Dm * 10) + Um) < 16 Then
        Palabra = Pe(Um) & "Mil " & Palabra
    Else
        If Dm > 0 Then
            If Um > 0 Then
                If Um > 0 Then
                    Palabra = pU(Um) & "Mil " & Palabra
                End If
                Palabra = pd(Dm) & "y " & Palabra
            Else
                Palabra = pd(Dm) & "Mil " & Palabra
            End If
        End If
    End If
    If Cm > 0 Then
        If Cm = 1 And Dm = 0 And Um = 0 Then
            Palabra = PC(0) & "Mil " & Palabra
        Else
            If Cm > 1 And Dm = 0 And Um = 0 Then
                Palabra = PC(Cm) & "Mil " & Palabra
            Else
                Palabra = PC(Cm) & Palabra
            End If
        End If
    End If
    If UMi > 1 And DMi = 0 Then
        If Cm = 0 And Dm = 0 And Um = 0 And c = 0 And d = 0 And U = 0 Then
            Palabra = pU(UMi) & "Millones "
        Else
            Palabra = pU(UMi) & "Millones " & Palabra
        End If
    End If
    If UMi = 1 And DMi = 0 Then
        If Cm = 0 And Dm = 0 And Um = 0 And c = 0 And d = 0 And U = 0 Then
            Palabra = pU(UMi) & "Millon "
        Else
            Palabra = pU(UMi) & "Millon " & Palabra
        End If
    End If
    If DMi > 0 Then
        If ((DMi * 10) + UMi) > 10 And ((DMi * 10) + UMi) < 16 Then
            If Cm = 0 And Dm = 0 And Um = 0 And c = 0 And d = 0 And U = 0 Then
                Palabra = Pe(UMi) & "Millones "
            Else
                Palabra = Pe(UMi) & "Millones " & Palabra
            End If
        Else
            If UMi > 0 Then
                Palabra = pd(DMi) & "y " & pU(UMi) & "Millones " & Palabra
            Else
                Palabra = pd(DMi) & "Millones " & Palabra
            End If
        End If
    End If
    If CMi > 0 Then
        If CMi = 1 And DMi = 0 And UMi = 0 Then
            Palabra = PC(0) & "Millones " & Palabra
        Else
            If CMi > 1 And DMi = 0 And UMi = 0 Then
                Palabra = PC(CMi) & "Millones " & Palabra
            Else
                Palabra = PC(CMi) & Palabra
            End If
        End If
    End If
    If numero = 1000000 Or numero = 10000000 Or numero = 100000000 Then
        Palabra = Palabra & "de "
    End If
    MontoEscrito = Palabra
Else
    MontoEscrito = "Cero "
End If

End Function
__________________
soy feliz
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5 (permalink)  
Antiguo 18-08-2012, 14:57:41
Avatar de leosantafesino
Gran Participación en el Foro
 
Registrado: abr 2007
Ubicación: Santa Fe Capital
Posts: 107
Créditos: 3.509
leosantafesino Valoración +2
Predeterminado Re: Pasar de número a letras.

La cuestión gente ya está resuelto. Usé el código que me pasó Liudex pero le hice unos cambios. En si, a la sub pública Convertir la pasé a una función y le cambié algunas variables y demás para pasarle párametros, con algún que otro cambiode código que no me pareció necesario. Si la necesitan, se las paso. abrazo a todos. (Gracias Yayita para vos también)
__________________
Santa Fe es de UNIÓN.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6 (permalink)  
Antiguo 18-08-2012, 16:39:27
Gran Participación en el Foro
 
Registrado: ago 2010
Posts: 134
Créditos: 3.557
Liudex Aun no valorado
Smile Re: Pasar de número a letras.

Excelente amigo, la finalidad es que todos nos ayudemos, y si en verdad me gustaria ver los cambios que le realizaste al codigo, para utilizarlo cuando sea necesario, por cierto ese código no lo diseñe yo, lo extraje de internet de un excelente programador que es el que tiene los créditos.
__________________
Liudex
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7 (permalink)  
Antiguo 23-08-2012, 22:43:06
Avatar de leosantafesino
Gran Participación en el Foro
 
Registrado: abr 2007
Ubicación: Santa Fe Capital
Posts: 107
Créditos: 3.509
leosantafesino Valoración +2
Predeterminado Re: Pasar de número a letras.

Acá dejo el código como fué modificado y como lo estoy utilizando yo en mi proyecto. Es MUY práctico, y sobre todo rápido ya que son dos funciones.

Código:
'FUNCION NÚMERO A TEXTO
Public Function Num2Text(ByVal value As Double) As String
 
    value = Int(value)
 
    Select Case value
 
        Case 0
            Num2Text = "cero"
 
        Case 1
            Num2Text = "uno"
 
        Case 2
            Num2Text = "dos"
 
        Case 3
            Num2Text = "tres"
 
        Case 4
            Num2Text = "cuatro"
 
        Case 5
            Num2Text = "cinco"
 
        Case 6
            Num2Text = "seís"
 
        Case 7
            Num2Text = "siete"
 
        Case 8
            Num2Text = "ocho"
 
        Case 9
            Num2Text = "nueve"
 
        Case 10
            Num2Text = "díez"
 
        Case 11
            Num2Text = "once"
 
        Case 12
            Num2Text = "doce"
 
        Case 13
            Num2Text = "trece"
 
        Case 14
            Num2Text = "catorce"
 
        Case 15
            Num2Text = "quince"
 
        Case Is < 20
            Num2Text = "dieci" & Num2Text(value - 10)
 
        Case 20
            Num2Text = "veinte"
 
        Case Is < 30
            Num2Text = "veinti" & Num2Text(value - 20)
 
        Case 30
            Num2Text = "treinta"
 
        Case 40
            Num2Text = "cuarenta"
 
        Case 50
            Num2Text = "cincuenta"
 
        Case 60
            Num2Text = "sesenta"
 
        Case 70
            Num2Text = "setenta"
 
        Case 80
            Num2Text = "ochenta"
 
        Case 90
            Num2Text = "noventa"
 
        Case Is < 100
            Num2Text = Num2Text(Int(value \ 10) * 10) & " y " & Num2Text(value Mod 10)
 
        Case 100
            Num2Text = "cien"
 
        Case Is < 200
            Num2Text = "ciento " & Num2Text(value - 100)
 
        Case 200, 300, 400, 600, 800
            Num2Text = Num2Text(Int(value \ 100)) & "cientos"
 
        Case 500
            Num2Text = "quinientos"
 
        Case 700
            Num2Text = "setecientos"
 
        Case 900
            Num2Text = "novecientos"
 
        Case Is < 1000
            Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
 
        Case 1000
            Num2Text = "mil"
 
        Case Is < 2000
            Num2Text = "mil " & Num2Text(value Mod 1000)
 
        Case Is < 1000000
            Num2Text = Num2Text(Int(value \ 1000)) & " mil"
 
            If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
 
        Case 1000000
            Num2Text = "un millón"
 
        Case Is < 2000000
            Num2Text = "un millón" & Num2Text(value Mod 1000000)
 
        Case Is < 1000000000000#
            Num2Text = Num2Text(Int(value / 1000000)) & " millones "
 
            If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
 
        Case 1000000000000#
            Num2Text = "un billón"
 
        Case Is < 2000000000000#
            Num2Text = "un billón " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
 
        Case Else
            Num2Text = Num2Text(Int(value / 1000000000000#)) & " billones"
 
            If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
 
    End Select

End Function

Código:
Function conver(importe As String) As String
Dim sValor As String, siValor As Single
    Dim i, r As Single
    sValor = importe
    importe = Val(Replace(sValor, ",", "."))
    i = Int(Val(importe))
    r = CDbl((importe - i) * 100)
    Num2Text (importe)
     If r > 0 Then
       conver = Num2Text(i) & " con " + Num2Text(r) + " "
     Else
      conver = Num2Text(i)
    End If
End Function

'FIN DE FUNCIONES PARA NUMERO A TEXTO (NUM2TEXT)
Y para darse una idea, a la función la llamo así:

Código:
Private Sub TextoAConvertir_Change()
Texto1.Text = conver(Me.TextoAConvertir.Text)
End Sub
Espero que les sea de utilidad, nos vemos.
__________________
Santa Fe es de UNIÓN.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT. Ahora son las 08:40:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
© VB-MUNDO CO. Todos los derechos reservados
Tutoriales Premium | Juegos Online 


right

Programacion, vb 6, visual basic, foro programacion

Inactive Reminders By Icora Web Design