buscar datos

01/02/2005 - 14:01 por jm | Informe spam
Hola a todos/as.
A ver si podéis hecharme una mano:
Hoja 1: Clientes
Hoja 2: Fras emitidas
Hoja 3: Modelo de la factura

Con vuestra ayuda he conseguido que al seleccionar distintas filas de
facturas de la hoja 2, aprieto un botón de comando y se imprimen todas las
factura seleccionadas.
Ahora me viene un problema:
En lugar de escribir los datos del cliente en cada fila de la hoja 2 como
venía haciendo; he creado la hoja1 con los datos del cliente y así no tengo
que escribirlos en cada factura que haga.
Cómo podría hacer para que sólo con el numero de cliente que hay en la hoja
2, al apretar el botón de comando me busque los datos del cliente en la hoja
1 y se impriman las facturas.
Espero haberme expresado bien.
Muchas gracias a todos.
JM

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
02/02/2005 - 05:13 | Informe spam
hola, jm !

Hoja 1: Clientes Hoja 2: Fras emitidas Hoja 3: Modelo de la factura
... he conseguido... seleccionar distintas filas de... hoja 2... boton... y se imprimen... las... seleccionadas.
... problema... escribir los datos del cliente en cada fila de la hoja 2
... he creado la hoja1 con los datos del cliente y asi no tengo que escribirlos en cada factura que haga.
... que solo con el numero de cliente... en la hoja 2... el boton... busque los datos del cliente... hoja 1 y se impriman [...]



usando la estructura [identica/similar en su forma] como localizas los datos s/fila de la/s factura/s seleccionada/s
podrias [tambien] localizar los datos del cliente en la [nueva] hoja1 [segun codigo/s de la/s fila/s seleccionada/s]
[quizas] seria 'conveniente' usar reglas de validacion [por lista] para la columna de los codigos [en hoja2]

si cualquier duda... o informacion adicional... ¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 jm
02/02/2005 - 09:38 | Informe spam
Hola Hector; agradezco enormemente tu ayuda pero se me hace un poco difícil
para mí todavía hacerlo por sí mismo.
Si lo deseas te puedo enviar un pequeño ejemplo y me ayudas.
Saludos.

"Héctor Miguel" escribió en el mensaje
news:
hola, jm !

Hoja 1: Clientes Hoja 2: Fras emitidas Hoja 3: Modelo de la factura
... he conseguido... seleccionar distintas filas de... hoja 2... boton...
y se imprimen... las... seleccionadas.
... problema... escribir los datos del cliente en cada fila de la hoja 2
... he creado la hoja1 con los datos del cliente y asi no tengo que
escribirlos en cada factura que haga.
... que solo con el numero de cliente... en la hoja 2... el boton...
busque los datos del cliente... hoja 1 y se impriman [...]



usando la estructura [identica/similar en su forma] como localizas los
datos s/fila de la/s factura/s seleccionada/s
podrias [tambien] localizar los datos del cliente en la [nueva] hoja1
[segun codigo/s de la/s fila/s seleccionada/s]
[quizas] seria 'conveniente' usar reglas de validacion [por lista] para la
columna de los codigos [en hoja2]

si cualquier duda... o informacion adicional... ¿comentas?
saludos,
hector.

Respuesta Responder a este mensaje
#3 Héctor Miguel
02/02/2005 - 10:03 | Informe spam
hola, jm !

... se me hace un poco difícil... todavía hacerlo por si mismo.
... te puedo enviar un pequeño ejemplo [...]



solo quita de la direccion de respuesta el 'NO...SPAM...PLS'
[aunque no te aseguro una respuesta 'inmediata'... :( de que 'lo veo'... 'lo veo'] :))

ademas te sugiero que amplies 'detalles' a tu consulta/situacion/necesidad aqui en el foro
como: el codigo que ya estas usando y los cambios que te gustarian o requieres.
[entre mas ojos, manos y cabezas 'nos pongamos manos a la obra'...]
de cierto se aportaran mas ideas y formas de solucion [y seguramente... mas 'rapido']

no quiero decir que no me lo envies... puedes hacerlo si asi lo quieres
solo... no dejes 'fuera de la jugada' a todo el que pueda y quiera ayudar :))

saludos,
hector.
Respuesta Responder a este mensaje
#4 Héctor Miguel
03/02/2005 - 08:00 | Informe spam
hola, jm !

... quiza sea mejor adjuntar aqui la hoja. :))
Gracias otra vez a todos.



te expongo un manera [un poquito demasiado...] 'diferente, pero... parecida'
a veces [alguien ya me dijo que]... como que me gusta 'matar moscas a cañonazos' :))
he tratado de 'adelgazar' el codigo y evitar [cuanto sea posible] las instrucciones 'Set'
utilizando [en su lugar] los 'codename' de los objetos 'worksheet'
-> cambia los codename de las hojas a su nombre 'representativo'
Hoja1=>Clientes Hoja2=>Emitidas Hoja3=>Factura
-> estoy 'localizando' la fila correspondiente al cliente con la variable f_Cli
usando una instruccion 'Evaluate' [que pudiera fallar si el codigo del cliente NO 'existe'] <= OJO
no se si vayas a usar validaciones para el codigo del cliente o prefieras un 'manejo de errores'
-> aprovechando que el boton es un objeto ActiveX...
usa [solamente] el modulo de codigo de la hoja 'Emitidas' [puedes eliminar el modulo de codigo 'normal']
-> observa/modifica el orden en que se rellenan los datos a la factura [variables/matriz DatosEmision/DatosCliente]
-> no se te olvide que 'la seleccion' [de filas/emitidas] a facturar 'se basa' en la columna 'A'
[y espero haber acertado en la ubicacion de los datos del cliente 'en la factura'] -?-

