BUENAS TARDES NOCHES EN ESPAÑA
BUENAS TENGO EL SIGUIENTE IN CONVENIENTE CON ESTA FORMULACION PARA PASAR LOS DATOS DE LA SEMAN 4 YA QUE LOS DE LA SEWMANA 1 Y 2 PASAN SIN NUNGUN PROBLEMA
Sub TRANSFERIRDATOS()
Const SHEETSINGRESOS = "INGRESOS"
Const SHEETSB_DATOS = "B_DATOS"
Dim CeldaLibreB_DATOS As Range
Dim Item
Dim ContadorFilas ' para saber las filas que se transfieren
' localizamos la celda libre
With Worksheets(SHEETSB_DATOS)
If IsEmpty(.Range("A4")) Then
Set CeldaLibreB_DATOS = .Range("A4")
Else
Set CeldaLibreB_DATOS = .Range("A3").End(xlDown).Offset(1, 0)
End If
End With
With Worksheets(SHEETSINGRESOS)
'activamos la primera línea de artículos
.Activate
.Range("C11").Select 'INGRESOS
ContadorFilas = 0
Do Until IsEmpty(ActiveCell)
' un bucle que se repita hasta que encuentre una fila con el campo "INGRESOS" vacío
' datos comunes
CeldaLibreB_DATOS.Offset(ContadorFilas, 0).Value = ActiveCell.Offset(0, -2).Value 'HORARIO
' y así sucesivamente con el resto de tus datos comunes
' Ahora los datos de cada fila del artículo
CeldaLibreB_DATOS.Offset(ContadorFilas, 1).Value = ActiveCell.Offset(0, 0).Value SEMANA 1
CeldaLibreB_DATOS.Offset(ContadorFilas, 2).Value = ActiveCell.Offset(0, 2).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 3).Value = ActiveCell.Offset(0, 4).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 4).Value = ActiveCell.Offset(0, 6).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 5).Value = ActiveCell.Offset(0, 8).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 6).Value = ActiveCell.Offset(0, 10).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 7).Value = ActiveCell.Offset(0, 12).Value SEMANA1
CeldaLibreB_DATOS.Offset(ContadorFilas, 8).Value = ActiveCell.Offset(0, 16).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 9).Value = ActiveCell.Offset(0, 18).Value SEMANA 2
CeldaLibreB_DATOS.Offset(ContadorFilas, 10).Value = ActiveCell.Offset(0, 20).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 11).Value = ActiveCell.Offset(0, 22).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 12).Value = ActiveCell.Offset(0, 24).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 13).Value = ActiveCell.Offset(0, 26).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 14).Value = ActiveCell.Offset(0, 28).Value SEMANA 2
CeldaLibreB_DATOS.Offset(ContadorFilas, 15).Value = ActiveCell(Row, 17).Offset(-1, 1).Value SEMANA 3
CeldaLibreB_DATOS.Offset(ContadorFilas, 16).Value = ActiveCell(Row, 17).Offset(-2, 3).Value
'.....
' y así sucesivamente con el resto de tus datos
' pasamos a la siguiente fila del pedido
ActiveCell.Offset(1, 0).Select
ContadorFilas = ContadorFilas + 1
Loop
' ahora que los datos están transferidos, puedes borrarlos de la hoja INGRESOS,
Range("B11:O18").ClearContents
Range("R11:AE18").ClearContents
Range("B26:O33").ClearContents
' y asignar el número sigiente de pedido
' y dejarlo preparado en la celda que queramos, para el siguiente INGRESOS
.Range("B11").Select
End With
' para terminar no viene mál poner un mensaje
MsgBox "Transferidos " & ContadorFilas & " registros.", vbOKOnly, "necesitomas.com"
End Sub
COMO PUEDO HACER PARA QUE LA SEMANA 3 Y 4 QUE HESTAN A PARTIR DE LA FILA A26 LOS PUEDA PASR SIN PROBLENMAS COMO LA 1 Y 2 GRACIAS POR LA AYUDA
Adjunto | Tamaño |
---|---|
![]() | 39.15 KB |
Sigue con el Offset
las semanas 3 y 4 están 16 filas más abajo ¿no?
tal y como lo tienes, para la semana 3 sería algo así (te pongo las dos primeras)
CeldaLibreB_DATOS.Offset(ContadorFilas, 15).Value = ActiveCell.Offset(16, 0).Value
CeldaLibreB_DATOS.Offset(ContadorFilas, 16).Value = ActiveCell.Offset(16, 2).Value
...
------
Ya sé Excel, pero necesito más ahora en pdf
------
Ya sé Excel, pero necesito más.
bunas tardes
tengo una pregunta como hago para que si l dia lunes, o martes no tienen datos me pasen el resto de datos de la semana y la otra es que en la base de datos cunado los paso se sobre ponen en los datos que ya estaban antes y se borran los anteriores como podria solucionar este pequeño inconveniente adjunto el nuevo archivo
ArAnItA
ArAnItA
empiezo a contestarte por el final:
Se están sobreescribiendo los datos del mes anterior porque la macro utiliza la columna A para localizar la celda vacía.
Como tienes unas celdas combinadas para poner un rótulo, esto no está funcionando bien.
Prueba con la columna B, que :
' localizamos la celda libre
With Worksheets(SHEETSB_DATOS)
If IsEmpty(.Range("B4")) Then
Set CeldaLibreB_DATOS = .Range("A4")
Else
Set CeldaLibreB_DATOS = .Range("B3").End(xlDown).Offset(1, -1)
End If
End With
respecto de qué hacer si hay celdas que no contienen datos:
El bucle recorre las celdas hasta que encuentra un inrgeso vacío.
Tendrás que modificar esta condición del bucle, para que recorra todos los días de la semana tengan o no tengan datos.
En vez de Do Until IsEmpty(ActiveCell)
Puedes poner Do Until ActiveCell.Value = "SUBTOTAL". O puedes poner un bucle que se repita 8 veces (que son las filas de datos que tienes)
------
Ya sé Excel, pero necesito más ahora en pdf
------
Ya sé Excel, pero necesito más.