Pasar datos de una hoja a otra hoja en unas celdas especificas, dependiendo de una condición

Tengo en una hoja llamada enero(mes), datos como

fecha | cliente |numero de factura | dinero que debe un cliente | pagos | total pagado | falta por pagar | estado |total pagado mes pasado |total pagado y total pagado mes pasado

Cuando un cliente todavía debe, en el estado aparecerá PENDIENTE y cuando termine de pagar aparecerá CANCELADO.

Lo que necesito es que cuando acabe el mes, se pasen a febrero(siguiente mes) los clientes que todavía quedaron debiendo, osea los que en estado aparecen como pendientes.

Que me pase a la siguiente hoja los mismos datos así :

Fecha(igual a la anterior) |   cliente(igual al anterior) |   numero de factura(igual a la anterior) |    dinero que debe un cliente (igual al anterior)  |    pagos(debe de estar vacía porque hará nuevos pagos) |    falta por pagar(tiene esta formula = dinero que debe - total pagado y total pagado mes pasado | estado |    total pagado mes pasado(sera igual a la celda TOTAL PAGADO Y TOTAL PAGADO MES PASADO) del mes anterior  |    total pagado y total pagado mes pasado(misma formula anterior suma de total pagado(de este mes)+total pagado mes pasado(de este hoja))

Espero ayuda con esto por pavor les agradezco mucho

1 Respuesta

Respuesta
1

Te envío la macro con los cambios

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h1 = Sheets(ComboBox1.Value)
    Set h2 = Sheets(TextBox1.Value)
    Set b = h1.Cells.Find("ESTADO")
    If Not b Is Nothing Then
        col = b.Column
        j = 7
        For i = 7 To h1.Range("A" & Rows.Count).End(xlUp).Row
            If h1.Cells(i, col) = "PENDIENTE" Then
                Set c = h2.Cells.Find("ESTADO")
                If Not c Is Nothing Then
                    col2 = c.Column
                    h2.Cells(j, "A") = h1.Cells(i, "A")
                    h2.Cells(j, "B") = h1.Cells(i, "B")
                    h2.Cells(j, "C") = h1.Cells(i, "C")
                    h2.Cells(j, "D") = h1.Cells(i, "D")
                    h2.Cells(j, col2 + 1) = h1.Cells(i, col + 2)
                    j = j + 1
                End If
            End If
        Next
    Else
        Exit Sub
    End If
    MsgBox "Cambio realizado", vbInformation, "Fecha de cambio: " & Date
    Unload Me
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Hola: muchas gracias por los cambios

¿No me aparece el botón para cambiar el mes como lo configuro?

Hola:

Perdón Dante amor, lo que ocurre es que ya organice el botón, ¿pero no se que pasa la macro ya no me funciona y le eh echo de todo y no sirve que podrá ser?

Cuando entras a excel, tienes que habilitar las macros.

Si le cambiaste el nombre al botón tienes que pasar la macro al nuevo nombre.

O crea un botón para la macro.


Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
    1. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: PasarDatos
  9. Aceptar.
  10. Para ejecutarla dale click a la imagen.


Private Sub PasarDatos()
'Por.Dante Amor
    Set h1 = Sheets(ComboBox1.Value)
    Set h2 = Sheets(TextBox1.Value)
    Set b = h1.Cells.Find("ESTADO")
    If Not b Is Nothing Then
        col = b.Column
        j = 7
        For i = 7 To h1.Range("A" & Rows.Count).End(xlUp).Row
            If h1.Cells(i, col) = "PENDIENTE" Then
                Set c = h2.Cells.Find("ESTADO")
                If Not c Is Nothing Then
                    col2 = c.Column
                    h2.Cells(j, "A") = h1.Cells(i, "A")
                    h2.Cells(j, "B") = h1.Cells(i, "B")
                    h2.Cells(j, "C") = h1.Cells(i, "C")
                    h2.Cells(j, "D") = h1.Cells(i, "D")
                    h2.Cells(j, col2 + 1) = h1.Cells(i, col + 2)
                    j = j + 1
                End If
            End If
        Next
    Else
        Exit Sub
    End If
    MsgBox "Cambio realizado", vbInformation, "Fecha de cambio: " & Date
    Unload Me
End Sub

Revisa que ahora la macro se llama "PasarDatos", ese es el nombre que debes asignar al botón.

Perdona, la macro que debes asignar al botón se llama CambiarMes

Entonces no le muevas a la otra macro, ya que la macro que hace el cálculo está dentro de un formulario

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas