Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Funzione ricerca in menù a tendina

Ultimo Aggiornamento: 11/01/2017 10:13
Post: 1
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
03/01/2017 17:20

Ricerca in menù a tendina
Salve a tutti, sono nuovo in questo forum e vorrei esporvi un problema al quale non riesco a trovare soluzione.

Premetto che non sono un grande esperto di Excel, ma me la cavicchio.

In pratica ho elaborato un foglio elettronico per la prima nota nella mia azienda.

Troverete il file in allegato.

Nella colonna Tipo c'è un elenco con tre voci (Cliente, Fornitore, Movimento).
Nella colonna Movimenti c'è un elenco collegato alla colonna Tipo.
Quando seleziono una delle voci dalla colonna Tipo, nella colonna Movimenti compare un elenco a seconda della voce selezionata in Tipo.

Data l'elevata quantità di dati che dovranno contenere gli elenchi di Clienti e Fornitori, vorrei che una volta selezionata la voce dalla colonna Tipo, nella colonna Movimenti possa inserire le iniziali del Cliente o del Fornitore in modo da non perdere la testa tra le tante voci.

Girovagando su internet ho visto che qualcosa di simile si può fare ma non sono riuscito ad applicarlo al mio caso.

Nel file in allegato troverete solamente poche voci negli elenchi Clienti e Fornitori, ma ne dovranno contenere molti di più.

Qualcuno riesce ad indirizzarmi per risolvere il problema?

Grazie mille in anticipo.
[Modificato da loris1998 03/01/2017 17:22]
Post: 2.543
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
03/01/2017 19:33

Loris si devono creare dei menù a tendina dinamici.

Guarda questo video che illustra l'argomento.

https://www.youtube.com/watch?v=jxx3XI8H5z8
[Modificato da alfrimpa 03/01/2017 19:33]

Alfredo
Post: 2.510
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
03/01/2017 19:48

@loris1998, scrive:


 ... Data l'elevata quantità di dati che dovranno contenere gli elenchi di Clienti e Fornitori, vorrei che una volta selezionata la voce dalla colonna Tipo, nella colonna Movimenti possa inserire le iniziali del Cliente o del Fornitore in modo da non perdere la testa tra le tante voci ...



Buona sera, Loris;
in una "Conalida dati" (Menù a tendina), non credo sia possibile selezionare un Record in base alle iniziali del Record stesso.
Serve VBA; visto il considerevole numero di Record da valutare, consiglierei UserForm.

Che conoscenze hai di VBA e in particolare di UserForm?


Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 2.544
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
03/01/2017 19:56

E infatti Giuseppe avevo capito male la richiesta.

Ora sto preparando la userform [SM=g27828]

Alfredo
Post: 1
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
03/01/2017 21:44

Ragazzi buonasera a tutti. Innanzitutto vi ringrazio per l'attenzione riservatami.

@Giuseppe purtroppo non ho alcuna conoscenza sia di VBA che di UserForm.
Aveva intuito che forse avrei dovuto far ricorso almeno al VBA ma non ho la più pallida idea di dove e come iniziare.

Come posso uscirne fuori?

Grazie
Post: 2.545
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
03/01/2017 21:47

Ti sto preparando io la userform e domani spero di sottoporre un primo esempio.

Alfredo
Post: 2
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
03/01/2017 21:54

Grazie milla alfrimpa!!

Grazie mille!!
Post: 2.553
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
04/01/2017 13:03

Ciao Loris

Come anticipatoti ieri ti allego un primo file dove ho concretizzato quella che poteva essere un'idea.

Sul foglio "Gennaio 2017" ho messo un pulsante che se cliccato ti mostra una maschera di inserimento dati che una volta compilata e cliccando sul pulsante "Inserimento Dati" trasferisce questi sul foglio.

Questo il codice che governa il tutto.