bueno, haz pruebas y si cualquier duda [o informacion adicional]... ¿comentas?
saludos,
hector.
en el modulo de codigo de la hoja 'Emitidas' ==Private Sub CommandButton1_Click()
Dim DatosEmision, DatosCliente
Dim Grupo As Range, f_Emi As Long, f_Cli As Long, Col As Byte
DatosEmision = Array("p22", "p25", "p28", "i50", "aa102", "am102", "bf102")
DatosCliente = Array("aj22", "p31", "aj25", "aj31", "aj28", "as31", "aj34")
If MsgBox("Se imprimirán " & Selection.Rows.Count & " filas.", _
vbOKCancel + vbInformation) = vbCancel Then Exit Sub
For Each Grupo In Selection.Areas
For f_Emi = 1 To Grupo.Rows.Count
For Col = LBound(DatosEmision) To UBound(DatosEmision)
Factura.Range(DatosEmision(Col)) = Grupo.Cells(f_Emi, Col + 1)
Next
f_Cli = Evaluate("Match(" & Grupo.Cells(f_Emi, 3).Address & "," & _
Clientes.Name & "!a:a,0)")
For Col = LBound(DatosCliente) To UBound(DatosCliente)
Factura.Range(DatosCliente(Col)) = Clientes.Cells(f_Cli, Col + 2)
Next
Next
Factura.PrintOut
Next
End Sub
Respuesta Responder a este mensaje
#5 JM
03/02/2005 - 17:40 | Informe spam
Hola Héctor y demás.
Gracias por tu interés... voy a intentar hacer algo pero no controlo el
código, sinceramente. Tal vez sería mucho pedir que me lo pusieras en la
hoja de ejemplo que adjunté; pero me harías un gran favor amigo. :))
¿El módulo que escribes es el único que tengo que utilizar?
¿Sería sustituirlo por el que hay en el botón de comando, y ya está?
Bueno, agradecido siempre. :))
JuanM


"Héctor Miguel" escribió en el mensaje
news:
hola, jm !

... quiza sea mejor adjuntar aqui la hoja. :))
Gracias otra vez a todos.



te expongo un manera [un poquito demasiado...] 'diferente, pero...
parecida'
a veces [alguien ya me dijo que]... como que me gusta 'matar moscas a
cañonazos' :))
he tratado de 'adelgazar' el codigo y evitar [cuanto sea posible] las
instrucciones 'Set'
utilizando [en su lugar] los 'codename' de los objetos 'worksheet'
-> cambia los codename de las hojas a su nombre 'representativo'
Hoja1=>Clientes Hoja2=>Emitidas Hoja3=>Factura
-> estoy 'localizando' la fila correspondiente al cliente con la variable
f_Cli
usando una instruccion 'Evaluate' [que pudiera fallar si el codigo del
cliente NO 'existe'] <= OJO
no se si vayas a usar validaciones para el codigo del cliente o
prefieras un 'manejo de errores'
-> aprovechando que el boton es un objeto ActiveX...
usa [solamente] el modulo de codigo de la hoja 'Emitidas' [puedes
eliminar el modulo de codigo 'normal']
-> observa/modifica el orden en que se rellenan los datos a la factura
[variables/matriz DatosEmision/DatosCliente]
-> no se te olvide que 'la seleccion' [de filas/emitidas] a facturar 'se
basa' en la columna 'A'
[y espero haber acertado en la ubicacion de los datos del cliente 'en
la factura'] -?-

bueno, haz pruebas y si cualquier duda [o informacion adicional]...
¿comentas?
saludos,
hector.
en el modulo de codigo de la hoja 'Emitidas' ==> Private Sub CommandButton1_Click()
Dim DatosEmision, DatosCliente
Dim Grupo As Range, f_Emi As Long, f_Cli As Long, Col As Byte
DatosEmision = Array("p22", "p25", "p28", "i50", "aa102", "am102",
"bf102")
DatosCliente = Array("aj22", "p31", "aj25", "aj31", "aj28", "as31",
"aj34")
If MsgBox("Se imprimirán " & Selection.Rows.Count & " filas.", _
vbOKCancel + vbInformation) = vbCancel Then Exit Sub
For Each Grupo In Selection.Areas
For f_Emi = 1 To Grupo.Rows.Count
For Col = LBound(DatosEmision) To UBound(DatosEmision)
Factura.Range(DatosEmision(Col)) = Grupo.Cells(f_Emi, Col + 1)
Next
f_Cli = Evaluate("Match(" & Grupo.Cells(f_Emi, 3).Address & "," & _
Clientes.Name & "!a:a,0)")
For Col = LBound(DatosCliente) To UBound(DatosCliente)
Factura.Range(DatosCliente(Col)) = Clientes.Cells(f_Cli, Col + 2)
Next
Next
Factura.PrintOut
Next
End Sub

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida