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

creare una user form

Ultimo Aggiornamento: 07/04/2021 23:01
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

Re:
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

Re:
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

Re:
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

Re:
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.
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 12:02. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com