Creacion base de datos (algo complicada)

06/09/2005 - 09:53 por faico | Informe spam
Hola a todos,
Aun sigo liado con la base de datos. La historia es que en un primer
documento la base de datos la voy creando en una hoja mientras voy
metiendo los datos en ella desde otra con la macro insertada en un
boton. Funciona a las mil maravillas pero es porque el formato de la
base de datos es igual al formato de donde extraigo los datos asique no
hay problema alguno.
El problema viene cuando intento crear una base de datos de una
plantilla de factura. A causa de tener los datos de la plantilla
dispersos por la primera hoja no se el modo de agruparlos en diferentes
lineas una por cada factura y crear la base de datos.
Por ejemplo si relleno la plantilla de factura y quiero enviar esos
datos a la base de datos de otra hoja (en el mismo doc para no
complicar) alguien sabe como puedo coger diferentes celdas de la hoja
de plantilla y pasarlas a la basa de datos ordenadamente ubicando, cada
vez que relleno la plantilla, en una linea diferente de la base de
datos?
En detalle, p.e. tengo la fecha de la plantilla en la celda A3, el
nombre de cliente en la D4 y asi. Bien ahora quiero que en la Base de
datos me aparezca (cada vez que envio los datos de la plantilla) la
fecha en la A1, el cliente en la B1,... y la siguiente vez que rellene
la plantilla y envie los datos de nuevo que aparezca la fecha en la A2,
el cliente en la B2. Y asi ir creando la base de datos con una linea
por factura.

Espero haber sido claro

Gracias
Saludos!

Faico

Preguntas similare

Leer las respuestas

#1 KL
06/09/2005 - 10:14 | Informe spam
Hola Faico,

Al igual que has mencionado las celdas de los primeros dos campos para la
factura y para la BD, por que no lo haces para todos los campos y asi
tenemos todos los datos?

Algo asi:

hoja "Factura" (celdas)
A3, D4, A10, F5, F6, E10

hoja "Datos" (columnas)
A,B,C,D,E,X

Saludos,
KL


"faico" wrote in message
news:
Hola a todos,
Aun sigo liado con la base de datos. La historia es que en un primer
documento la base de datos la voy creando en una hoja mientras voy
metiendo los datos en ella desde otra con la macro insertada en un
boton. Funciona a las mil maravillas pero es porque el formato de la
base de datos es igual al formato de donde extraigo los datos asique no
hay problema alguno.
El problema viene cuando intento crear una base de datos de una
plantilla de factura. A causa de tener los datos de la plantilla
dispersos por la primera hoja no se el modo de agruparlos en diferentes
lineas una por cada factura y crear la base de datos.
Por ejemplo si relleno la plantilla de factura y quiero enviar esos
datos a la base de datos de otra hoja (en el mismo doc para no
complicar) alguien sabe como puedo coger diferentes celdas de la hoja
de plantilla y pasarlas a la basa de datos ordenadamente ubicando, cada
vez que relleno la plantilla, en una linea diferente de la base de
datos?
En detalle, p.e. tengo la fecha de la plantilla en la celda A3, el
nombre de cliente en la D4 y asi. Bien ahora quiero que en la Base de
datos me aparezca (cada vez que envio los datos de la plantilla) la
fecha en la A1, el cliente en la B1,... y la siguiente vez que rellene
la plantilla y envie los datos de nuevo que aparezca la fecha en la A2,
el cliente en la B2. Y asi ir creando la base de datos con una linea
por factura.

Espero haber sido claro

Gracias
Saludos!

Faico

Respuesta Responder a este mensaje
#2 faico
06/09/2005 - 11:01 | Informe spam
Muchas gracias por tu rapida respuesta KL

La verdad es que son muchas las celadas que tengo en la hoja plantilla
que quiero pasar a la hoja de datos.
Hoja plantilla
B2, C3, G1, G3, A8, A31, E31, E33, I31, C39, C40, C41, C42, C43, C44,
C45, C46, C47, C48, C49, C50, C51, C52, C53, C54, C55, 56, C57, C58,
C59, C60, C61, C62, G39, ...,G43, I39,...,I43, G48,...,G52,
I48,...,I52, G57,...,G61, I57,...I61, E71

Hoja Datos
Luego en esta hoja quiero que aparezcan todos lso datos en la misma
fila de forma
A1, B1, C1, D1, E1,... y asi hasta donde sea necesario, no llegando
creo a los 256 columnas claro

