filtro MACRO



  • filtro MACRO
    di NICOLA (utente non iscritto) data: 05/05/2016 13:03:56

    Allego un file di esempio dove ho inserito una macro per filtrare in base alla data (gg/mm/aaaa), ma non funziona.
    Qualcuno riesci a dirmi dov'è l'errore ?
    GRAZIE



  • di Luca73 data: 05/05/2016 14:12:04

    Ciao Secondo me il tuo file è affetto da due errori uno formale ed uno sostanziale.
    Quello formale riguarda le date e la selezione di giorno mese ed anno cercavi di estrarre dei dati da un valore inserito come stringa (corretto inserendo la funzione CDATE)

    Quello sostanziale secondo me era nel confrontare le date. è concettualmente sbagliato confrontare singolarmente giorno mese ed anno ( a meno che non fosse proprio quello che volevi) ma così il 05/04 non viene prima del 03/06 in quanto il confronto sul mese ti da vero mentre qullo sul giorno falso.
    Io La farei come sotto.
    fammi sapere

    Ciao
    Luca
     
    Sub FiltraDATAEmissioneFattura()
    Dim uRiga As Long, i As Long
    Dim mesei, giornoi, annoi, mesef, giornof, annof
    Dim Giorno As Integer, Mese As Integer
    Dim DataI, DataF, DataA
    Cells.Rows.Hidden = False
    uRiga = Range("E" & Rows.Count).End(xlUp).Row
    giornoi = InputBox("Inserisci GIORNO iniziale")
    If giornoi = "" Then Exit Sub
    mesei = InputBox("Inserisci MESE iniziale")
    If mesei = "" Then Exit Sub
    annoi = InputBox("Inserisci ANNO iniziale")
    If mesei = "" Then Exit Sub
    giornof = InputBox("Inserisci GIORNO finale")
    If giornof = "" Then Exit Sub
    mesef = InputBox("Inserisci MESE finale")
    If mesef = "" Then Exit Sub
    annof = InputBox("Inserire ANNO finale")
    If annof = "" Then Exit Sub
    
    
    DataI = CDate(giornoi & "/" & mesei & "/" & annoi)
    DataF = CDate(giornof & "/" & mesef & "/" & annof)
    For i = 2 To uRiga
        DataA = CDate(Range("E" & i).Value)
        'Giorno = Day(CDate(Range("E" & i).Value))
        'Mese = Month(CDate(Range("E" & i).Value))
        'Anno = Year(CDate(Range("E" & i).Value))
        If DataA >= DataI And DataA <= DataF Then
            Rows(i).Hidden = False
        Else
            Rows(i).Hidden = True
        End If
    Next i
    
    End Sub
    






  • di Luca73 data: 05/05/2016 14:13:39

    Inoltre io non farei inserire solo giorno mese ed anno ma tutto insieme.
    Ti suggerisco inoltro un minimo di gestione errori (al momento potresti inserire un giorno superiore a 31, un mese superiore a 12, il 30 di febbraio....)
    Ciao
    Luca




  • GRAZIE !
    di NICOLA (utente non iscritto) data: 05/05/2016 14:21:47

    Grazie Luca !