Agregar una columna mas en macro de filtro

14 envíos / 0 nuevos
Último envío
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2775
Agregar una columna mas en macro de filtro

Hola caballeros, A los conocedores en la materia, quieor pedirles que me presten una pequeña (grand) ayuda (grande para mi por mi falta de conocimiento para hacerlo.

Se trata de un filtro desde un formulario el cual tiene un TextBox para filtrar y 2 optionbutton

Lo que pretendo es que el textBox filtre en 2 columnas segun la pagina seleccionada (OptionButton Filtrar Paiga 1) en columnas C y D

pagina seleccionada (OptionButton Filtrar Paiga 2) en columnas N y O

Manteniendo la funcion actual de los OptionButton

 

En el libro, la hoja Lista Repuestos esta dividida en 2 paginas; Pagina 1 B1 hasta K51

La 2ª pagina desde M1 hasta V51

AdjuntoTamaño
File necesitomas.xlsm630.69 KB

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 4 días 7 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12455
HolaParece que has eliminado

Hola

Parece que has eliminado un montón de funciones, y entre ellas, alguna de las que utiliza el formulario.

Entiendo que es el que aparece al pinchar en el botón "Eliminar" ok?

Un saludo

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2775
Dando seguimiento a la respuesta del amigo Cron

Si, ese es

EDITADO:

dejame corrigir el libro, pues algo esta mal, ya lo subo de nuevo

Le faltaba esto      Sub FiltrarLista2(col1, col2, col3)

Tiene la hoja Filtro (oculta) que la necesita, la hoja Lista Repuestos y es todo lo que necesita el frmEliminar para su ejecucion

marco option Filtrar pagina 1  y me filtra de la pagina 1 toda columna D sin escribir algo en el TextBox, asi lo quiero, está bien

marco option Filtrar pagina 2  y me filtra de la pagina 2 toda columna O sin escribir algo en el TextBox, asi lo quiero, está bien

Si escribo Ej: "sea" (sin comillas) y piso el buton Filtrar me da todo que tenga sea (SEAL, SEALL. etc)  de la pagina que el option esté marcado, mui bien, asi esta bien

Lo anterior está filtrando de la columna D (pagina 1) o O (pagina 2) segun el option marcado.

¿Pero que quiero? que al marcar uno de los option, o, al escribir algo en el textBox y pisar el buton Filtrar que no solo filtre de la columna D o de la O según la pagina, quiero que tambien incluia la columna C y N quedando filtrando en las 2 columnas:

Marco el option Filtrar Pagina 1 filtre  las C y D y Filtrar Pagina 2 en las N y O

AdjuntoTamaño
File necesitomas.xlsm628.48 KB
Cron
Imagen de Cron
Offline
última acción: Hace 4 días 7 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12455
A ver si te puedo entender..

A ver si te puedo entender...

Como dices, con las columnas D y O funciona perfectamente. He probado la opción de borrar y también funciona.

¿Lo que quieres es que si ponemos 1T en el diálogo y le damos a filtrar, te aparezcan también los valores en los que el código de producto empiece por 1T?

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2775
Filtrar por 2 columnas cada Pagina

Eso mismo es amigo Cron.

Repito, disculpame: Tal como esta, filtra solo de la columna D o O,

Quiero que filtre en las columnas Cy D de la pagina 1 y en la Pagina 2 N y O.

Como dices (preguntas) eso es; si selecciono la pagina 1 y escribo en el textbox 1t, que me presente todos los que contienen 1t si escribo se me dé los SEAL, SEALL ETC

Selecciona Filtrar Pagina 1 y escribe tu en el textbox esto = 1t y pisa el buton Filtrar y te dice que no hay

borera y escribe ro, pisa el buton Filtrar y te aprecen los renglones contentivos de RO (rolinera por ejemplo)

Y si seleccionas Filtrar Pagina 2 sucede lo mismo

 Aqui estaré hasta las 4 pm que es la hora que quitan la energia eloectrica en esta zona hasta las 7pm que vuelve nuevamente.

ESTO ES VENEZUELAAAAAAAAAA, la tuierra de los sin comida, sin medicinas, sin agua, sin luz eletrica, y cuente usted de soñar

Cron
Imagen de Cron
Offline
última acción: Hace 4 días 7 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12455
HolaTras revisar un poco, se

Hola

Tras revisar un poco, se me ha ocurrido lo siguiente:

En todos los lugares donde aparece:

Call FiltrarLista2("B", "K", "D")

Sustituirlo por

Call FiltrarLista2("B", "K", "D", "C")

De la misma manera, donde aparece 

Call FiltrarLista2("M", "V", "O")

sustituirlo por:

Call FiltrarLista2("M", "V", "O", "N")

Una vez hecho esto, tenemos que hacer que la función FiltrarLista2 acepte el 4º parámetro. Para eso, en la definición sustituir 

Sub FiltrarLista2(col1, col2, col3)

por 

Sub FiltrarLista2(col1, col2, col3, col4)

Finalmente, vamos a hacer que el código haga algo con col4:

    For i = 11 To 46
        If (Cells(i, col1) <> "") And _
           ((UCase(h1.Cells(i, col3)) Like "*" & UCase(txtFiltro) & "*") Or _
           (UCase(h1.Cells(i, col4)) Like "*" & UCase(txtFiltro) & "*")) Then
            h1.Range(col1 & i & ":" & col2 & i).Copy h2.Cells(j, "A")
            'h1.Range(col1 & i & ":" & col2 & i & ":" & col3 & i & ":" & col4 & i).Copy h2.Cells(j, "A")
            h2.Cells(j, "K") = i
            j = j + 1
        End If
    Next

Espero que te sirva.
 
Un saludo
 
P.D. Y ánimo con la situación que tenéis encima... Ojalá se os vaya resolviendo pronto.
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2775
Voy probando Cron, gracia

Voy probando Cron, gracia spor tu empeño y tiempo.

Ya dire algo (si estoy vivo jejejejje )

Funciona amigo, millon de gracias, y una pregunta mas. En el evento "Private Sub cbtElimi_Click()" no hace falta agregar tambien las 2 columnas?

    If OptionButton1 Then
        c1 = "B": c2 = "K": c3 = "D"
    ElseIf OptionButton2 Then
        c1 = "M": c2 = "V": c3 = "O"
    End If

    If OptionButton1 Then
        c1 = "B": c2 = "K": c3 = "D": c4 = "C"
    ElseIf OptionButton2 Then
        c1 = "M": c2 = "V": c3 = "O": c4 = "N"
    End If

Igual aqui en el mismo evento

    Call FiltrarLista2(c1, c2, c3, c4)

Cron
Imagen de Cron
Offline
última acción: Hace 4 días 7 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12455
Sí, esa parte se me había

Sí, esa parte se me había escapado. Pero no como dices. Prueba lo siguiente:

   If OptionButton1 Then
        c1 = "B": c2 = "K": c3 = "D" : c4 = "C"
    ElseIf OptionButton2 Then
        c1 = "M": c2 = "V": c3 = "O" : c4 = "N"
    End If

Y luego, al final del procedimiento, sustituye:

    Call FiltrarLista2(c1, c2, c3)

por:

    Call FiltrarLista2(c1, c2, c3, c4)

 

Un saludo

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2775
Ya, te adelantaste mientras

Ya, te adelantaste mientras yo corregia el detalle

Funciona perfecto

iré averiguar si en el evento Eliminar no hace interferencia negativas alguna

Amigo Cron, algunos temas los tengo abierto, esperando respuesta de alguien extendido, ¿podrias echarle un ojo?  Gracias miles

Cron
Imagen de Cron
Offline
última acción: Hace 4 días 7 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12455
Ya lo he mirado. Lo que no

Ya lo he mirado. Lo que no contesto es porque no lo sé. Espera una respuesta de Paco, aunque debe estar muy liado con el trabajo últimamente...

Saludos

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2775
Perfecto, esperar´ñe por paco

Perfecto, esperar´ñe por paco si acaso se desocupa

QUiero hacerte una ptregunta mas referente al actual, repito = funciona perfecto pero;

Quisiera poder agregarle algo de MsgBox, algo como esto

'Mostrar resultado filtrados, por el boton Filtro en ListBox
Private Sub cbtFiltro_Click() 'LISTO
'Por.Dante Amor  http://www.todoexpertos.com/preguntas/6tq6n98o8eefyo4j/arreglar-la-macro...
    If OptionButton1 Then
        Call FiltrarLista2("B", "K", "C", "D")
    ElseIf OptionButton2 Then
        Call FiltrarLista2("M", "V", "N", "O")
    End If

'le meti esto
   MsgBox "Selecciona una página.", vbCritical, "Selección"
End Sub

Medio funciona pero al tener uno de los option seleccionado y pisar el botón, sI NO EXISTE EL DATO aparece el mensaje de que no exiaste pero TAMBIEN aparec e el mensaje de que seleccione una Pagina.

Se podrá arreglar SOLO para que si escribo algo en el TextBox y piso el boton Filtrar SIN TENER ninguno de los option seleccionado me mande ese mensage?

EDITADO:

Podria ser al excribir la 1ª letra en el TextBox, SI NO EXISTE NINGUN OPTION SELECCIONADO, me mande el mensage "Por Favor Seleccione una página"

Voy a tratar por el ultimo y vere si tengo esa capacidad

Algo de esto ¿seria?

Private Sub txtFiltro_Change() 'TextBox para filtrado
 If OptionButton1 And OptionButton2 = False Then
    MsgBox "Selecciona una página.", vbCritical, "Selección"
    Exit Sub
    ElseIf
    'SI ESTÁ TRUE ¿QUE HACE?
     If OptionButton1 And OptionButton2 = True Then
 OptionButton1_Click and OptionButton2_Click
 End If

Algo está malisimo aqui que al editar el codigo de una me da error

Fin de EDICION

No sé si será en el evento "Private Sub cbtFiltro_Click()" o en el "Sub FiltrarLista2(col1, col2, col3, col4)"

De eso lo sabes tu mucho mejor que yo

Cron
Imagen de Cron
Offline
última acción: Hace 4 días 7 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12455
Entra en FiltrarLista2. Al

Entra en FiltrarLista2. Al final tienes un If que es donde tienes que poner eso.

    If u2 > 1 Then
        Lista2.RowSource = h2.Name & "!A2:K" & u2
                  <---------------------------AQUÍ LO QUE QUIERAS QUE OCURRA SI HAY DATOS
    Else
        MsgBox "No se encuentra.", vbExclamation, "Inexistente"
                  <---------------------------AQUÍ LO QUE QUIERAS QUE OCURRA SI NO HAY DATOS
    End If


Un saludo

 
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 2775
Ahí está bien la cosa dice

Ahí está bien la cosa dice que no se encuentra, mui bien pero me refiero a que:

Con el formulario abierto y escribo en el TextBox. Si no existe NINGUNO DE LOS 2 OPTIONBOTTON seleccionado, me mande el mensage que " Favor seleccionar una página"

Ahí donde dices solo, cambiaria el texto al no existir el dato

Cron
Imagen de Cron
Offline
última acción: Hace 4 días 7 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12455
¿Y por qué no seleccionas por

¿Y por qué no seleccionas por defecto uno de los dos radiobuttons? Es lo que recomiendan los expertos en usabilidad:

Alzado.org - Eduardo Manchón

Olga Carreras

Checkboxes vs. Radio Buttons - Jakob Nielsen

Pero vamos, esto ya no es Excel, es un paso más: diseño, usabilidad, experiencia de usuario...

Saludos