Gestione ordine con VB



  • Gestione ordine con VB
    di 77claudio77 (utente non iscritto) data: 02/11/2015 10:55:20

    ciao a tutti,
    è la prima volta che mi trova a creare un programma con VB per inserire dei nuovi ordini che vengono inseriti in un file csv.

    Devo inserire dei campi di censimento, alcuni riguardanti la spedizione , e una riguardante il materiale e il numero d'ordine (che deve essere assegnato automaticamente).

    Mi riuscireste a dare una mano s come iniziare?

    Grazie mille



  • di gargiu data: 02/11/2015 11:49:23

    Ogni volta che apri la form puoi incrementare di 1 una determinata cella del foglio elettronico che ti tiene traccia del numero d'ordine.

    Io ho fatto così:

    Il codice integra la protezione del foglio, togliendola all'apertura della form e applicandola alla chiusura salvando il foglio ogni volta che la form viene chiusa, in tal modo memorizza l'incremento del numero d'ordine.
     
    Private Sub UserForm_Initialize()
    ActiveSheet.Unprotect
    [HOME!M3] = [HOME!M3] + 1
    End Sub
    
    
    
    Private Sub UserForm_Terminate()
    Sheets("HOME").Select
        Range("A1").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.Visible = True
    ThisWorkbook.Save
    End Sub



  • di 77claudio77 (utente non iscritto) data: 02/11/2015 13:23:43

    Ma c'è qualcuno che fa questo di mestiere?
    Vorrei farmi creare il forum il prima possibile :)
    Ma vendo che la strada è piuttosto lunga :)
    Grazie mille per la risposta



  • di gargiu data: 02/11/2015 13:32:43

    Potresti iniziare ad allegare il file excel che utilizzi come gestionale. Potendo così capire come dovrebbe essere strutturato il tutto.



  • di 77claudio77 (utente non iscritto) data: 02/11/2015 14:52:35

    Ho allegato il fle .csv da cui partire e la parte grafica di come dovrebbe essere strutturato =)

    Grazie mille infinitamente



  • di alfrimpa data: 02/11/2015 16:41:32

    Ciao Claudio

    Una volta realizzata la maschera questa come deve interagire con il foglio Excel (database)?

    Cosa devono fare i pulsanti "INVIA ORDINE", "TROVA ORDINE"? ("RESETTA CAMPI" è chiaro).

    Che tipo di controllo deve essere utilizzato per il campo "MATERIALI"? (sembrerebbe una listbox)

    Ho aperto il file ordini.csv e mi si è aperto in Excel

    Tu vuoi utilizzare la maschera per l'inserimento dei dati sul foglio?

    E visto che la form l'hai già costruita perché non l'alleghi in un file di Excel?

    Insomma devi spiegare un po' come vuoi che funzioni il tutto.

    Alfredo





  • di 77claudio77 (utente non iscritto) data: 02/11/2015 17:54:20

    Innanzitutto grazie mille per le celeri risposte e l'aiuto.

    Quello che dovrebbe fare il programmino è inserire gli ordini in un foglio excel (in effetti è un .csv, che si apre con excel)

    Ovviamente il campo "NOME" del programma deve essere correlato con la la prima riga libera presente nel foglio sotto il campo "nome", stessa cosa per l'indirizzo e quant'altro.

    L'interfaccia grafica serve unicamente aiuta ad inserire i dati all'interno del foglio senza dover passare da cella a cella..

    Spiegazione del funzionamento:

    -Inserisci ordine: registra le informazioni inserite nella maschera grafica nel foglio excel.
    -Trova: inserisco un campo tra nome e cognome, e mi trova l'ordine corrispondente se esistente.
    -Resetta i campi: pulisce tutti i campi.

    Il campo materiali, deve essere una list box, all'interno della quale poter inserire i vari materiali ordinati.

    Mi serve questo foglio così settato per farlo interfacciare con un programma che gira su unix che accetta unicamente files .csv così formattati.

    Grazie mille



  • di alfrimpa data: 02/11/2015 18:43:49

    Scusa Claudio ma visto che ce l'hai già perché non alleghi il file di Excel con la userform inserita così non dobbiamo ricostruirla daccapo? (l'immagine che hai allegato da dove l'hai presa?)





  • di 77claudio77 (utente non iscritto) data: 02/11/2015 18:50:01

    Certamente.
    stavo lavorando su un form trovato su rete, e ho modificato il tutto =)

    se mi dai una ventina di minuti, ricreo il tutto per partire da pulito

    Grazie mille



  • di alfrimpa data: 02/11/2015 18:56:32

    Ok attendo

    Anche per il campo "MATERIALI" devi usare una textbox e non una listbox.

    La listbox è un controlo che espone dei dati dai quali si può effettuare una scelta e non può essere usato per immissione dati.

    Tieni conto che i campi sulla maschera devono rispettare quelli del foglio.

    Sulla base di quale criterio deve essere effettuata la ricerca con "TROVA ORDINE" (non vedo che c'è un n. ordine)

    Ma facciamo un passo alla volta.

    Alfredo





  • di 77claudio77 (utente non iscritto) data: 02/11/2015 23:50:34

    Eccomi

    completato il file da zero :)

    Allego il file con il progetto all'interno.

    Giusto per, ho etichettato tutte le caselle "Lable" con Lblxxx ad esempio Lblnome, e tute le text box con Txtxxx ad esempio Txtnome.

    Va bene come impostazione iniziale?

    Grazie mille



  • di 77claudio77 (utente non iscritto) data: 03/11/2015 10:37:32

    A ri eccomi

    Allego il file con un po di lavoro sopra =)

    ad ora sembra funzionare tutto nell'inserimento dell'ordine.

    Unica cosa che ancora non soni ruscito ad implementare è che se invio un ordine, la seconda volta che provo con un nuovo ordine, ovviamente sovrascrive il vecchio, invece di procedere al successivo libero

    Su trova / cerca, non mi ci sono ancora messo =)

    Tempo al tempo



  • di alfrimpa data: 03/11/2015 11:31:12

    Ciao Claudio

    Ho guardato il tuo file Modulo_1 ma sinceramente non ci ho capito nulla (ho fatto qualche prova ma non funziona niente)

    Ma tutto quel codice inserito è "farina del tuo sacco"?

    Appena ho un po' di tempo, se hai un attimo di pazienza, cerco di farlo daccapo.

    Alfredo





  • di 77claudio77 (utente non iscritto) data: 03/11/2015 11:39:14

    In che senso non funziona nulla?

    Ho trovato un po di guide per far funzionare un po di cosine.

    Per il campo resetta i campi, se ci clicchi, cancella tutto quello che c'è scritto all'interno dei campi della maschera.

    Per il campo inserisci ordine, se inserisci tutti i dati, li riporta nel foglio excel, come dicevo non sono riuscito ad implementare l'inserimento nella prima riga libera, ma almeno un minimo mi sembra che va.

    Apro il file, accedo alla consolle di VBA (alt+f11) e trovo tutto li =)

    Molti errori?

    Thx



  • di alfrimpa data: 03/11/2015 13:59:24

    Ciao Claudio

    Ti ho allegato file (Claudio77.xlsm) dove ho un po' ricreato il tutto.

    Allo stato solo il pulsante "TROVA ORDINI" non è funzionante (ci penseremo poi).
    Provalo un po' e fammi sapere.

    A mio modo di vedere andranno fatti molti aggiustamenti.

    Alfredo





  • di 77claudio77 (utente non iscritto) data: 03/11/2015 18:08:40

    Innanzitutto come sempre ripeto grazie mille alfrimpa, lavoro ottimo =)

    Un paio di info: Mi riusciresti a spiegare come modificare i metodi di pagamento, Poiché quelli che utilizziamo in azienda sono leggermente diversi.

    Altra cosa per inserire un numero di ordine che parte da uno in poi come potrei fare?

    Ultima cosa "banale"

    C'è un modo per poter richiamare direttamente la maschera per inserire gli ordini all'apertura del file?

    Ancora grazie



  • di 77claudio77 (utente non iscritto) data: 03/11/2015 18:41:21

    Perfetto, la questione di cambiare le opzioni di pagamento è stata risolta, ho visto nel codice che faceva riferimento al foglio 2, modificato i campi ed ho risolto =)



  • di alfrimpa data: 03/11/2015 21:39:17

    Ciao Claudio

    Ti ho messo una macro "MostraMaschera" che lancia la userform (forse non te sei accorto) se lanci "Esegui Macro" la trovi nella finestra. Ovviamente si può mettere un pulsante che la lancia oppure farla partire nel momento in cui selezioni il Foglio1; come vedi i modi possono essere diversi.

    Per quanto riguarda la detrminazione in automatico del numero d'ordine in progressivo non si potrebbe toglierlo dalla userform e determinarlo direttamente sul foglio?

    Inoltre vedo un grosso problema sul campo "Materiali"; io ho messo una textbox ma non sono sicuro che possa andare bene non conoscendo che tipo di dati (e in che quantità) deve accogliere.

    Dovresti fare qualche esempio concreto.

    Alfredo





  • di 77claudio77 (utente non iscritto) data: 03/11/2015 23:10:53

    Perfetto.

    Il numero d'ordine lo inserisco direttamente nel foglio in modo da eliminare il primo problema.

    La cosa più comoda per l'apertura potrebbe essere quella che nel momento in cui apro il foglio, mi si apre direttamente la finestra di inserimento.

    Ora vi faccio un esempio di ordine:

    Il programmino serve a inserire un ordine di auto ricambi che vendiamo in azienda.

    Ad esempio se un cliente mi ordina un disco freno ed una pastiglia il campo materiale sarà: 09.1234.10 - P06034

    Finita la parte di inserimento, i dati sul foglio Excel, saranno trasferiti nel gestionale (Unix) per creare la vendita effett va che aggiornerà anche la quantità in magazzino, Impostando sul gestionale di Unix che il simbolo - sarà il separatore di oggetti venduti.

    Pensate che ci possa essere una soluzione più efficiente?

    Grazie mille


  • B
    di alfrimpa data: 03/11/2015 23:35:34

    Ok domani ti farò le modifiche richieste per l'apertura della userform.

    Quindi il n. Ordine lo togliamo dalla form?

    Per quanto riguarda i "Materiali" stavo pensando ad una listbox multiselect che dia la possibilità di selezionarne alcuni e trasferirli sul foglio nella relativa cella separando ogni prodotto dall'altro con un trattino "-". È corretto?

    Un problema potrebbe essere rappresentato dal numero di prodotti; se sono centinaia non è il massimo della comodità averli tutti in una listbox.

    Per ovviare a ciò si potrebbe pensare di raggruppare i prodotti in categorie omogenee di prodotto e prevedere una serie di pulsanti di opzione per la scelta della categoria; una volta scelta la categoria la listbox si popolerebbe dei soli prodotti che appartengono a quella categoria di prodotti.

    Alfredo





  • di 77claudio77 (utente non iscritto) data: 04/11/2015 08:42:15

    Grazie mille Per la modifica della apertura.

    Fai conto che il server interno ha circa 10000 oggetti diversi caricati al suo interno, in generale una vendita, contiene 3-4 oggetti, un ordine grande ne contiene 10-15 esagerando perciò penso che una list box, se bene implementata anche al gestionale, possa andare bene.

    Creare categorie e poi inserire oggetti all'interno potrebbe portare ad un dispendio enorme in merito al lavora da creare per inserirle tutte.

    I ricambi delle auto sono divisi in tantissime categorie, e ce ne sono a migliaia per marchio =)



  • di alfrimpa data: 04/11/2015 12:12:32

    Ciao Claudio

    A parte la visualizzazione della form al selezionare il foglio1 (che è una sciocchezza) dobbiamo risolvere il problema della listbox dei "Materiali"

    La listbox è un controllo che espone dei dati tra i quali effettuare una scelta; se tu dici che i prodotti sono migliaia (ed anche le categorie sono altrettanto) mi dici come fare per selezionarne una ed immetterla sul foglio1?

    Al momento non saprei proprio cosa suggerire ed un'indicazione può venire solo da te che conosci il tuo lavoro.

    Quanto al pulsante "TROVA ORDINE" il criterio di ricerca deve essere ovviamente il n. d'ordine?

    Alfredo





  • di 77claudio77 (utente non iscritto) data: 04/11/2015 12:42:48

    Ciao caro

    Suppongo a questo punto che il metodo piu comodo per i materiali, sia inserire un riquadro libero dove inserire i codi cei materiali separati da un carattere predefinito (- + * o simili) che viene interpretato come separatore dal server, e riesce a differenziale. Creare categorie e oggetti sarebbe un problemone

    La funzione cerca sarebbe comoda da poter impostare su più campi tipo -nome -azienda -telefono in modo che se mi riescono a dare uno dei 3 posso risalire

    Che ne pensi come campi? il numero d'ordine al momento lo abbiamo rimosso dal form perciò sarebbe problematica =)


    Grazie mille



  • di alfrimpa data: 04/11/2015 15:50:07

    Ciao Claudio

    Le cose si complicano....

    Cit. "Suppongo a questo punto che il metodo piu comodo per i materiali, sia inserire un riquadro libero dove inserire i codi cei materiali separati da un carattere predefinito "

    E se devi inserire più prodotti come fai? Devi inserire un pulsante per immetterli uno alla volta?
    Se i prodotti sono migliaia ne ricordate i codici a memoria? E se inserite un codice sbagliato che succede?

    Per quanto riguarda la ricerca non ho bel capito cosa vuoi vare.

    Innanzi tutto le ricerche dovrebbero essere basate su criteri univoci; in caso di omonimie che si fa?

    Se cerchi per Nome o per Azienda potrebbero esserci più record per quel Nome o quell'Azienda; come vuoi che vengano visualizzati?

    In questo caso non sarebbe più comodo e facile utilizzare il Filtro Dati di Excel?

    Perdonami ma ho la sensazione che tu abbia le idee un po' confuse (oppure che ti sia imbarcato in un progetto più grande di te).

    La gestione di un database (perché di questo, in fin dei conti si tratta) non è cosa semplice e va prima pianificata a tavolino prima di mettere mano ad Excel o al VBA.

    Se riesci a chiarirti e a chiarire io (e tutto il forum) siamo a disposizione.

    Alfredo







  • di 77claudio77 (utente non iscritto) data: 04/11/2015 18:42:29

    Semplifico la situazione spiegando come utilizzerò il programma.

    Lavoro in una azienda che vende ricambi auto

    Da circa un annetto ho affiancato la vendita on line alla vendita al banco, e mi ritrovo con un giro discreto di ordini giornalieri. Vendo principalmente su ebay, ma molti clienti chiamano al telefono o contattano via mail per effettuare ordini. Ogni giorno prendo carta e penna e mi scrivo un foglietto per ogli cliente ( al di fuori di ebay o ecommerce personale) con indirizzo, materiale metodo di pagamento e importo, il primo pomeriggio inizio con le spedizioni: trascrivo i dati di spedizione nel programma sda per la lettera di vettura, scarico il materiale acquistato dal cliente attraverso il gestionale del negozio, e passo l'ordine ad un addetto a fare il pacco. Il foglietto viene distrutto.

    Il problema di questo programma è diventato realtà perché i "Foglietti" stanno iniziando ad accumularsi, ogni giorno ce ne sono circa una quindicina ventina al di fuori della 30-40ina su ebay.

    Con il programma l'iter dovrebbe essere il seguente:
    Mi chiamano al telefono e vogliono piazzare un'ordine da spedire, apro il programma e inserisco tutti i dati (spedizioni- importo-materiale), quando il pomeriggio inizio con i pacchi, apro il programma e copio tutti gli ordini nel programma SDA (posso importare un file csv per non dover fare nulla , e trovare le lettere di vettura gia compilate e stampate) in modo da non dover trascrivere ad uno ad uno tutte le spedizioni, e la situazione con le spedizioni è risolta
    Con il materiale, avendo un modus operandi di inserire il materiale come ad esempo xxxxx - xxxxxx posso impostare il gestionale interno del negozio in modo da poter caricare il materiale vedendo con "-" un separatore e perciò, risolvendo all'atto pratico anche il problema del materiale ( o per lo meno mi hanno detto che una soluzione del genere per il programmatore del gestionale può andare bene perciò bene cosi

    Per il tasto cerca, serve unicamente se un cliente mi chiama e mi fa un'ordine, lo invio, e dopo un'ora ad esempio mi chiama per dirmi che vuole aggiungere qualcosa al suo ordine.

    Scrivo il nome o simili, lo trovo, effettuo le opportune aggiunte , e rinvio l'ordine.

    Il programma deve essere piuttosto banale, non deve avere traccia di utenti o materiale, considerando che farà girare una medi di 15-20 ordini al giorno.

    Spero di essere stato chiaro sulla panoramica che ho sul programma



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

    Ciao Claudio

    Relativamente al problema dei "Materiali" mi è venuta un'idea che, prima di proportela, devo sottoporre alle necessarie verifiche.

    Per quanto riguarda il TROVA da quello che capisco mi sembra che a te non interessi trovare uno specifico ordine di un cliente maindividuarne uno qualsiasi di quel cliente per poi modificarlo ed inviare un nuovo ordine; è corretto?

    Ma poi come fai a gestire eventuali omonimie? O, ai tuoi fini, sono ininfluenti?

    Anche per questo problema ho qualche idea ma anche qui devo fare prove e verifiche.

    Alfredo

    P.S. Mi stavo chiedendo perchè nel tuo database non sono presenti un campo "Data" ed un campo "Codice Fiscale" (del cliente) che secondo me sono importanti ai fini della ricerca.





  • di 77claudio77 (utente non iscritto) data: 05/11/2015 09:23:45

    Ciao alfrimpa

    Su 15 -20 ordini giornalieri che poi verranno eliminati a fine giornata, avere casi di omonimia, ad oggi non mi è mai capitato e mi sembra piuttosto improbabile, per questo non mi ero fatto tanti problemi ad utilizzare un campo non univoco come il nome o un cap.
    Detto ciò in tasto TROVA serve più che altro a modificare un'ordine che è stato già inserito, come ti dicevo, se un cliente mi chiama e mi fa un'ordine, e dopo poco mi richiama per modificarlo, in qualche modo devo fare per poter recuperare l'ordine. magari si potrebbe inserire al posto del tasto cerca il taso "Modifica" che mi fa recuperare l'ordine, e con il tasto invia viene sovrascritto se fattibile

    Sarebbe comodo inserire il nome - premo su trova - mi inserisce nella maschera tutti i dai- inserisco le opportune modifiche- premo su invio e mi "sovrascrive" l'ordine effettuato poco prima.

    Che pensi Sempre una soluzione non ottimale?

    Grazie mille



  • di alfrimpa data: 05/11/2015 11:46:17

    Ciao Claudio

    Ti ho allegato nuovo file (Claudio77_a.xlsm) dove credo di avere risolto il problema del "Materiali".

    Nella casella di testo "Materiali" digita i prodotti uno di seguito all'altro separati da uno spazio, un trattino, una sbarra (o quello che vuoi)

    Al termine dell'inserimento clicca su invia ordine.

    Tieni presente che il n. ordine è determinato automaticamente con formule per cui stai attento a non cancellare la colonna M.

    Fai delle prove e dimmi come ti pare.

    Ora passo a vedere la questione delle ricerche/modifiche.

    Alfredo

    P.S. Purtroppo in quest'ultimo file dimenticato di inserirti l'apertura automatica della form; lo farò la prossima volta





  • di alfrimpa data: 05/11/2015 18:16:26

    Ciao Claudio

    Sono in dirittura d'arrivo.

    Domani conto di allegarti il file pressochè completo.


    Alfredo





  • di 77claudio77 (utente non iscritto) data: 06/11/2015 08:40:52

    Ciao caro

    Come al solito non come come ringraziarti =)

    Scusa per ieri ma ero assente nel pomeriggio

    Ho visto l'inserimento del Numero d'ordine, e mi sembra ottimale; escluso dalla maschera e viene messo consequenziale all'interno del file senza dover toccare nulla. Mi sembra perfetto

    Aspetto con impazienza la versione "finale"

    Grazie mille davvero



  • di alfrimpa data: 06/11/2015 12:26:15

    Ciao Claudio

    Ti allego la versione (spero finale del file Claudio77_finale.xlsm)

    In questo file ho reso automatica l'apertura della form; questa si attiva all'apertura del file o alla selezione del foglio1 (se sei già sul foglio1 e non hai la maschera vai sul foglio2 e poi torna sull'1).

    Quando nella maschera clicchi su "TROVA ORDINE" ti si aprirà un'altra maschera dove in una combobox potrai scegliere il cliente di cui vuoi modificare l'ordine.

    Modificato l'ordine clicca su "MODIFICA ORDINE" e la variazione sarà effettuata sul foglio1

    Via via che sul foglio1 saranno caricati clienti questi appariranno automaticamente nella combobox della maschera di modifica e non dovrai fare nulla per aggiungerli.

    Fai molte prove e fammi sapere come va e se vi sono modifiche/aggiustamenti da fare.

    Qui sotto ho pubblicato tutto il codice necessario al funzionamento dell'applicazione e l'ho fatto non per vanità ma per condividerlo con tutto il forum ed anche per "smuovere" la tua curiosità/interesse a cercare di capire come funziona.

    Se hai bisogno di chiarimenti sono qua (nel weekend sono fuori ma comunque ho l'iPad con me quindi posso collegarmi al forum).

    Alfredo
     
    Option Explicit
    Option Compare Text
    Public rig As Long
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim ur As Long
    ur = Worksheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To 7
        Worksheets("Foglio1").Cells(ur + 1, i) = Me.Controls("TextBox" & i).Value
    Next i
    Worksheets("Foglio1").Cells(ur + 1, 8) = Me.ComboBox1.Value
    If Me.OptionButton1 = True Then
        Worksheets("Foglio1").Cells(ur + 1, 9) = "SI"
        Else
        Worksheets("Foglio1").Cells(ur + 1, 9) = "NO"
    End If
    Worksheets("Foglio1").Cells(ur + 1, 10) = Me.TextBox9.Value
    For i = 10 To 11
        Worksheets("Foglio1").Cells(ur + 1, i + 1) = Me.Controls("TextBox" & i).Value
    Next i
    Worksheets("Foglio1").Cells(ur + 1, 14) = Me.TextBox13.Value
    Worksheets("Foglio1").Cells(ur + 1, 15) = Me.TextBox14.Value
    End Sub
    
    Private Sub CommandButton2_Click()
    Dim i As Integer
    Dim cli As String
    'Dim rig As Long
    Call CreaElencoUnivoco
    cli = UserForm2.ComboBox1.Value
    rig = Trovariga(Worksheets("Foglio1").Range("a1:a10"), cli)
    For i = 1 To 7
        Me.Controls("TextBox" & i).Value = Worksheets("Foglio1").Cells(rig, i)
    Next i
    Me.ComboBox1.Value = Worksheets("Foglio1").Cells(rig, 8)
    Me.TextBox9.Value = Worksheets("Foglio1").Cells(rig, 10)
    Me.TextBox10.Value = Worksheets("Foglio1").Cells(rig, 11)
    Me.TextBox11.Value = Worksheets("Foglio1").Cells(rig, 12)
    Me.TextBox13.Value = Worksheets("Foglio1").Cells(rig, 14)
    Me.TextBox14.Value = Worksheets("Foglio1").Cells(rig, 15)
    If Worksheets("Foglio1").Cells(rig, 9) = "SI" Then
        Me.OptionButton1.Value = True
        Else
        Me.OptionButton2.Value = True
    End If
    End Sub
    
    Private Sub CommandButton4_Click()
    UserForm1.Hide
    End Sub
    
    Private Sub CommandButton3_Click()
    Dim ctrl As Control
    For Each ctrl In UserForm1.Controls
        If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then
            ctrl.Value = ""
        End If
    Next ctrl
    End Sub
    
    Private Sub CommandButton5_Click()
    Dim j As Integer
    For j = 1 To 7
        Worksheets("Foglio1").Cells(rig, j) = Me.Controls("TextBox" & j).Value
    Next j
    Worksheets("Foglio1").Cells(rig, 8) = Me.ComboBox1.Value
    For j = 10 To 12
        Worksheets("Foglio1").Cells(rig, j) = Me.Controls("TextBox" & j - 1).Value
    Next j
    Worksheets("Foglio1").Cells(rig, 14) = Me.TextBox13.Value
    Worksheets("Foglio1").Cells(rig, 15) = Me.TextBox14.Value
    If Me.OptionButton1.Value = True Then
        Worksheets("Foglio1").Cells(rig, 9) = "SI"
        Else
        Worksheets("Foglio1").Cells(rig, 9) = "NO"
    End If
    End Sub
    
    Private Sub CommandButton1_Click()
    If Me.ComboBox1.Value = "" Then
        MsgBox "Effettuare scelta cliente"
        Exit Sub
    End If
    UserForm2.Hide
    End Sub
    
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
            If CloseMode = 0 Then Cancel = True
    End Sub
    
    unction Trovariga(Tabella_Dati As Range, parola As Variant) As Variant
        If parola = "" Then
            Trovariga = ""
         Exit Function
        End If
        Trovariga = Tabella_Dati.Find(parola, LookAt:=xlWhole).Row
    End Function
    
    Sub CreaElencoUnivoco()
     Dim CL As Range, Intervallo As Range, Elenco As New Collection
     Dim Valori As Variant
     Dim cnt As Long
     cnt = Worksheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row
     Set Intervallo = Worksheets("Foglio1").Range("a1:a" & cnt)
     Set Intervallo = Intervallo.Offset(1, 0).Resize(Intervallo.Rows.Count - 1, Intervallo.Columns.Count)
     On Error Resume Next
     For Each CL In Intervallo
    Elenco.Add CL.Value, CStr(CL.Value)
     Next
     On Error GoTo 0
     With UserForm2
    .ComboBox1.Clear
    For Each Valori In Elenco
    .ComboBox1.AddItem Valori
    Next
    End With
     UserForm2.Show
     End Sub
    






  • di 77claudio77 (utente non iscritto) data: 06/11/2015 12:39:05

    Come al solito sempre troppo gentile.

    Inizio a testare il programma e a studiare il codice sopratutto =)

    Mi farebbe molto piacere imparare.

    Ti do notizie per metà settimana e ti faccio sapere come si comporta anche in azione.

    Grazie mille e buon fine settimana



  • di mb data: 06/11/2015 14:08:53

    Buongiorno Alfredo e buongiorno Claudio

    complimenti come sempre per il bel lavoro

    io ho solo fatto una piccola modifica alle impostazioni della userform perché utilizzando il cursore non c'è la sequenza nei tasti..

    ma è una sciocchezza in confronto al capolavoro di file prodotto

    complimenti, come Claudio vado anch'io a studiare

    buon fine settimana



  • di alfrimpa data: 06/11/2015 14:27:18

    Ciao mb e grazie dell'interesse.

    Cit. "io ho solo fatto una piccola modifica alle impostazioni della userform"; ma hai allegato il file da te modificato?

    In effetti hai ragione; avrei dovuto impostare progressivamente (per tutti i controlli della maschera la proprietà TabIndex (ci avevo anche pensato ma poi me ne sono dimenticato, magari provvederò in una prossima release )

    So che a te la domanda la posso fare: il codice è per te comprensibile? Ci sono punti a te non chiari?

    Te lo chiedo perché tu chiudi spesso i tuoi post con la locuzione "e ora vado a studiare".

    Beh dopo tanto studiare avrai pure imparato qualcosa (e di questo ne sono più che certo).

    Alfredo





  • di mb data: 06/11/2015 15:51:50

    Buon pomeriggio

    allegata versione con le modifiche fatte, ho sistemato il frame relativo ai pagamenti e poi ho modificato anche la sequenza della userform perché dala gestione monetaria passava a alla gestione materiale per poi tornare a gestione spedizioni

    ... concludendo il merito del capolavoro è di Alfredo e non mi stanco di scriverlo vado a studiare (" chi smette di imparare impara ad invecchiare..." e io ho ancora tanti anni da passare in contabilità e sui computer ...)




  • di alfrimpa data: 06/11/2015 16:11:53

    Ma quale capolavoro Andrea (mi pare di ricordare che questo sia il tuo nome ed a me piace chiamare la gente per nome e non con il suo nick ); è solo una piccola cosa fatta per diletto e passione.

    Devo anche dire che mi diverto di più quando, anziché rispondere a domande spot su questo ed altri forum, sono "coinvolto in qualcosa di più completo e complesso (anche se questo più di tanto non lo era).

    Quanto allo studiare sono il primo a darti ragione e quel poco che so lo devo al fatto di avere la biblioteca zeppa di testi di informatica a partire dal vecchio Lotus 123 dei primi anni '80 a finire all'odierno Excel 2013/VBA (oltre ad Access).

    Oggi c'è Internet ma, a mio modo di vedere, un caro e vecchio buon libro (qualunque argomento tratti) è sempre la cosa migliore.

    Alfredo

    P.S. @ Claudio : Scaricati il file Claudio77_finale2.xlsm di mb





  • di 77claudio77 (utente non iscritto) data: 11/11/2015 18:02:29

    Ciao a tutti.

    Al momento il programma sta andando benissimo e fa perfettamente il suo lavoro.

    Ora arriva il momento di creare qualche piccola personalizzazione.

    Visto che al negozio chiamano meccanici, e alcuni sono ricorrenti, sarebbe possibile inserire un tasto per inserire la persona in una sorta di mini archivio? stiamo parlando di una decina di persone al max

    IN modo che quando voglio inserire una persona in "anagrafica" premo un tasto "Inserisci in anagrafica" e quando devo fare una spedizione a questa persona, lo seleziono in un menù a tendina tipo quello dei pagamenti, o se deve essere una spedizione di un altro cliente compilo senza problemi

    Che ne dite? fattibile?

    Grazie mille



  • di alfrimpa data: 12/11/2015 14:22:05

    Ciao Claudio

    Sono contento che tutto funzioni alla perfezione.

    Quanto alle cose che mi hai chiesto, se ho capito bene, credo siano fattibili (con Excel solo il caffè non si può fare ) ma mi devi dare un po' di tempo.

    Tieni però presente che con il file che hai già hai tutti gli strumenti didattici che ti occorrono per creare le nuove personalizzazioni che hai richiesto.

    Perché non cerchi di fare un piccolo sforzo e di provarci tu? Credimi è il miglior metodo per imparare.

    Ti do qualche indicazione:

    1) crea un nuovo foglio Anagrafica Cliente
    2) sulla form principale sostituisci la prima textbox (Nome e Cognome) con una combobox che vada a prendere i dati dall'anagrafica;
    3) poi, una volta scelto il cliente nella combo, c'è il modo di riempire le altre textbox di tutti i dati anagrafici automaticamente
    4) volendo si potrebbe creare una userform per l'inserimento di nuovi clienti.

    Insomma si possono fare tante cose e tutto dipende dalla complessità dell'applicativo che si vuole sviluppare.

    Ripeto puoi tentare di provarci tu; se poi hai difficoltà torni a scrivere sul forum.

    Alfredo