vb
Private Sub ComboBox1_Change()
Dim i As Long
Dim urCli As Long
Dim urForn As Long
Dim urMov As Long
urCli = Worksheets("Foglio1").Cells(Rows.Count, 2).End(xlUp).Row
urForn = Worksheets("Foglio1").Cells(Rows.Count, 3).End(xlUp).Row
urMov = Worksheets("Foglio1").Cells(Rows.Count, 4).End(xlUp).Row
Select Case Me.ComboBox1.Value
    Case Is = "Cliente"
    Me.ComboBox2.Clear
    For i = 2 To urCli
        Me.ComboBox2.AddItem Worksheets("Foglio1").Range("b" & i).Value
    Next i
    Case Is = "Fornitori"
        Me.ComboBox2.Clear
    For i = 2 To urForn
        Me.ComboBox2.AddItem Worksheets("Foglio1").Range("c" & i).Value
    Next i
    Case Is = "Movimenti"
    Me.ComboBox2.Clear
    For i = 2 To urMov
        Me.ComboBox2.AddItem Worksheets("Foglio1").Range("d" & i).Value
    Next i
End Select
End Sub



Private Sub CommandButton1_Click()
Dim i As Integer
Dim ur As Long
Dim sh As Worksheet
Set sh = Worksheets("Gennaio 2017")
ur = UltimaRiga(Worksheets("Gennaio 2017").Range("a2:a33"))
sh.Cells(ur + 1, 1).Value = CDate(Me.TextBox1.Value)
sh.Cells(ur + 1, 2).Value = Me.ComboBox1.Value
sh.Cells(ur + 1, 3).Value = Me.ComboBox2.Value
For i = 2 To 8
    sh.Cells(ur + 1, i + 2).Value = Me.Controls("TextBox" & i).Value
Next i
End Sub

Private Sub CommandButton2_Click()
Me.Hide
End Sub




Private Sub UserForm_Initialize()
Dim i As Long
Dim urList As Long
Dim urCli As Long
Dim urForn As Long
Dim urMov As Long
urList = Worksheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row
urCli = Worksheets("Foglio1").Cells(Rows.Count, 2).End(xlUp).Row
urForn = Worksheets("Foglio1").Cells(Rows.Count, 3).End(xlUp).Row
urMov = Worksheets("Foglio1").Cells(Rows.Count, 4).End(xlUp).Row
For i = 2 To urList
    Me.ComboBox1.AddItem Worksheets("Foglio1").Range("a" & i).Value
Next i
End Sub


Ripeto è ancora un esempio molto "grezzo" che va modificato e migliorato sotto molti aspetti ma era giusto per darti un'idea.

Prova e fai sapere.

P.S. Non postare il medesimo quesito su più forum; in alcuni è vietato dal regolamento e anche se non lo fosse non è bello farlo.

Alfredo
Post: 3
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
04/01/2017 16:13

Ciao Alfredo

Innanzitutto ti ringrazio nuovamente.

L'idea che tu hai realizzato è praticamente quello che io avrei voluto fare, ma che non ho potuto per ovvie ragioni di conoscenza.

La tua idea è per me PERFETTA.

Io non lo definirei "grezzo" e dal punto di vista grafico potrebbe andare.

L'ho analizzato abbastanza e per il momento ti espongo alcuni punti:

1) Quando vado ad aumentare i records di Clienti, Fornitori e Movimenti, mi escono automaticamente nella maschera?

2) Adesso per selezionare un Cliente o un Fornitore mi basta inserire le iniziali e mi compaiono. E' possibile selezionarli inserendo una parola che componga il loro nome e quindi non partire dalle iniziali?

3) Dopo aver cliccato su Inserimento Dati, è possibile pulire la maschera in modo che tutti i campi siano vuoti?

4) Attualmente nel foglio ci sono 33 righe utili ma queste non basteranno per inserire tutte le operazioni mensili (per ogni mese ne potrebbero servire anche più di 100). Per aumentarle come si potrebbe fare? Si può fare automaticamente oppure devo farlo io manualmente attraverso Inserisci Riga?

E' tutto perfetto. Soltanto queste piccole modifiche ho notato.

Mi complimento con te per la tua bravura.

Ancora grazie.

P.S.: Mi scuso infinitamente per il tuo P.S., ha pienamente ragione.
Post: 2.554
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
04/01/2017 17:25

Ciao Loris

Ti rispondo

1) Si
2) Si; nelle combobox sia che tu digiti una/due lettere o l'intero nome il cursore nella tendina si posiziona sul primo elemento che contiene le lettere digitate. A tale proposito sarebbe opportuno che l'elenco clienti/fornitori/movimenti sia ordinato alfabeticamente.
3) Si questa è una cosa che avevo già in mente di fare.
4) Si ma onestamente, al momento, non mi vengono idee in mente ma è sicuramente fattibile.
[Modificato da alfrimpa 04/01/2017 17:26]

Alfredo
Post: 4
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
04/01/2017 18:05

Ciao Alfredo.

Gli elenchi saranno ordinati alfabeticamente.

Per quanto riguarda la creazioni di nuove righe ho pensato di procedere in questo modo:

modifico il range in questa riga di codice, portandolo ad esempio a 100

ur = UltimaRiga(Worksheets("Gennaio 2017").Range("a2:a33"))

e poi inserisco io manualmente le righe in maniera classica.

Che ne pensi?

Per quanto riguarda la parte grafica, allineamento della maschera e posizionamento del tasto maschera, ci posso pensare io tanto da come ho visto sembra abbastanza facile.

Tu dovresti solamente applicare la pulizia della maschera dopo ogni inserimento.

Va bene?

Grazie mille
Post: 2.555
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
04/01/2017 18:25

Sì certo puoi fare così; io volevo trovare un modo per evitare di farti mettere mano al codice (sarebbe stato più "professionale" [SM=g27828] )

Domani ti scrivo il codice per la "ripulitura" della maschera.

Alfredo
Post: 5
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
04/01/2017 22:10

Per me già sei stato professionale!! Tranquillo [SM=g27827]

Se riesci a trovare una soluzione per te semplice e non impegnativa per risolvere il fatto delle righe, fai pure, altrimenti per me va benissimo anche così.

Già hai fatto tantissimo!!

Rimango in attesa del nuovo file.

Grazie mille
Post: 2.556
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
05/01/2017 12:52

Allora Loris trovi qui allegato l'ultimo file dove ho risolto il problema dell'inserimento di nuove righe (sul codice non devi modificare nulla) ed ho previsto la "ripulitura" della maschera una volta inseriti i dati sul foglio.

Prova e fai sapere.

P.S. Immagino però che questo file sia parte di un progetto più ampio (non può essere solo questo [SM=g27828] )
[Modificato da alfrimpa 05/01/2017 12:53]

Alfredo
Post: 6
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
05/01/2017 21:27

Ciao Alfredo.

L'ho provato e adesso è tutto perfetto.

Questo file mi serve solamente per la prima nota aziendale e per nient'altro. La contabilità la segue con un gestionale dedicata ma che non ha una sezione fatta bene per la prima nota.

Comunque per il momento penso che abbiamo terminato.

Se nei prossimi giorni avrò bisogno di qualche piccola delucidazione non esiterò a contattarti [SM=g27828]

Grazie mille ancora!!

Come posso sdebbitarmi? [SM=g27818]

Post: 2.557
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
05/01/2017 21:56

Re:
loris1998, 05/01/2017 21.27:



Come posso sdebitarmi? [SM=g27818]




Se vuoi ti mando il mio IBAN [SM=g27828] [SM=g27828]

Ovviamente scherzo; mi basta la soddisfazione.

Alfredo
Post: 2.514
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
06/01/2017 12:15

Mbè!, se si parla di ...IBAN, con la pensione da fame che mi ritrovo , quasi, quasi, entro in gioco anch'io!      

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 2.558
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
06/01/2017 12:18

[SM=g27828] [SM=g27828]

Alfredo
Post: 7
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
06/01/2017 12:24

Alfredo, sono pienamente soddisfatto! Questo è sicuro [SM=g27828]

Ho notato che il campo Data è obbligatorio, nel senso che se non inserisco la data va tutto in errore. E' possibile eliminare questo obbligo e fare in modo di inserire gli altri dati senza la data?

