Una ayuda por favor

28/04/2006 - 22:31 por bermejo-Luis | Informe spam
Tengo en una hoja de excel lo siguente, como ejemplo:

colum1 colum2 colum3 colum4 colum5 colum6
Punto de venta1 xxx
Direccion c/xxxxxxxx
poblacion xxxxxxxx
filacliente1 fdatoc2 fdatoc3 fdatoc4 - fdatoc6
filacliente2 fdatoc2 fdatoc3 fdatoc4 - fdatoc6
filacliente3 fdatoc2 fdatoc3 fdatoc4 - fdatoc6
Punto de venta2 xxxxxxxx
Direccion c/xxxxxxxxxxxxxx
poblacion xxxxxxxxxxxx
filacliente fdatoc2 fdatoc3 fdatoc4 - fdatoc6
fliacliente fdatoc3 fdatoc3 fdatoc4 - fdatoc6

Bueno con este ejemplo espero que podais entender mi problema.
Esta hoja "informe" se recibe cada 15 dias, en esta hoja de excel hay
aprox entre 350 y 400 filas y como podeis ver los puntos de venta,
direccion etc. ocupan columnas que contienen datos, hay aprx entre 50 y 55
puntos de venta.Esto es por que no todos los informes que se reciben
tienen siempre los mismos clientes y los mismos puntos de venta, ya que
podeis ver la columna 5 esta vacia y hay que reenviar a cada punto de
venta, sus clientes y que rellenen el dato que falta.
Mi intencion es y asi lo hago manualmente es separar cada punto de venta
en un hoja aparte y reenviarsela. Cortando y pegando cada rango que
tienen. Al ser cada vez de un tamaño distinto, no se como hacerlo con
alguna macro en Vba ya que soy novato.Se como añadir hojas en el libro con
vba y como definir algún rango de filas, celdas etc.,Pero como le digo que
busque el rango desde un punto de venta hasta el siguiente punto de venta
lo copie y pegue en otra hoja y asi sucesibamente hasta completar todos
los puntos de venta con sus clientes en hojas distintas.
Espero que podais ayudarme y en caso contrario Gracias de todas formas por
haber leido mi problema
Un Saludo
Luis Bermejo

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
29/04/2006 - 08:13 | Informe spam
hola, Luis !

supongo que el 'ejemplo' [aparte de 'meramente ilustrativo'] pudiera ser un tanto cuanto 'diferente' en la realidad -?-
[asi que]... con los siguientes 'supuestos'... espero que falten pocas modificaciones a la siguiente propuesta :))

-> 'la hoja' se llama "hoja1" [modifica en el codigo con el nombre 'real'] :D
1) -cuando menos- la celda 'A1' contiene un texto/encabezamiento/... para poder 'meterle' un autofiltro [por codigo]
[por lo que 'colum1' hace referencia a la columna 'A'] :D
2) entre el 'identificador' -> Punto de ventaX Y... la fila con 'el ultimo dato' [de cada punto de venta]
=> NO HAY celdas 'vacias' <= OJO
3) la columna donde se 'cuentan' los datos que faltan ES la 'colum5' [columna 'E'] -> 4 columnas a la derecha de 'A'
4) del 'identificador' -> Punto de ventaX 'hasta' -> la PRIMER celda/fila CON 'datos' de cada cliente...
hay TRES celdas/filas de 'distancia' [la pimer 'filacliente' esta 3 filas abajo de su 'punto de venaX']
5) la base de datos [o listado] comprende [siempre ?] SEIS columnas -> de 'A' <-> 'F'
-> la macro genera una hoja nueva por cada 'punto de venta' al que le falten datos en su columna 'E'

copia las siguientes lineas en un modulo de codigo 'normal' y...
si cualquier duda [o informacion adicional]... comenas ?
saludos,
hector.

