Filtro automatico Dato non trovato



  • Filtro automatico- Dato non trovato
    di Fabio (utente non iscritto) data: 31/10/2014 21:44:23

    Buonasera, per delle ricerche, utilizzo il codice che riporto.
    Funziona benissimo, ma se il dato non viene trovato vengono nascoste tutte le righe.
    Vorrei che mi desse un messaggio tipo "Dato non trovato" e che le righe restino tutte visibili.
    Pensavo di risolverlo inserendo prima una ricerca, e solo se trova il dato mi applica il filtro.
    Qualcuno può suggerirmi un codice?
    Grazie e a tutti.
     
    Sub P_Filtra_TARGA()
        myNum = InputBox
        If myNum = "" Then Exit Sub
        TARGA = ("*" & myNum & "*")
        Selection.AutoFilter Field:=18, Criteria1:=TARGA, Operator:=xlAnd
        ActiveWindow.ScrollRow = 4
    End Sub



  • di Zer0Kelvin data: 31/10/2014 22:19:58

    Ciao.
    Puoi usare il metodo Find per controllare che esista almeno un'occorrenza della stringa cercata
     
    Sub P_Filtra_TARGA()
    Dim myNum As String, Targa As String, Fnd As Range
        myNum = InputBox("Inserire la targa")
        If myNum <> "" Then
            Set Fnd = Selection.Columns(18).Find(myNum, , xlValues, xlPart)
            If Not Fnd Is Nothing Then
                Targa = ("*" & myNum & "*")
                Selection.AutoFilter Field:=18, Criteria1:=Targa, Operator:=xlAnd
                Set Fnd = Nothing
            Else
                MsgBox "Targa non trovata: " & myNum, vbExclamation
            End If
        End If
        ActiveWindow.ScrollRow = 4
    End Sub



  • di Fabio (utente non iscritto) data: 31/10/2014 22:32:52

    grazie Zer0Kelvin,
    per la ricerca completa della targa (es: DS860GF) è perfetto.
    E' possibile utilizzare il metodo Find anche per una ricerca parziale (es: DS) ?
    Ho provato ad utilizzare gli * ma non funziona.
    ciao



  • di Zer0Kelvin data: 31/10/2014 23:00:04

    Veramente avevo già impostato Find per effettuare una ricerca parziale ( xlPart ),può darsi che, da Excel, tu abbia impostato la ricerca in modo che faccia distinzione fra maiuscole e minuscole.
    Prova a modificare l'istruzione così
     
    Set Fnd = Selection.Columns(18).Find(myNum, , xlValues, xlPart, , , False, False)



  • di Zer0Kelvin data: 31/10/2014 23:03:25

    Scusa, mi era sfuggito che tu hai scritto "gli *"; con find, non devi aggiungere nulla alla stringa da cercare.
    Se vuoi trovare le parole che contengono "gli", devi cercare proprio "gli"; Find troverà automaticamente le corrispondenze parziali come "foglia", "cagliari" e simili.



  • di Fabio (utente non iscritto) data: 31/10/2014 23:34:00

    scusa, ma mi sono accorto che il Find non trova la targa (ne completa ne parziale), sia con il primo codice che hai inserito, sia con la riga modificata.
    Ho controllato anche il carattere Maiuscolo/minuscolo
    Ho creato un file di prova che allego
    grazie



  • di lepat (utente non iscritto) data: 01/11/2014 11:24:19

    elimina selection
    Set Fnd = Columns(18).Find(myNum, , xlValues, xlPart)



  • di Fabio (utente non iscritto) data: 01/11/2014 11:36:51

    Perfetto
    Grazie a tutti