Grazie

P.S.: Giuseppe cercherò di soddisfare tutti [SM=g27828]
Post: 2.559
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
06/01/2017 16:04

Re:
Ciao Loris

loris1998, 06/01/2017 12.24:


Ho notato che il campo Data è obbligatorio, nel senso che se non inserisco la data va tutto in errore. E' possibile eliminare questo obbligo e fare in modo di inserire gli altri dati senza la data?




Per far questo devi modificare la macro associata a pulsante "inserimento Dati" inserendo la riga che ti ho indicato (sei capace di farlo?)

vb
Private Sub CommandButton1_Click()
Dim i As Integer
Dim ur As Long
Dim sh As Worksheet
On Error Resume Next    <======== Riga da aggiungere
Set sh = Worksheets("Gennaio 2017")
ur = sh.Cells(Rows.Count, 1).End(xlUp).Row
sh.Cells(ur + 1, 1).Value = CDate(Me.TextBox1.Value)
sh.Cells(ur + 1, 2).Value = Me.ComboBox1.Value
sh.Cells(ur + 1, 3).Value = Me.ComboBox2.Value
For i = 2 To 8
    sh.Cells(ur + 1, i + 2).Value = Me.Controls("TextBox" & i).Value
Next i
Me.ComboBox1.Value = ""
Me.ComboBox2.Value = ""
For i = 1 To 8
    Me.Controls("TextBox" & i).Value = ""
Next i
End Sub


Alfredo
Post: 8
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
06/01/2017 16:42

Alfredo, sono riuscito ad aggiungere quella riga da te indicata, solo che adesso, una volta inseriti i dati e cliccato su Inserimento dati, quando vado ad inserire nuovi dati non va automaticamente su una nuova riga, ma mi modifica sempre la stessa.
Post: 2.560
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
06/01/2017 16:59

Prova con questa macro modificata

vb
Private Sub CommandButton1_Click()
Dim i As Integer
Dim ur As Long
Dim sh As Worksheet
On Error Resume Next   
Set sh = Worksheets("Gennaio 2017")
ur = sh.Cells(Rows.Count, 2).End(xlUp).Row <=== riga modificata
sh.Cells(ur + 1, 1).Value = CDate(Me.TextBox1.Value)
sh.Cells(ur + 1, 2).Value = Me.ComboBox1.Value
sh.Cells(ur + 1, 3).Value = Me.ComboBox2.Value
For i = 2 To 8
    sh.Cells(ur + 1, i + 2).Value = Me.Controls("TextBox" & i).Value
Next i
Me.ComboBox1.Value = ""
Me.ComboBox2.Value = ""
For i = 1 To 8
    Me.Controls("TextBox" & i).Value = ""
Next i
End Sub

Alfredo
Post: 9
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
06/01/2017 17:05

Perfetto.

Funziona adesso.

Grazie [SM=g27828]
Post: 10
Registrato il: 14/04/2010
Età: 34
Utente Junior
Office 2016
OFFLINE
08/01/2017 11:50

Ciao Alfredo, ho ancora bisogno di te [SM=g27828]

In pratica ho iniziato a formattare la tabella di lavoro, sistemando righe e colonne e rinominando la cella Movimento.

Adesso l'inserimento dati non funziona più [SM=g27828]

Non ho assolutamente toccato il codice ma solamente la tabella di lavoro.

Puoi vedere cosa è successo?

Inoltre, come posso cambiare il nome del tasto Maschera? Vorrei che ci fosse scritto Inserimento dati.

Ti allego il nuovo file.

Grazie e scusa ancora per il disturbo.
Post: 2.570
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
11/01/2017 10:13

Ciao Loris

Quando si utilizza il VBA le celle unite vanno evitate come la peste perché creano problemi.

Nelle colonne DATA, TIPO e DESCRIZIONE le ho eliminate ed ora mi pare che tutto funzioni correttamente.

Ti riallego il file e fai sapere.

Alfredo
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:12. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com