Tasto cerca in foglio excel



  • Tasto cerca in foglio excel
    di Alex984 (utente non iscritto) data: 13/10/2014 13:34:10

    Ciao ragazzi.
    Come da titolo avrei bisogno di un vostro aiuto per inserire in un foglio excel un tasto che abbia la funzione di cercare del testo o dei numeri all'interno di un singolo f
    Mi spiego meglio. Il mio foglio excel ha sostanzialmente 4 colonne. Nella prima (A) ho un codice numerico del tipo 000000000.0. Nella seconda colonna (B) ho la traduzione dei codici riportati nella colonna A (caratteri alfanumerici). Nella colonna C ho un link che se aperto, porta al relativo foglio con una foto esemplificativa del codice.
    Tutto quello che voglio fare è questo: dare la possibilità di effettuare una ricerca libera nelle colcolonne A e B (mediante l'inserimento, anche parziale, del codice o della traduzione). Una volta trovata la corrispondenza, mostrare solo le righe che corrispondono alla chiave di ricerca inserita.

    Allego un file di esempio per essere un po' più chiaro.

    Grazie a tutti!



  • di Lucas87 data: 13/10/2014 14:29:38

    Ciao
    Da collegare a due pulsanti, uno per la ricerca e l'altro per ripristinare le righe nascoste.
    Se usato più volte cerca solo tra i risultati
     
    Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    art = InputBox("Articolo da cercae:")
    For i = 1 To Range("a" & Rows.Count).End(xlUp).Row
        If InStr(1, Cells(i, 1), art, vbTextCompare) = 0 And InStr(1, Cells(i, 2), art, vbTextCompare) = 0 Then
            Rows(i).Hidden = True
        End If
    Next
    Application.ScreenUpdating = True
    End Sub
    
    Private Sub CommandButton2_Click()
    Rows.Hidden = False
    End Sub



  • di Alex984 (utente non iscritto) data: 13/10/2014 16:12:07

    Ho allegato il file di esempio nel quale ho inserito il codice che mi hai detto. Non ho capito però dove inserire il testo da cercare. Ho inserito una textbox ma non ho molta pratica a dire il vero e non so come farla funzionare. Le colonne in cui deve cercare sono la C e la G.

    Grazie mille.



  • di Lucas87 data: 13/10/2014 18:59:57

    1-Se le colonne sono C e G perchè prima hai detto A e B?
    2-Perchè le colonne "Descrizione...." sono formate da 3 colonne (D,E,F G,H,I)? Decidi se unire le celle o allargare la colonna...tenerle divise non va bene.
    3-Il mio codice non l'hai nemmeno provato altrimenti ti saresti accorto che il valore da cercare lo chiede tramite inputbox.
    4-Nel file che hai inserito non c'è proprio nessun codice
    Veniamo al codice:
    Crea 2 pulsanti e una textbox da Controlli Activex
    e incolla i codici
     
    Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    If TextBox1.Text <> "" Then
        For i = 7 To Range("c" & Rows.Count).End(xlUp).Row  'il "c" è la colonna che contiene la descrizione
            '3 e 7 sono le colonne C e G. Se cambiano modifica il codice
            If InStr(1, Cells(i, 3), TextBox1.Text, vbTextCompare) = 0 And InStr(1, Cells(i, 7), TextBox1.Text, vbTextCompare) = 0 Then
                Rows(i).Hidden = True
            End If
        Next
    Else
        MsgBox "Inserire un valore da cercare."
    End If
    Application.ScreenUpdating = True
    End Sub
    
    Private Sub CommandButton2_Click()
    Rows.Hidden = False
    End Sub
    



  • di Alex984 (utente non iscritto) data: 13/10/2014 19:13:52

    No Luca, scusa ma mi sono accorto ora di aver allegato il file sbagliato. In quello di prova che avevo fatto io, avevo incollato il codice che mi avevi allegato. Ho anche notato che la chiave di ricerca andava inserita in una textbox e infatti l'ho aggiunta rinominandola "inputbox" come scritto nel codice. Purtroppo non ho molta dimestichezza con questi strumenti e quindi mi sono arreso facilmente.

    Scusa per il malinteso. Credimi che non era una scusa per avere tutto bello e fatto.

    Ad ogni modo le tre colonne mi servono per altri motivi, ma comunque i dati andranno inseriti sempre nelle colonne C e G.
    Nel primo post ho cercato il più possibile di semplificare e ho detto A e B. Pardon.

    Mi spiegheresti come funziona il puntamento delle righe/colonne nel codice? Cioé se voglio leggere la cella G15 cosa devo inserire nel codice?

    Poi, se voglio evitare la textbox nel file, ma leggere direttamente da una cella, come posso fare?

    Grazie mille per tutto.



  • di Lucas87 data: 13/10/2014 19:29:37

    Il ciclo for va da 7 (riga da cui comincia la tabella) fino al valore definito da range("c" & rows.count).... che corrisponde all'ultima riga usata sulla colonna C (se non è la C ti basta cambiare il "c"). Questo permette di controllare le righe una alla volta.
    Con if instr(....controlla se il valore da cercare si trova nelle celle della riga in esame (i) sulle colonne 3 (C) e 7 (G).
    Se il valore lo vuoi indicare da una cella ti basta sostituire Textbox1.Text con Range("tuacella").
    Inputbox e textbox sono elementi diversi.