Digitazione facilitata Excel



  • Digitazione facilitata Excel
    di magick data: 18/04/2015 19:08:31

    Ciao a tutti, avrei bisgono di una macro creare una digitazione facilitata prendendo i campi da un database di 17900 record. In pratica avrei bisogno che iniziando a digitare le lettere, excel proponesse solo i nomi del database che contengono quelle lettere.
    Sapete aiutarmi?



  • di alfrimpa data: 18/04/2015 19:40:09

    Ciao Magick

    Da quando frequentò i forum su Excel (e non è poco tempo) ho visto spesso domande come la tua ma, a mia memoria, non ricordo sia stata mai data una risposta risolutiva.

    Dal che deduco che l'implementazione di una cosa del genere (sempre che si possa fare, ma col VBA si fa di tutto) non è proprio di facilissima realizzazione.

    L'unica cosa che mi viene di consigliarti è l'utilizzo di una combobox che ha tra le sue caratteristiche quella che quando vai a digitare le prime lettere il cursore si posiziona (nella tendina) sul primo elemento che comincia con le lettere digitate.

    Ma nel tuo caso mi rendo conto che avendo circa 18.000 dati non è comunque facile.

    Alfredo





  • di alfrimpa data: 18/04/2015 19:53:10

    Oppure un'altra idea potrebbe essere quella di utilizzare insieme una TextBox ed una ListBox (in modo da "simulare" una ComboBox).

    All'evento Change della Listbox potrebbe associarsi una macro che estragga i dati in un altro Range del foglio di lavoro e poi impostare la prorietà RowSource della Listbox su questo Range.

    Ma considera queste mie solo parole in libertà e quindi attendiamo il parere di utenti veramente esperti.

    Alfredo





  • di magick data: 18/04/2015 23:16:12

    Ciao Alfredo, grazie per la risposta.
    In realtà su internet ho trovato un codice che dovrebbe fare quello che chiedo, solo che non funziona. Probabilmente va fatta qualche piccola modifica per adeguarlo al mio file. Provo a mettertelo qui, magari leggendolo ti viene in mente qualcosa.
    Intanto proverò a implementare la combobox che suggerisci. Ordinando il database in ordine alfabetico, se la combobox fa il suo lavoro anche con più di una lettera, potrebbe essere una soluzione.
     
        Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        CheckArea = "C2:C10000"
        If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
            If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
                Application.ScreenUpdating = False
                Application.Calculation = xlManual
        RArt = Target.Row
        ArtV = Target.Value
            If ArtV <> 0 Then
                UR = Range("A" & Rows.Count).End(xlUp).Row
            For R = 1 To UR
                If ArtV = Mid(Range("A" & R).Value, 1, Len(ArtV)) Then
                    Target.Value = Range("A" & R).Value
                    GoTo esci
                End If
            Next R
        esci:
        End If
        End If
        Application.EnableEvents = True
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
        End Sub



  • di magick data: 18/04/2015 23:18:27

    Per quanto riguarda l'idea della TextBox, anche volendo non saprei come implentarla



  • di alfrimpa data: 19/04/2015 10:27:19

    Ciao Magick

    Premetto che quel codice l'ho già visto ma non riesco a capire (senza un file su cui applicarlo) come funziona se non a grandissime linee e non mi sembra che (ma posso sbagliare) che non faccia quello che vuoi tu.

    Comunque anch'io credo che la ComboBox sia la soluzione migliore; in una combo più lettere digiti e più ti avvicini all'obiettivo.

    Poi non so se, con l'enorme quantità di dati che hai, possa essere una soluzione efficace per te.

    Se hai bisogno di aiuto sulla combo siamo qua.

    Buona domenica

    Alfredo





  • di magick data: 19/04/2015 13:48:39

    Ciao Alfredo, ho provato a creare la combobox ma non mi consente di scriverci all'interno per filtrare i risultati. Tra l'alto una volta selezionato mi va a mettere il risultato sempre nella stessa cella impostata nel menù formato oggetto. Provo ad allegarti un file.
    Cosa sbaglio?



  • di alfrimpa data: 19/04/2015 20:09:00

    Ciao Magick

    Prova con il file che ti ho allegato.

    Poi, se va bene, se vuoi ti do le delucidazioni del caso.

    Alfredo





  • di magick data: 19/04/2015 20:47:03

    Ciao Alfredo, si così il file va bene. Solo è possibile fare in modo che non accetti le città scritte diversamente da quelle nel database. Cioè per fare un esempio Cefalù nel DB è scritto Cefalu', è possibile fare in modo che copiando e incollando la versione accentata, lui non la accetti come valida?
    Comunque già così direi che va bene, ma come faccio a inserire le voci in celle diverse una sotto l'altra?

    Sto pensando che, dovendo creare una tabella con dei record dove il comune è solo uno dei campi, forse dovrei creare un modulo con vari campi, una volta riempiti tutti si clicca su ok e lui salva tutto il record una riga sotto l'altra. In questo modo sarebbe possibile fare in modo che lui vada a mettere il campo comune esattamente com'è nell'elenco? Cioè io scrivo Cefalù e lui cliccando su ok mi salva invece Cefalu'.
    Mi rendo conto però che è una cosa complicata e non posso abusare della tua disponibilità, quindi se è facile da spiegare provo a crearla io, altrimenti utilizzo la tua combobox.
    Grazie davvero per l'aiuto!!



  • di alfrimpa data: 20/04/2015 11:34:37

    Ciao Magick

    Ho visto che hai creato su altro forum la medesima discussione dichiarandoti soddisfatto delle risposte ricevute.

    Ora ti chiedo dobbiamo continuare su questa o ti ritieni soddisfatto di quanto ricevuto sinora?

    Se hai altri problemi possiamo continuare a parlarne qui.

    Alfredo





  • di magick data: 20/04/2015 12:57:15

    Ciao Alfredo,
    come puoi verificare dalle date ho visto e risposto prima a te e poi all'altro forum. L'apprezzamento espresso nell'altra discussione non era generale ma riferito a quello specifico topic dove, comunque, si giunge alla tua medesima soluzione, con l'unica differenza che quella combobox non è un elemento univoco ma appare solo selezionando le celle di una specifica colonna. Questo ovviamente supera il problema che ti avevo espresso nel precedente messaggio, sul fatto che il comune viene sempre inserito nella stessa cella. Devo solo capire come spostare la colonna della combo sul foglio 2.
    Senza sminuire la tua proposta (penso che possa comunque essere interessante vedere le soluzioni di altri programmatori), ti allego la soluzione prospettata nell'altro forum. Se hai voglia di aiutarmi a risolvere, partendo da questo nuovo file, l'ultimo ostacolo che rimane per avere la soluzione praticamente perfetta, bene. Altrimenti grazie ancora per la disponibilità che mi hai dimostrato.



  • di alfrimpa data: 20/04/2015 13:45:39

    Ciao Magick

    Cit.: "come puoi verificare dalle date ho visto e risposto prima a te e poi all'altro forum"

    Ma per questo non c'è assolutamente alcun problema; era solo per chiarire.

    Cit.: "Senza sminuire la tua proposta (penso che possa comunque essere interessante vedere le soluzioni di altri programmatori)"

    Anche qui nessun problema ed io poi non sono programmatore ma semplice appassionato.

    Comunque ti riallego il file (provacomuni3) sul quale ho apportato piccole modifiche al codice pre-esistente per farti visualizzare la combo (funzionante come sul foglio1) sul foglio2.

    Piccola precisazione: non avendolo scritto io il codice precedente non ho neanche capito bene come funzioni (ma mi riprometto di studiarlo).

    Alfredo







  • di magick data: 20/04/2015 14:09:43

    Ottimo, adesso è davvero ciò che fa per me!
    Grazie per l'aiuto



  • di alfrimpa data: 20/04/2015 14:27:04

    Ok perfetto

    Solo una domanda: sai intervenire da solo sul codice magari per cambiare il Range sul quale si visualizza la combo?

    Alfredo





  • di magick data: 20/04/2015 14:41:20

    Si, il range riesco a cambiarlo, ho anche cambiato la colonna (C invece di D).



  • di alfrimpa data: 20/04/2015 14:45:03

    Allora puoi camminare da solo

    Alfredo