Sub Faltan_datos(): Application.ScreenUpdating = False
Dim Puntos As String, Celda As Range, Datos As String, Faltan As String
With Worksheets("hoja1")
With Range(.[a1], .[a65536].End(xlUp))
If .AutoFilter Then .AutoFilter: .AutoFilter Field:=1, Criteria1:="punto de venta*"
With .Parent.AutoFilter.Range: Puntos = _
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Address(0, 0)
End With: .AutoFilter: End With
For Each Celda In .Range(Puntos)
Datos = .Range(Celda, Celda.End(xlDown)).Resize(, 6).Address
Faltan = .Range(Celda.Offset(3), Celda.End(xlDown)).Offset(, 4).Address
If Application.CountIf(Worksheets(.Name).Range(Faltan), "") > 0 Then
.Range(Datos).Copy Worksheets.Add(After:=Worksheets(Worksheets.Count)).[a1]
ActiveSheet.Name = [a1]
End If: Next: .Select: End With
End Sub

___ consulta original ___
Mostrar la cita
#2 bermejo.luis
29/04/2006 - 12:33 | Informe spam
Hector antes de nada muchas gracias por la ayuda que prestais a los
novatos en esto como yo.
Efectivamente en el ejemplo que te he puesto, en la primera fila falta el
encabezado de cada columna, lo cual se me olvido indicarlo ya que en la
hoja que genere la macro debe de pegar el encabezado.Siempre son las
mismas columnas y la columna que esta vacia también siempre es la misma.
Voy a probar lo que me has indicado y si tengo cualquier duda te lo
comento.
De verdad que haceis una labor increible, se aprende más con las ayudas
vuestras que con todos los manuales.


Héctor Miguel wrote:

Mostrar la cita
tanto cuanto 'diferente' en la realidad -?-
Mostrar la cita
modificaciones a la siguiente propuesta :))

Mostrar la cita
'real'] :D
Mostrar la cita
poder 'meterle' un autofiltro [por codigo]
Mostrar la cita
ultimo dato' [de cada punto de venta]
Mostrar la cita
[columna 'E'] -> 4 columnas a la derecha de 'A'
Mostrar la cita
CON 'datos' de cada cliente...
Mostrar la cita
filas abajo de su 'punto de venaX']
Mostrar la cita
'A' <-> 'F'
Mostrar la cita
datos en su columna 'E'

Mostrar la cita
Criteria1:="punto de venta*"
Mostrar la cita
1).SpecialCells(xlCellTypeVisible).Address(0, 0)
Mostrar la cita
Worksheets.Add(After:=Worksheets(Worksheets.Count)).[a1]
Mostrar la cita
filas
Mostrar la cita
datos hay aprx entre 50 y 55 puntos de venta
Mostrar la cita
clientes y los mismos puntos de venta
Mostrar la cita
sus clientes y que rellenen el dato que falta.
Mostrar la cita
se como hacerlo con alguna macro [...]
#3 bermejo.luis
29/04/2006 - 15:36 | Informe spam
Hector, de nuevo te pido ayuda

He copiado y modificado el codigo con los datos correctos de columna ,hoja
etc cambiados, pero no me funciona, cuando ejecuto la macro efectua el
fltro y me indica que no hay celdas "error 1004 en tiempo de ejecucion no
se encontraron celdas".
Posiblemente no estoy haciendo las cosas muy bien que digamos. Estoy
intentando enviarte por Mail un ejemplo de la hoja de excel correcta con
datos reales, pero me da error de sevidor ** - El servidor de correo ha
procesado los siguientes destinatarios del mensaje:
; Fallido; 5.4.3 (error en el servidor de
enrutación).
si pego la hoja en este espacio no sale bien y no podras visualizarla
correctamente. ¿ Te la puedo enviar de alguna forma ? ¿la direccion de
correo que sale es la correcta ?
Saludos y gracias por tu paciencia





Luis wrote:

Mostrar la cita
celda/fila
Mostrar la cita
falten
Mostrar la cita
4).Address
Mostrar la cita
#4 Héctor Miguel
29/04/2006 - 22:05 | Informe spam
hola, Luis !

Mostrar la cita
op1: si comentas cuales son las 'modificaciones' que haces al codigo...
y cuales son los datos 'reales' [y como estan distribuidos] :D
[probablemente] sera cosa de 'remendar' el codigo de la propuesta :))

op2: si requieres enviarme el archivo... solo quita de la direccion que aparece el 'NO...SPAM...PLS' ;)

saludos,
hector.
Ads by Google
Search Busqueda sugerida