PREGUNTA

4 envíos / 0 nuevos
Último envío
aranita
Imagen de aranita
Offline
última acción: Hace 12 años 11 meses
Nivel 1 - 200 puntos
alta: 10/02/2010 - 13:23
Puntos: 301
PREGUNTA

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

AdjuntoTamaño
File Taller_Sena_V2.xlsx39.15 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 1 hora
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: PREGUNTA

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.

aranita
Imagen de aranita
Offline
última acción: Hace 12 años 11 meses
Nivel 1 - 200 puntos
alta: 10/02/2010 - 13:23
Puntos: 301
Re: PREGUNTA

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

AdjuntoTamaño
File Taller_Sena_V2.1.1.xlsm70.56 KB

ArAnItA

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 1 hora
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: PREGUNTA

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.