Excel - Guardar hoja de libro eliminando filas segun condicion

 
Vista:
Imágen de perfil de Juan Jose
Val: 9
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Guardar hoja de libro eliminando filas segun condicion

Publicado por Juan Jose (6 intervenciones) el 25/05/2018 19:07:09
Hola a todos.
tengo una hoja Excel con una columna con datos de personas y otra con los importes.

foto1

y he creado un boton que guarda con cuadro de dialogo la hoja .

pero quisiera modifcar el codigo para que en la hoja guardada , se eliminaran las filas en las que el importe sea 0

Es decir , copiamos la hoja , eliminamos las filas que contengan cero , y la guardamos en la direccion indicada por el cuadro de dialogo

El codigo a modificar es este :

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
Sub Guardar_plantilla()
'Cuadro de Dialogo para guardar el dato
With Application.FileDialog(msoFileDialogSaveAs)
    .Title = "Guardar Hoja Formateada "
    .AllowMultiSelect = False
    'nombre con el que se guardara
    .InitialFileName = "Prueba Molino"
    .FilterIndex = 1 'como xls
    If .Show Then
    ruta = .SelectedItems(1)
    End If
End With
            Worksheets(1).Copy
            Application.DisplayAlerts = False
            ActiveSheet.Unprotect
            'ocultacion de los botones
            ActiveSheet.Shapes("bt_guardar").Select
            Selection.Visible = False
            'Propiedades de la tabla
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
             , AllowInsertingRows:=True, AllowDeletingRows:=True, AllowSorting:=True
            Application.DisplayAlerts = False
            ActiveWorkbook.SaveAs Filename:=ruta, FileFormat:=xlWorkbookDefault
            ActiveWorkbook.Close
 
 
End Sub

Alguien me podria ayudar , le estaria muy agradecido.

un saludo
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

Guardar hoja de libro eliminando filas segun condicion

Publicado por ateneo (1 intervención) el 26/05/2018 19:10:29
1
2
3
4
5
6
Sub Copia_a_otra_Hoja_si_es_0()
 
    Sheets("Hoja1").Columns("A:B").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range("Hoja2!Criteria"), CopyToRange:=Range("Hoja2!Extract") _
    , Unique:=False
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juan Jose
Val: 9
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Guardar hoja de libro eliminando filas segun condicion

Publicado por Juan Jose (6 intervenciones) el 28/05/2018 12:38:46
Muchas gracias , despues de darle vueltas , encontre una forma de hacerlo, añadiendo un cuadro de dialogo para guardar la hoja segun nombre.

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
Sub Export_Remesa()
fecha = Replace(Date, "/", "-")
'Cuadro de Dialogo para guardar el dato
With Application.FileDialog(msoFileDialogSaveAs)
    .Title = "Guardar Remesa Para Banco "
    .AllowMultiSelect = False
    'nombre con el que se guardara
    .InitialFileName = "tabla filtrada" & fecha
    .FilterIndex = 1 'como xls
    If .Show Then
    march = .SelectedItems(1)
    Else
    Exit Sub
    End If
End With
            Worksheets(3).Copy
            Application.DisplayAlerts = False
            ActiveSheet.Unprotect
 
            BorrarFilasVacias
            'ocultacion de los botones
            ActiveSheet.Shapes("bt_exportRemesa").Select
            Selection.Visible = False
            ActiveSheet.Shapes("bt_altaSocio").Select
            Selection.Visible = False
            'Propiedades de la tabla a guardar
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
             , AllowInsertingRows:=True, AllowDeletingRows:=True, AllowSorting:=True
            Application.DisplayAlerts = False
            ActiveWorkbook.SaveAs Filename:=march, FileFormat:=xlWorkbookDefault
            ActiveWorkbook.Close
 
End Sub

mediante esta funcion borramos las filas vacias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'comprueba la celda y devuelve mensaje
Function BorrarFilasVacias()
'nos situamos en la celda para comenzar y en la que finalizaremos
Dim fila As Long
Dim max As Long
fila =2
ActiveSheet.Range("B4").End(xlDown).Select
max = Selection.Row
 Do While fila < max
     If ActiveSheet.Cells(fila, 2) = 0 Then
         ActiveSheet.Cells(fila, 2.EntireRow.Delete
         max = max - 1                                  'disminuimos la última fila porque hemos eliminado una por medio,
                                                                  'para eliminar un bucle infinito
     Else
         fila = fila + 1
     End If
 Loop
End Function

Pero veo que tu codigo es mas elegante, lo probare a ver.

Muchas gracias de corazon
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