Excel - Macro con condición de fecha

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro con condición de fecha

Publicado por Ricardo (3 intervenciones) el 03/08/2018 11:50:05
Buenos dias!!!

Necesito una macro un poco complicada( por lo menos para mí nivel)

Os adjunto unos ejemplos de lo que quiero hacer. a ver si puede alguien ayudarme. En el libro "ejemplo 1" quiero crear un boton con macro que si la celda T41 pone 1-ago mande la celda J41 a la fila 9 del libro "ejemplo 2" en la columna que coincida con la fila 7 "1-ago" también las celdas V35 e Y35 del libro "ejemplo1" vayan a las filas 10 y 11 respectivamente del libro "ejemplo 2"


Si la casiila T 41 pusiera por ejemplo 7-ago lo pusiera en la columna donde coincida I9 I10 I11


Muchas gracias. A ver si fuera posible
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro con condición de fecha

Publicado por Antoni Masana (2474 intervenciones) el 03/08/2018 15:06:51
Prueba si te funciona bien esta MACRO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Option Explicit
 
Sub Copiar_Datos()
    Dim Libro_1 As String, Tot_1 As Single, Fecha As Date, _
        Libro_2 As String, Tot_2 As Single, Tot_3 As Single, Col As Integer
 
    Libro_1 = ActiveWorkbook.Name
    Libro_2 = "Ejemplo 2.xlsm"
 
    Sheets("Hoja1").Select
 
    Fecha = Cells(41, "T")
    Tot_1 = Cells(41, "J")
    Tot_2 = Cells(35, "V")
    Tot_3 = Cells(35, "Y")
 
    ' ---&---  Test to see if the file is open.
 
    If Not IsFileOpen("C:\Tmp\" & Libro_2) Then
       Workbooks.Open "C:\Tmp\" & Libro_2
    Else
       Workbooks(Libro_2).Activate
    End If
 
    Sheets("CONTABILIDAD GENERAL").Select
 
    Col = 3
    While Cells(7, Col) <> Fecha And Cells(7, Col) <> ""
        Col = Col + 1
    Wend
 
    If Cells(7, Col) <> Fecha Then
       MsgBox "No se pudo encrontrar la fecha:" & Fecha
    Else
       Cells(9, Col) = Tot_1
       Cells(10, Col) = Tot_2
       Cells(11, Col) = Tot_3
    End If
End Sub
 
Function IsFileOpen(filename As String)
    Dim filenum As Integer, errnum As Integer
 
    On Error Resume Next   ' Turn error checking off.
    filenum = FreeFile()   ' Get a free file number.
    Open filename For Input Lock Read As #filenum
    Close filenum          ' Close the file.
    errnum = Err           ' Save the error number that occurred.
    On Error GoTo 0        ' Turn error checking back on.
 
    Select Case errnum
        Case 0:    IsFileOpen = False
        Case 70:   IsFileOpen = True
        Case Else: Error errnum
    End Select
End Function


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro con condición de fecha

Publicado por Ricardo (3 intervenciones) el 03/08/2018 16:25:48
Buenas tardes!!!

Agradecerte la rápida respuesta y lo ingeniosa que es, creo que va a funcionar. de momento no me funciona por que no se donde tengo que meter la ruta de acceso en la macro para que encuentre el libro "ejemplo 2" y que introduzca los datos aunque el libro "ejemplo 2" este cerrado .


Sin-titulo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro con condición de fecha

Publicado por Antoni Masana (2474 intervenciones) el 03/08/2018 19:21:26
Se me olvido poner la ruta en una variable y la puse fija, esta en las líneas 19 y 20

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit
 
Sub Copiar_Datos()
    Dim Libro_1 As String, Tot_1 As Single, Fecha As Date, _
        Libro_2 As String, Tot_2 As Single, Tot_3 As Single, Col As Integer
 
    Libro_1 = ActiveWorkbook.Name
    Libro_2 = "Ejemplo 2.xlsm"
 
    Sheets("Hoja1").Select
 
    Fecha = Cells(41, "T")
    Tot_1 = Cells(41, "J")
    Tot_2 = Cells(35, "V")
    Tot_3 = Cells(35, "Y")
 
    ' ---&---  Test to see if the file is open.
 
    If Not IsFileOpen("C:\Tmp\" & Libro_2) Then
       Workbooks.Open "C:\Tmp\" & Libro_2
    Else
       Workbooks(Libro_2).Activate
    End If

Solo se usa en estas dos lineas pero lo mejor es una variable de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit
 
Sub Copiar_Datos()
    Dim Libro_1 As String, Tot_1 As Single, Fecha As Date, Ruta as String, _
        Libro_2 As String, Tot_2 As Single, Tot_3 As Single, Col As Integer
 
    Libro_1 = ActiveWorkbook.Name
    Libro_2 = "Ejemplo 2.xlsm"
    Ruta = "C:\Tmp\"
 
    Sheets("Hoja1").Select
 
    Fecha = Cells(41, "T")
    Tot_1 = Cells(41, "J")
    Tot_2 = Cells(35, "V")
    Tot_3 = Cells(35, "Y")
 
    ' ---&---  Test to see if the file is open.
 
    If Not IsFileOpen(Ruta & Libro_2) Then
       Workbooks.Open Ruta & Libro_2
    Else
       Workbooks(Libro_2).Activate
    End If

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar