busqueda de datos de una hoja a otra

24/02/2009 - 06:33 por Jorge Forero | Informe spam
Buenas noches grupo, tengo la siguiente dificultad

1-. en el libro cotizador tengo una hoja de calculo llamada cotizacion, en
esta hoja se solicitan los datos para poder realizar la cotizacion de un
producto.
En la columna A desde la fila a5 a la a17 estan los titulos de los datos a
capturar ejemplo

a5 nombre cliente
a6 numero de identificacion
a7 direccion
a8 numero de telefono
etc..

en la columna B el usuario debe digitar los datos de acuerdo a lo que se
pregunta enla columna A ejemplo

b5 = jorge
b6 = 12345
b7 = calle 7 no. 10-28 torre 6 apartamento 501
a8 = 5555555
etc..

en la columna C se encuentran los titulos de los datos del producto qaue se
quiere cotizar

c5 = marca del vehiculo
c6 = clase de vehiculo
c7 = modelo o año de fabricacion
c8 = servicio que presta el vehiculo
c9 = Tomara asistencia en viajes
etc..

en la columna D se diligencian los datos a las preguntas/titulos de la
columna C por ejemplo

d5 = dodge
d6 = automovil
d7 = 2005
d8 = particular
d9 = si
etc..

si en d9 el usuario elige no, no se tomara ningun valor

al frente de c6, c8 y c9 estan los siguienes combobox

cmbclasevehiculo
cmbservicio
cmbtomaasistencia

para llenar estos combos tengo una hoja llamada tablas_generales en donde:

la fila1 es para todos los titulos
columna G titulada clases vehiculos desde la fila2 tengo las posibles calses
de vehiculos que podra escoger el usuario y que deben alimentar el combobox
cmbclasevehiculo
columna I titulada servicios desde la fila2 tengo las posibles tipos de
servicio (particular publico etc.. ) que podra escoger el usuario y que
deben alimentar el combobox cmbservicio
columna J titulada asistencia desde la fila2 tengo las dos posibles
respuestas (si no)que podra escoger el usuario y que deben alimentar el
combobox cmbtomaasistencia

los combobox los que desplega el usuario van alimentados por la hoja tablas
generales mediante codigo de vb.

para el problema que requiero resolver tomo en la hoja tablas_generales
desde la columna G ya que las anteriores tienen datos que llenan otros cmb
por ejemplo columna A tengo los puntos de venta, columna B nombre vendedor
etc..

tengo también 3 CheckBox

chbmapfre
chbgenerali
chbsolidaria

en otra hoja llamada tablas_calculo se tiene: (la fila1 corresponde a los
titulos)

Columna B
b1 = Companias
b2 = Mapfre
b3 = Mapfre
b4 = Mapfre
b5 = Generali
b6 = solidaria

Columna C
c1 = Clase Vehiculo
c2 = Automovil
c3 = Camioneta
c4 = Taxi
c5 = Automovil
c6 = Automovil

Columna D
d1 = Servicio
d2 = Particular
d3 = Particular
d4 = Pùblico
d5 = Particular
d6 = Particular

Columna F
f1 = valor
f2 = 48.000 (cuarenta y ocho mil pesos), sin decimales
f3 = 50.000
f4 = 35.000
f5 = 60.000
f6 = 30.000

asi sucesivamente, pueden existir multiples combinaciones

ahora volviendo a la hoja cotizacion en la:

celda f6 tengo la tasa que se va a aplicar ejemplo 4.80% (cuatro punto
ochenta) esta celda esta configurada con la propiedad de porcentaje
celda g6 tengo el recargo y/o descuento que se va a aplicar ejemplo 10.00%
esta celda esta configurada con la propiedad de porcentaje
celda h6 (f6*g6)+f6

si el usuario escogio no en el cmbtomaasistencia, i6, i8, i10 = 0

celda i6 se debe calcular el valor de la asistencia que depende de:
0 (cero) si el chbmapfre no se encuentra marcado
si esta marcado o chequeado,
el calculo del valor correspondiente lo debe realizar dependiendo de los
valores escogidos por el usuario en los combobox (estos valores no los
almaceno, solo el usuario los elige) y buscando en la hoja tablas_calculo de
acuerdo con la combinacion que corresponda.

para la fila 8 se debe hacer lo mismo:
celda i8 se debe calcular el valor de la asistencia que depende de:
0 (cero) si el chbgenerali no se encuentra marcado.

para la fila 10 se debe hacer lo mismo:
celda i10 se debe calcular el valor de la asistencia que depende de:
0 (cero) si el chbsolidaria no se encuentra marcado.

ejemplo:

cmbclasevehiculo = Automovil
cmbservicio = Particular
cmbtomaasistencia = SI

los 3 checkbox estan marcados.

entonces

i6 = 48.000
i8 = 60.000
i10 = 30.000

si el criterio no se encuentra en la hoja tablas_calculo los valores para
i6, i8, i10 =0

la idea es que todo esto lo haga cuando se le da click al boton btncotizar.

Nota: el llenado de los combos lo realizo con el siguiente codigo

Private Sub cmbClaseVehiculo_DropButtonClick()
Call cmbClaseVehiculoCargarTablas
cmbClaseVehiculo.DropDown
End Sub

y en un modulo..

Sub cmbClaseVehiculoCargarTablas()
Application.ScreenUpdating = False
Sheets("Tablas_Generales").Select
ActiveSheet.Range("g2", Range("g2").End(xlDown)).Select
rgo = Selection.Address
Sheets("Cotización").cmbCotizadorClaseVehiculo.ListFillRange =
"Tablas_Generales!" & rgo
Sheets("Cotización").Select
End Sub

y se repite para cada combo.

esapero haber podido explicar lo que necesito realizar


gracias por su colaboracion

jorgef
 

Leer las respuestas

#1 Héctor Miguel
24/02/2009 - 23:08 | Informe spam
hola, Jorge !

1) (re)creando un modelo de trabajo +/- "igual al tuyo" (o tratando de hacerlo)
me resulta con las siguientes caracteristicas:

a) 3 hojas ("cotizacion", "tablas_generales" y "tablas_calculo")
b) en la hoja "cotizacion" tienes incrustados los siguientes controles ("cuadro de controles - ActiveX")
- 3 comboboxes (cmbclasevehiculo, cmbservicio, cmbtomaasistencia)
- 3 checkboxes (chbmapfre, chbgenerali, chbsolidaria)
- 1 commandbutton (btncotizar)
c) ninguno de estos tiene una "LinkedCell" (o sea, lo que el usuario seleccione se queda "en el limbo")
d) 3 celdas para rescatar un determinado valor segun la combinacion de los controles anterioes (i6, i8 e i9)

2) lo unico que no me "cuadro" en la exposicion que haces es el "llenado" del combo "cmbclasevehiculo"
ya que usas un nombre diferente en el evento del control y la rutina que llamas para llenarlo -???-
y que (mencionas) tienes "otros combos" (en otros lados que hacen otras cosas ?)
asi que el modelo lo (re)construi SOLO con los datos "aplicables" a los controles anteriores

prueba con los siguientes procedimientos EN el modulo de codigo de la hoja "cotizaciones"
OJO por si existe palabras "acentuadas" o con caracteres "poco usuales" -???-
y si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Private Sub cmbclasevehiculo_DropButtonClick()
Actualiza cmbclasevehiculo, "g"
End Sub
Private Sub cmbservicio_DropButtonClick()
Actualiza cmbservicio, "i"
End Sub
Private Sub cmbtomaasistencia_DropButtonClick()
Actualiza cmbtomaasistencia, "j"
End Sub
Private Sub btncotizar_Click()
Range("i6,i8:i9").ClearContents
If LCase(cmbtomaasistencia) <> "si" Then Range("i6,i8:i9") = 0: Exit Sub
If chbmapfre Then Cotiza "i6", "mapfre"
If chbgenerali Then Cotiza "i8", "generali"
If chbsolidaria Then Cotiza "i9", "solidaria"
End Sub
Private Sub Actualiza(Control As MSForms.ComboBox, Col As String)
With Worksheets("tablas_generales")
Control.ListFillRange = _
.Name & "!" & .Range(.Range(Col & 2), .Range(Col & 2).End(xlDown)).Address
End With
End Sub
Private Sub Cotiza(Celda As String, Cia As String)
With Worksheets("tablas_calculo")
With .Range(.Range("b2"), .Range("b2").End(xlDown))
Range(Celda) = Evaluate("sumproduct(--('" & _
.Parent.Name & "'!" & .Address & "=""" & Cia & """),--('" & _
.Parent.Name & "'!" & .Offset(, 1).Address & "=""" & cmbclasevehiculo & """),--('" & _
.Parent.Name & "'!" & .Offset(, 2).Address & "=""" & cmbservicio & """),'" & _
.Parent.Name & "'!" & .Offset(, 4).Address & ")")
End With
End With
End Sub

OJO: de tu codigo original expuesto en la consulta a la que estoy contestando...
esta parte del codigo no hace referencia al mismo nombre del control ==cmbClaseVehiculo_DropButtonClick "versus"
cmbCotizadorClaseVehiculo.ListFillRange -?????-

Nota: el llenado de los combos lo realizo con el siguiente codigo
Private Sub cmbClaseVehiculo_DropButtonClick()
Call cmbClaseVehiculoCargarTablas
cmbClaseVehiculo.DropDown
End Sub
y en un modulo..
Sub cmbClaseVehiculoCargarTablas()
Application.ScreenUpdating = False
Sheets("Tablas_Generales").Select
ActiveSheet.Range("g2", Range("g2").End(xlDown)).Select
rgo = Selection.Address
Sheets("Cotización").cmbCotizadorClaseVehiculo.ListFillRange = "Tablas_Generales!" & rgo
Sheets("Cotización").Select
End Sub

y se repite para cada combo.

Preguntas similares