filtra dati



  • filtra dati
    di BaroneRosso (utente non iscritto) data: 18/09/2013 13:02:27

    Salve ho un file dove su una cella è attivo il filtro per la ricerca, e dovrei apportare delle modifiche.
    La ricerca avviene nel foglio elencoprezzi la cella che attiva la ricerca si trova nella cella B3.
    Volevo sapere se possibile spostare la cella che attiva la ricerca B3, sopra dell’intestazione delle colonne in B1 e poi aggiungere delle righe sopra B1
    Allego il file di esempio.


  • filtra dati
    di BaroneRosso (utente non iscritto) data: 18/09/2013 13:31:05

    Allego il codice che filtra i dati
     
    Option Explicit
    'questo codice è inserito sul foglio elencoprezzi
    
    Private Sub Worksheet_Change(ByVal Target As Range)
          If Not Intersect(Target, Me.Range("B3")) Is Nothing Then
            With Target(1, 1)
              Call mfiltra(.Value, .Address, .Column)
            End With
          End If
    End Sub
    
    '-----------------------------------------------------------------
    
    Option Explicit
    'questo codice è inserito in un modulo
    
    ' filtra in base ai parametri passati
    
    Public Sub mfiltra(ByVal s As String, ByVal add As String, nFld As Long)
    
        With Selection
            If s = "" Or s = "INSERIRE QUI TESTO PER RICERCA" Then
              If .Value = "" Then .Value = "INSERIRE QUI TESTO PER RICERCA"
            .AutoFilter Field:=nFld, Criteria1:="*" & s & "*"
            Else
             .AutoFilter Field:=nFld, Criteria1:="*" & s & "*"
            End If
        End With
    
    End Sub
    
    



  • di mb (utente non iscritto) data: 18/09/2013 14:20:50

    ciao forse non ho capito bene il tuo problema ??
    ma puoi inserire altre righe e poi vai nella sub e modifica B3 con il codice della casella in cui vuoi inserire il dato da ricercare
    ciao


  • filtra dati
    di BaroneRosso (utente non iscritto) data: 18/09/2013 15:11:53

    grazie mb ho provato a fare come dici tu, forse ho sbagliato qualche passagio e la modifica non funziona, forse il problema è che la cella B3 e prima dellintestazione delle colonne, appena io la sposto portandola in B1 ed eleimindo B3 la ricerca non funziona, se puoi apri il file allegato e prova a fare la modifica



  • di mb (utente non iscritto) data: 18/09/2013 16:04:11

    ciao ho provato ad aprire il tuo file
    inserire tre righe e cancellare la riga B3
    poi ho modificato le istruzioni come sottoriportato
    inserito la parola roccia in b2 e funziona
    io sono solo uno smanettone che sta cercando di capire vba ci sono dei grandi maestri ne forum che sicuramente potranno esserti più d'aiuto
    mi spiace
     
    Private Sub Worksheet_Change(ByVal Target As Range)
          If Not Intersect(Target, Me.Range("B2")) Is Nothing Then
            With Target(1, 1)
              Call mfiltra(.Value, .Address, .Column)
            End With
          End If
    End Sub


  • filtra dati
    di BaroneRosso (utente non iscritto) data: 18/09/2013 17:25:21

    Si funziona il problema e che scompare l'intestazione delle colonne


  • filtra dati
    di BaroneRosso (utente non iscritto) data: 18/09/2013 23:12:46

    Salve qualcuno sa come posso risolvere il problema esposto?
    Spero che qualcuno mi possa aiutare grazie



  • di mb (utente non iscritto) data: 19/09/2013 00:23:22

    ciao scusa l'ora ma sono rientrato solo adesso
    mi spiace ma non so come aiutarti il file funziona correttamente
    aspettiamo fiduciosi qualche genio



  • di HarryBosch data: 19/09/2013 01:31:22

    Ti riallego il file "filtra dati 2"
    Ho leggermente modificato le due sub in questione, relative al foglio "elenco prezzi" e al modulo1; ora mi sembrano più "scorrevoli".
    La cella dove inserire la stringa da cercare è la B1 (Target). Troverai una riga nascosta, la 3, dove non si deve inserire nessun dato: lo stacco serve per applicare il filtro alla tabella sottostante (il filtro viene applicato nella sub mfiltra a partire dal range [a4])


  • filtra dati
    di BaroneRosso (utente non iscritto) data: 19/09/2013 19:05:12

    Grazie per l'aito HarryBosch adesso funziona tutto, solo che volevo capire come mai c'è una righa nascosta?
    Volevo chiede se qundo premo invio per far partire il filto per la ricerca, e possibile che la cella selezionata sia la prima cella attiva dove ci sono gli articoli,adesso dopo che premo invio la cella seleziona e la B6 che è quella sotto della cella di ricercae risulta l'intestazione di colonna, sero che si possa fare.
    un grazie anche a mb e a tutto lo staf.

    Vedo apportare un ultima modifica e sto provando se ci riesco, altrimenti chiederò ancara un aiuto.



  • di HarryBosch data: 19/09/2013 21:39:03

    Modifica la SUb mfiltra che si trova nel modulo1 come sotto; si tratta soltanto di aggiungere l'ultima istruzione che vedi, la quale sposterà il cursore sulla prima cella filtrata della colonna B.
    Se cancelli il valore della ricerca, la cella attiva rimane sempre la B1.
     
    Public Sub mfiltra(ByVal s As String, ByVal add As String, nFld As Long)
    
      If s = "" Or s = "INSERIRE QUI TESTO PER RICERCA" Then
        On Error Resume Next
        ActiveSheet.ShowAllData
        ActiveCell = "INSERIRE QUI TESTO PER RICERCA"
      Else
        If ActiveSheet.AutoFilterMode Then Cells.AutoFilter
        [a4].AutoFilter Field:=nFld, Criteria1:="*" & s & "*"
        Cells(Range("b5:b" & Rows.Count).SpecialCells(xlCellTypeVisible).Row, 2).Activate
      End If
    
    End Sub


  • filtra dati
    di BaroneRosso (utente non iscritto) data: 20/09/2013 12:14:56

    Grazie HarryBosch funziona tutto a meraviglia