Saludos!
Faico
Respuesta Responder a este mensaje
#3 Gustavo
06/09/2005 - 15:11 | Informe spam
No se si entiendo pero lo que yo haría es:
1) "descrubrir" en que fila deben ir los datos (Ej en la hoja datos ir hasta
el final -A65500- y luego mediande Selection.End(xlUp).Select te posisionas
en la última con datos por lo que tu celda será la inferior a ésta última
2) en la hoja Datos pone
Cells(1,fila)=Sheets("Plantilla").Range("B2")
Cells(2,fila)=Sheets("Plantilla").Range("C3")
Cells(3,fila)=Sheets("Plantilla").Range("G1")
...

espero te sirva (se que es algo tedioso pero lo haces una sola vez en la
macro y te queda para todo).
Cualquier cosa avisas
Gustavo



"faico" escribió:

Muchas gracias por tu rapida respuesta KL

La verdad es que son muchas las celadas que tengo en la hoja plantilla
que quiero pasar a la hoja de datos.
Hoja plantilla
B2, C3, G1, G3, A8, A31, E31, E33, I31, C39, C40, C41, C42, C43, C44,
C45, C46, C47, C48, C49, C50, C51, C52, C53, C54, C55, 56, C57, C58,
C59, C60, C61, C62, G39, ...,G43, I39,...,I43, G48,...,G52,
I48,...,I52, G57,...,G61, I57,...I61, E71

Hoja Datos
Luego en esta hoja quiero que aparezcan todos lso datos en la misma
fila de forma
A1, B1, C1, D1, E1,... y asi hasta donde sea necesario, no llegando
creo a los 256 columnas claro

Saludos!
Faico


Respuesta Responder a este mensaje
#4 faico
06/09/2005 - 19:11 | Informe spam
Muchas gracias Gustavo, pero creo que no lo pillo.
Por ahora tengo esta macro que me sirve para pasar el rango completo de
la plantilla a la hoja de datos

Sub copy_1_Values_PasteSpecial()
Dim sourceRange As Range
Dim destrange As Range
Dim Lr As Long
Application.ScreenUpdating = False
Lr = LastRow(Sheets("Sheet2")) + 1
Set sourceRange = Sheets("Sheet1").Range("a2:j27")
Set destrange = Sheets("Sheet2").Range("A" & Lr)
sourceRange.Copy
destrange.PasteSpecial xlPasteValues, , False, False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Lo que quiero ahora es que en vez de pasar el rango a2:j27, pasar
celdas sueltas (numeradas en la respuesta anterior a KL) e irlas
poniendo en orden (en la misma fila) en diferentes columnas, en la hoja
de datos, de tal modo que la B2 de plantilla pase a A1 de datos, la C3
a la B1, la G1 a la C1, y asi sucesivamente.
Que cambios deberia hacer en la macro que ya tengo?

Muchas gracias
Saludos
Faico
Respuesta Responder a este mensaje
#5 KL
06/09/2005 - 22:45 | Informe spam
Hola Faico,

Mira a ver si te vale este codigo (cambia los nombres de hojas segun
proceda):

Saludos,
KL

'Inicio Codigo
Sub test()
'Declaramos las variables.
Dim c As Range, Valores As Variant, txt As String

'Creamos una cadena de texto que recoge las
'referencias de las celdas de la factura a copiar.
txt = "B2,C3,G1,G3,A8,A31,E31,E33,I31," & _
"C39:C62,G39:G43,I39:I43,G48:G52," & _
"I48:I52,G57:G61,I57:I61,E71"

'Asignamos los valores de las celdas escogidas
'de la hoja de factura a una matriz dinamica.
ReDim Valores(0)
For Each c In Sheets("Factura").Range(txt)
Valores(UBound(Valores)) = c.Value
ReDim Preserve Valores(UBound(Valores) + 1)
Next c
ReDim Preserve Valores(UBound(Valores) - 1)

'Pegamoslos valiores de la matriz en la siguiente
'fila disponible de la base de datos.
With Sheets("Datos")
.Cells(.Rows.Count, "A").End(xlUp).Offset(1) _
.Resize(, UBound(Valores) + 1).Value = Valores
End With
End Sub
'Fin Codigo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida