Ricerca per giornomese



  • Ricerca per giorno/mese
    di Fabio (utente non iscritto) data: 04/05/2016 14:13:53

    buongiorno a tutti,
    da un elenco di clienti dove in una colonna ho la data di nascita (gg/mm/yyyy) avrei bisogno di filtrarli in base al loro compleanno.
    Ho cercato di utilizzare un codice che avevo trovato in precedenza ma ho bisogno che non mi tenga conto dell'anno di nascita.
    Essendo poco esperto di Vba, qualcuno sa dirmi come modificare il codice che riporto e suggerirmene uno nuovo?
    Grazie e buona giornata.

     
    Sub P_Filtra_DATA_COMPLEANNO()
    Dim Crituno
    Dim Critdue
    Crituno = InputBox("Inserire la prima data")
    If Crituno = "" Then Exit Sub   
    Critdue = InputBox("Inserire la seconda data")
    If Critdue = "" Then Exit Sub    
    Range("O3").Select      
    Selection.AutoFilter Field:=12, Criteria1:=">=" & Format(Crituno, "mm/dd/yy"), Operator:= _
    xlAnd, Criteria2:="<=" & Format(Critdue, "mm/dd/yy")
    End Sub



  • di cromagno data: 04/05/2016 19:38:09

    Ciao Fabio,
    se hai bisogno solo di un criterio...eliminerei semplicemente il criterio superfluo (criteria2) e modificherei la formattazione del primo criterio in "dd/mm/yyyy".

    Ma non sono sicuro che sia quello che vuoi, quindi allega un file di esempio per capire meglio cosa ti serve. 
     
    Sub P_Filtra_DATA_COMPLEANNO()
    Dim Crituno
    Crituno = InputBox("Inserire la prima data")
    If Crituno = "" Then Exit Sub   
    Range("O3").Select      
    Selection.AutoFilter Field:=12, Criteria1:=">=" & Format(Crituno, "dd/mm/yyyy")
    End Sub



  • di Fabio (utente non iscritto) data: 04/05/2016 21:26:49

    ciao cromagno e grazie per la risposta.
    Ho provato il tuo suggerimento ma non funziona.
    Io vorrei, ad esempio, filtrare le persone che sono nate dal 01/03 al 15/03 indipendentemente dall'anno.
    Allego un file di prova



  • di cromagno data: 05/05/2016 01:04:20

    Ciao Fabio,
    ora credo di aver capito ma con il metodo che hai proposto non credo sia possibile...o almeno, credo sia meglio usare un'altra "strada".

    Nel file che allego ti usciranno 4 inputbox per inserire:
    Giorno della data iniziale
    Mese della data iniziale
    Giorno della data finale
    Mese della data finale

    (il codice è sotto)....

    P.S.
    Sarebbe meglio aggiungere qualche controllo in caso si inseriscano giorni o mesi non validi.
     
    Sub Birthday()
    Dim uRiga As Long, i As Long
    Dim mesei, giornoi, mesef, giornof
    Dim Giorno As Integer, Mese As Integer
    
    Cells.Rows.Hidden = False
    uRiga = Range("O" & Rows.Count).End(xlUp).Row
    giornoi = InputBox("Inserire giorno della data iniziale")
    If giornoi = "" Then Exit Sub
    mesei = InputBox("Inserire mese (in numero) della data iniziale")
    If mesei = "" Then Exit Sub
    giornof = InputBox("Inserire giorno della data finale")
    If giornof = "" Then Exit Sub
    mesef = InputBox("Inserire mese (in numero) della data finale")
    If mesef = "" Then Exit Sub
    
    For i = 4 To uRiga
        Giorno = Day(Range("O" & i).Value)
        Mese = Month(Range("O" & i).Value)
        If Giorno >= giornoi And Mese >= mesei And Giorno <= giornof And Mese <= mesef Then
            Rows(i).Hidden = False
        Else
            Rows(i).Hidden = True
        End If
    Next i
    
    End Sub
    



  • di Fabio (utente non iscritto) data: 05/05/2016 09:09:04

    Ciao cromagno,
    è perfetto. Ora inserisco i controlli sulle date (spero di farcela).
    Grazie mille buona giornata.