| | Post: 14 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
14/03/2021 23:24 | |
Buonasera a tutti, vorrei creare una user form posizionata nel foglio "partitario" e che mi popoli tutti i campi contenuti nel foglio "store", nella user form il campo dedicato a "riferimento" dovrebbe essere una casella combinata che vada a prendere i valori dal foglio "appo", io ho provato a smanettarci, ma non avendo assoluta dimestichezza non sono riuscito ad approdare a nulla. Vorreste aiutarmi?
Ringrazio in anticipo.... |
|
| | Post: 4.613 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
14/03/2021 23:32 | |
Guarda questo tutorial di altro forum
https://www.forumexcel.it/forum/threads/popolare-userform-con-dati-di-una-tabella-ed-inserire-dati-in-un-altro-foglio.7320/
Vi troverai informazioni molto utili.
Alfredo |
| | Post: 4.615 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
15/03/2021 11:22 | |
Ho avuto oggi modo di vedere il file allegato ma relativamente al problema che poni non c'è assolutamente nulla se non una userform con 10 etichette (label) ed una casella di riepilogo (combobox) vuota.
Tu hai chiesto un aiuto ma che tipo di aiuto vorresti?
Che qualcuno faccia il lavoro per te?
Tieni presente che oltre a costruire la userform (e sarebbe il meno) occorre conoscere un minimo di VBA per scrivere il codice necessario per il suo funzionamento.
Senza il codice VBA una userform è una scatola vuota inutile ed inutilizzabile.
Alfredo |
| | Post: 14 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
15/03/2021 14:31 | |
Carissimo, detta così, sembrerebbe che io mi voglia approfittare di qualcuno, non voglio lavarmene le mani, avevo visto un tutorial e mi sembrava potessi riuscirci, ma giustamente, non avendo rudimenti di vba mi sono incartato subito e quindi ho postato il mio problema sul forum, mi piacerebbe riuscire nell'intento, in che modo? Non idea, magari con il vostro aiuto.... |
| | Post: 4.616 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
15/03/2021 16:14 | |
Non ho mai detto (nè pensato) che tu voglia approfittarti di qualcuno.
Ciò nondimeno, ne converrai, l'uso delle userform prevede un utilizzo medio avanzato di Excel non certo di base.
Comunque comincia tu con il costruire la userform che è la cosa più semplice da fare (a questo proposito guarda su YouTube sul canale Excel magico i video dal n. 111 al 114) come serve a te e poi quando sei pronto posta il file sul forum e ne riparliamo.
Alfredo |
| | Post: 15 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
16/03/2021 02:18 | |
alfrimpa, 15/03/2021 16:14:
Non ho mai detto (nè pensato) che tu voglia approfittarti di qualcuno.
Ciò nondimeno, ne converrai, l'uso delle userform prevede un utilizzo medio avanzato di Excel non certo di base.
Comunque comincia tu con il costruire la userform che è la cosa più semplice da fare (a questo proposito guarda su YouTube sul canale Excel magico i video dal n. 111 al 114) come serve a te e poi quando sei pronto posta il file sul forum e ne riparliamo.
Va bene, grazie, saluti... |
| | Post: 16 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
29/03/2021 16:55 | |
Registrazione con ures form alfrimpa, 15/03/2021 16:14:
Non ho mai detto (nè pensato) che tu voglia approfittarti di qualcuno.
Ciò nondimeno, ne converrai, l'uso delle userform prevede un utilizzo medio avanzato di Excel non certo di base.
Comunque comincia tu con il costruire la userform che è la cosa più semplice da fare (a questo proposito guarda su YouTube sul canale Excel magico i video dal n. 111 al 114) come serve a te e poi quando sei pronto posta il file sul forum e ne riparliamo.
Buongiorno, come richiesto, ho cercato di fare tesoro dei video consigliati ed ho cercato di portarmi avanti fin dove sono riuscito.
Allo stato attuale vorrei sapere come:
1) nella user form al campo riferimento vorrei mettere una combobox piuttosto che un testo, e che questi venga trovato nella colonna A foglio "APPO", poi una volta confermato il codice che sia possibili popolare il campo descrizione prelevandolo dalla colonna 2 sempre dal foglio "appo" come una specie di cerca verticale.
2) che una volta confermata la registrazione, che rimanga selezionato il foglio "partitario" perchè per ovviare ad un errore ho messo il comando di attivazione del foglio "STORE" però accade che dopo la registrazione vengo spostato sul foglio "store"...
ora.. un aiuto..??!😥 |
| | Post: 4.639 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
30/03/2021 11:12 | |
Ok e complimenti per quanto hai realizzato.
Ma i dati immessi nella maschera su quale foglio devono essere registrati?
Se vuoi inserire una combobox per il riferimento e se la devi popolare con i dati provenienti dalla colonna A del foglio store poichè hai migliaia di dati la casella di riepilogo è scomoda da utilizzare in queste condizioni; se non sai il numero di riferimento dovresti scorrerla per migliaia di righe.
Alfredo |
| | Post: 17 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
30/03/2021 13:43 | |
alfrimpa, 30/03/2021 11:12:
Ok e complimenti per quanto hai realizzato.
Ma i dati immessi nella maschera su quale foglio devono essere registrati?
Se vuoi inserire una combobox per il riferimento e se la devi popolare con i dati provenienti dalla colonna A del foglio store poichè hai migliaia di dati la casella di riepilogo è scomoda da utilizzare in queste condizioni; se non sai il numero di riferimento dovresti scorrerla per migliaia di righe.
Grazie per il riscontro,
il foglio "store" = database, il quale viene popolato dai valori immessi nella user form, la user form\combobox preleva i dati dal foglio APPO, che sarebbero "Rif" e Descr" il resto viene immesso dall'operatore.
Inoltre ho provato ad inserire qualche riga di codice per l'automazione della combobox.... ma.. c'è qualcosa che non funziona.. magari riallego il file
Ma come tu giustamente osservi ci sarebbe sa scrollare un bel po di righe, forse sarebbe opportuna qualche soluzione che faccia una ricerca con una porzione di "riferimento" . |
| | Post: 4.640 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
30/03/2021 15:34 | |
Scusa ma la data che inserisci sulla userform in quale colonna del foglio store deve andare?
Alfredo |
| | Post: 18 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
30/03/2021 16:21 | |
alfrimpa, 30/03/2021 15:34:
Scusa ma la data che inserisci sulla userform in quale colonna del foglio store deve andare?
All'ultima |
| | Post: 4.642 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
30/03/2021 19:59 | |
Al pulsante sulla userform abbina questo codice
vb Private Sub Cmd_Registra_Click()
Dim ur As Long
ur = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
With Foglio1
.Cells(ur + 1, 1).Value = Me.ComboBox1.Value
.Cells(ur + 1, 2).Value = Me.Txt_Destrizione.Value
.Cells(ur + 1, 3).Value = Me.Txt_qta_car.Value
.Cells(ur + 1, 4).Value = Me.Txt_qta_scar.Value
.Cells(ur + 1, 5).Value = Me.Txt_Prezzo.Value
.Cells(ur + 1, 6).Value = Me.Txt_listino.Value
.Cells(ur + 1, 7).Value = Me.Txt_sconto.Value
.Cells(ur + 1, 10).Value = Me.Txt_data.Value
End With
Me.Hide
MsgBox Me.ComboBox1.Value & " registrato alla riga " & ur + 1, vbInformation, "REGISTRATO"
Unload Me
End Sub
e all'evento Initialize (non Inizialise come avevi scritto) abbina questo
vb Private Sub UserForm_initialize()
Dim i As Long
Dim ur As Long
ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To ur
Me.ComboBox1.AddItem Foglio2.Range("A" & i).Value
Next i
End Sub
Resta il fatto che avere oltre 3.400 voci in una combobox è follia pura. [Modificato da alfrimpa 30/03/2021 19:59]
Alfredo |
| | Post: 19 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
30/03/2021 21:26 | |
alfrimpa, 30/03/2021 19:59:
Al pulsante sulla userform abbina questo codice
vb Private Sub Cmd_Registra_Click()
Dim ur As Long
ur = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
With Foglio1
.Cells(ur + 1, 1).Value = Me.ComboBox1.Value
.Cells(ur + 1, 2).Value = Me.Txt_Destrizione.Value
.Cells(ur + 1, 3).Value = Me.Txt_qta_car.Value
.Cells(ur + 1, 4).Value = Me.Txt_qta_scar.Value
.Cells(ur + 1, 5).Value = Me.Txt_Prezzo.Value
.Cells(ur + 1, 6).Value = Me.Txt_listino.Value
.Cells(ur + 1, 7).Value = Me.Txt_sconto.Value
.Cells(ur + 1, 10).Value = Me.Txt_data.Value
End With
Me.Hide
MsgBox Me.ComboBox1.Value & " registrato alla riga " & ur + 1, vbInformation, "REGISTRATO"
Unload Me
End Sub
e all'evento Initialize (non Inizialise come avevi scritto) abbina questo
vb Private Sub UserForm_initialize()
Dim i As Long
Dim ur As Long
ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To ur
Me.ComboBox1.AddItem Foglio2.Range("A" & i).Value
Next i
End Sub
Resta il fatto che avere oltre 3.400 voci in una combobox è follia pura.
Ti ringrazio tantissimo per l'aiuto che mi hai dato, considero che scrollare tante righe sarà laborioso! vedo come mi trovo... nel caso ne riparliamo...😥😥 |
| | Post: 20 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
01/04/2021 12:38 | |
Buongiorno, per fare in modo che dopo che si sceglie il codice nella user form il campo descrizione restituisca la descrizione corrispondente al codice inserito? |
| | Post: 4.648 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
02/04/2021 12:21 | |
Puoi farlo utilizzando un CERCA.VERT lato VBA (WorksheetFunction.VLookup).
Alfredo |
| | Post: 21 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
03/04/2021 22:36 | |
alfrimpa, 02/04/2021 12:21:
Puoi farlo utilizzando un CERCA.VERT lato VBA (WorksheetFunction.VLookup).
Buonasera, sii clemente....
ho pensato al tuo disapputo nell'usare la combobox per via della moltitudine di voci, e quindi ho pensato di tornare sui miei passi e rimettere txtriferimento.. però occorrerebbe inserire una convalisa dati altrimenti rischieremmo di mettere codici sbagliati, potresti indicarmi la strada!?..
e per quanto riguarda, la funzione VLookup.. mi puoi dare informazioni più analitiche? stò cercando di capire ma..... è dura!!!! |
| | Post: 3.127 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
04/04/2021 11:45 | |
Ciao a tutti
@Eurialo:
avrai sempre difficoltà nelle scelte, in quanto nei tuoi DB (Store e APPO), a parte il "Riferimento", non hai una chiave esplicativa del prodotto, mi spiego meglio:
Ipotizza di aver trasformato la Txt Riferimento in comboBox contenente tutti i valori di APPO, e di scegliere un valore e che dopo la scelta nella txtRiferimento appaia la descrizione:
questo è uno stralcio di APPO:
5000289387 Coperchio
5000289391 Coperchio
5000289392 Coperchio
come fai a decidere quale codice usare, ovvero qual è il coperchio giusto??
sai a memoria la differenza tra i tre codici?
saluti
[Modificato da dodo47 04/04/2021 12:32] Domenico
Win 10 - Excel 2016 |
| | Post: 4.649 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
04/04/2021 11:49 | |
Concordo con Dodo47 (che saluto).
Oltre al codice di riferimento anche la descrizione del prodotto deve essere univoca; insomma non deve esserci una marea di "coperchi" tutti uguali.
Alfredo |
| | Post: 22 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
05/04/2021 07:36 | |
Comprendo la vostra perplessità e concordo che vi dovrebbe avere una descrizione più analitica dell'articolo, purtroppo è una situazione che ho trovato ed ho avuto modo di osservare che gli addetti che aggiornano questo file hanno come chiave principale nella loro mente il CODICE! forse per loro la descrizione è puramente indicativa visto che quando devono identificare il pezzo di ricambio , focalizzano solo in codice. Non se ho reso l'idea. Saluti... |
| | Post: 3.128 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
05/04/2021 10:42 | |
Ciao
dopo aver cambiato il nome della Txt_Destrizione in Txt_Descrizione (che mi sembra più corretto) ed aver sostituito la txtRiferimento con la ComboBox1, potresti fare nel seguente modo:
Private Sub UserForm_initialize()
Dim ur As Long
ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
With ComboBox1
.List = Foglio2.Range("A2:A" & ur).Value
End With
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_AfterUpdate()
Dim ur As Long, rng As Range
ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
valore = Application.VLookup(ComboBox1.Value, Foglio2.Range("A2:B" & ur), 2, 0)
If IsError(valore) Then
MsgBox "Riferimento inesistente"
Me.ComboBox1.Value = ""
Me.Txt_Descrizione = ""
Else
Me.Txt_Descrizione = valore
End If
End Sub
Private Sub Cmd_Registra_Click()
Dim ur As Long
ur = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
With Foglio1
.Cells(ur + 1, 1).Value = Me.ComboBox1.Value
.Cells(ur + 1, 2).Value = Me.Txt_Descrizione.Value
.Cells(ur + 1, 3).Value = Me.Txt_qta_car.Value
.Cells(ur + 1, 4).Value = Me.Txt_qta_scar.Value
.Cells(ur + 1, 5).Value = Me.Txt_Prezzo.Value
.Cells(ur + 1, 6).Value = Me.Txt_listino.Value
.Cells(ur + 1, 7).Value = Me.Txt_sconto.Value
.Cells(ur + 1, 10).Value = Me.Txt_data.Value
End With
Me.Hide
MsgBox Me.ComboBox1.Value & " registrato alla riga " & ur + 1, vbInformation, "REGISTRATO"
Unload Me
End Sub
Private Sub CMD_Esci_Click()
Unload Me
End Sub
Infine ti suggerisco di creare nomi variabili descrittivi per i nomi dei fogli e non riferirti a Foglio1 o Foglio2 per una migliore lettura del codice, per esempio:
dim mAppo as worksheet
set mAppo=worksheets("APPO")
e nel codice diferirti a mAppo e non a Foglio2
saluti [Modificato da dodo47 05/04/2021 11:35] Domenico
Win 10 - Excel 2016 |
| | Post: 23 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
05/04/2021 23:07 | |
dodo47, 05/04/2021 10:42:
Ciao
dopo aver cambiato il nome della Txt_Destrizione in Txt_Descrizione (che mi sembra più corretto) ed aver sostituito la txtRiferimento con la ComboBox1, potresti fare nel seguente modo:
Private Sub UserForm_initialize()
Dim ur As Long
ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
With ComboBox1
.List = Foglio2.Range("A2:A" & ur).Value
End With
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_AfterUpdate()
Dim ur As Long, rng As Range
ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
valore = Application.VLookup(ComboBox1.Value, Foglio2.Range("A2:B" & ur), 2, 0)
If IsError(valore) Then
MsgBox "Riferimento inesistente"
Me.ComboBox1.Value = ""
Me.Txt_Descrizione = ""
Else
Me.Txt_Descrizione = valore
End If
End Sub
Private Sub Cmd_Registra_Click()
Dim ur As Long
ur = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
With Foglio1
.Cells(ur + 1, 1).Value = Me.ComboBox1.Value
.Cells(ur + 1, 2).Value = Me.Txt_Descrizione.Value
.Cells(ur + 1, 3).Value = Me.Txt_qta_car.Value
.Cells(ur + 1, 4).Value = Me.Txt_qta_scar.Value
.Cells(ur + 1, 5).Value = Me.Txt_Prezzo.Value
.Cells(ur + 1, 6).Value = Me.Txt_listino.Value
.Cells(ur + 1, 7).Value = Me.Txt_sconto.Value
.Cells(ur + 1, 10).Value = Me.Txt_data.Value
End With
Me.Hide
MsgBox Me.ComboBox1.Value & " registrato alla riga " & ur + 1, vbInformation, "REGISTRATO"
Unload Me
End Sub
Private Sub CMD_Esci_Click()
Unload Me
End Sub
Infine ti suggerisco di creare nomi variabili descrittivi per i nomi dei fogli e non riferirti a Foglio1 o Foglio2 per una migliore lettura del codice, per esempio:
dim mAppo as worksheet
set mAppo=worksheets("APPO")
e nel codice diferirti a mAppo e non a Foglio2
saluti
Buonasera, ti ringrazione per l'attenzione prestata, e sembra funzionare tutto, tranne per il fatto che che non tutti i codici riescono a superare il controllo del codice, seppur esistenti nel foglio APPO, quindi accade che digito per esempio " 188171" e mi appare il messaggio "Riferimento inesistente". Ho notato che il problema sussiste con i riferimenti che contengono solo numeri invece con i riferimenti alfabetici o alfanumerici funziona bene.
Saluti
|
| | Post: 3.129 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
06/04/2021 09:55 | |
ciao
cambia questa:
Private Sub ComboBox1_AfterUpdate()
Dim ur As Long, rng As Range, ToFind As Variant
ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
ToFind = ""
If IsNumeric(Me.ComboBox1.Value) Then
ToFind = Me.ComboBox1.Value * 1
Else
ToFind = Me.ComboBox1.Value
End If
valore = Application.VLookup(ToFind, Foglio2.Range("A2:B" & ur), 2, 0)
If IsError(valore) Then
MsgBox "Riferimento inesistente"
Me.ComboBox1.Value = ""
Me.Txt_Descrizione = ""
Else
Me.Txt_Descrizione = valore
End If
End Sub
Comincia a fare qualcosa in autonomia
ùsaluti
Domenico
Win 10 - Excel 2016 |
| | Post: 24 | Registrato il: 08/06/2018
| Città: CORATO | Età: 56 | Utente Junior | 365 | | OFFLINE | |
|
07/04/2021 23:01 | |
Vi ringrazio per l'aiuto che mi avete dato, cercherò di fare tesoro di tutto quanto.... saluti. |
|
|