You are here:--[RISOLTO] AutoFill in base a condizioni
[RISOLTO] AutoFill in base a condizioni2019-05-12T16:51:08+02:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] AutoFill in base a condizioni

  • Autore
    Articoli
  • AvatarKris_9951
    Partecipante
      Post totali: 87

      Salve a tutti!

      Una volta Sid e Sal mi hanno detto che quasi nulla è impossibile con il VBA.

      Spero sia così ma detto da loro ci credo :-)

       

      Ho un problema, o meglio, vorrei migliorare un file ma purtroppo non posso perchè sono arrivato ad un punto dove non posso andare avanti.

      Nel file che ho allegato compare una normalissima tabella con un totale di 9 campi

      I primi 3 campi sono bloccati perchè contengono formule, quindi l’inserimento dati manuale inizia dal campo “CODICE” in poi.

      Il funzionamento è semplice. Lo descrivo passo passo in modo tale che più facilmente si capirà cosa mi piacerebbe ottenere.

      Si deve compilare manualmente il campo:

      – CODICE (appartiene ad una lista e l’inserimento è controllato con il Convalida Dati)

      – S.N. (appartiene ad una lista e l’inserimento è controllato con il Convalida Dati)

      – CK (Deve essere un numero intero)

      – LOCAZIONE (appartiene ad un elenco e l’inserimento è controllato con il Convalida Dati)

      – STATUS (appartiene ad un elenco e l’inserimento è controllato con il Convalida Dati)

      Una volti i campi di una riga BISOGNA SELEZIONARE LE CELLE DI QUELLA RIGA TRA LA COLONNA “D” e LA COLONNA “I”, poi premere il pulsante “AGGIUNGI PRODOTTI” che non fa altro che aprire una InputBox la quale chiede per quante righe si deve applicare l’AutoFill.

      Deve essere selezionato un numero nella InputBox ed una volta premuto OK viene fatto AutoFill sulle celle selezionate.

      Ora viene il problema:

      Quando viene fatto AutoFill sul campo “S.N.” i numeri diventano progressivi e questo VA BENE, mentre anche nel campo CK i numeri diventano progressivi e questo NON VA BENE.

      Ora spiego la miglioria che vorrei applicare:

      Ho creato un pulsante che si chiama “NUOVO MODO”. Esso apre una maschera la quale contiene i nomi di tutti i campi dei quali viene fatto l’inserimento dati con sopra una CheckBox.

      Mi piacerebbe che tramite le CheckBox potessi scegliere i campi della riga selezionata da “AutoFillare” senza dover necessariamente selezionarli tutti preventivamente.

      Qualcuno potrebbe aiutarmi per favore? :wacko:

      https://www.dropbox.com/s/m01ytveogbr2b0a/TEST-MAG.xlsm?dl=0

      • Questo argomento è stato modificato 3 mesi, 1 settimana fa da sid sid.
    • BySalvBySalv
      Amministratore del forum
        Post totali: 480

        Ciao Kriss, hai provato a fare un inserimento? come vedi si posiziona a fine foglio all’ultima riga.

        Premesso che nel tuo sistema non si deve partire dalla quantità ma dal Codice, questo perche nella replica deve replicare codice e resto, e poi inserire la quantità per i seriali.

        inoltre meglio creare una userform di inserimento confermando i dati inseriti ti creerà le nuove righe nel magazzino.

        anche e qui entriamo nella mentalità del tuo boss, non è bene creare una riga di magazzino per ogni seriale, anche se si potrebbe avere codice+seriale creando codice univoco, e su questo non entro in merito.

        Vedo cosa posso proporti.

        Domanda CK,CORSIA,LOCAZIONE, è la posizione della merce nel magazzino

        Ciao By Sal (8-D

      • AvatarKris_9951
        Partecipante
          Post totali: 87

          Ciao Sal!

          Ammetto che nel file c’è qualche lacuna 😅

          Arriva all’ultima riga perché ho scritto a fine macro di andare all’ultima riga ma intendevo la tabella, non tutto il foglio 😂

          Diciamo che in questo file sono abbastanza libero quindi se vuoi proponi pure eventuali alternative 😊

          Per quanto riguarda la maschera secondo te non sarebbe meglio una UserForm che contiene tutti i campi della tabella (su una riga sola) dove da codice in poi si scrive il codice prodotto da inserire, seriale di partenza, CK e tutto il resto, infine scrivere il numero di pezzi tot da inserire ed una volta confermato, il tutto viene scritto a partire da una nuova riga in poi?

           

          P.s. “CK” è un numero che identifica il lotto di produzione e per questo motivo non può essere sequenziale

          “CORSIA” e “LOCAZIONE” è la posizione della merce in magazzino.

          Grazie mille per il supporto!

        • BySalvBySalv
          Amministratore del forum
            Post totali: 480

            Ciao Kriss, ecco uno stralcio, ti ho preparato una userform, la lanci con l’immagine del form nel foglio database.

            non devi fare altro che inserire la quantità ed il ck e premere inserisci.

            ma prima voglio farti un discorso sul magazzino, ma è un consiglio, la localizzazione dei codici, credo che tu abbia una scaffalatura, hai diviso le scaffalature in lettere da quello che ho visto.

            nei magazzini per depositare o prelevare i prodotti si usano posizioni, questa posizione è unica, penso che hai scaffali in cui puoi inserire pallet oppure scaffali con ripiani, ogni vuoto dello scaffale è una posizione, in cui vengono inseriti i prodotti, quindi nel primo scaffale a terra sarà la posizione 1 appresso sempre a terra 2 e cosi di seguito fino alla fine dello scaffale ammettendo che siano 20 posizioni a terra il primo ripiano sarà 21 fino a 40, il terzo 41 fino a 60 e cosi di seguito, diciamo che nella prima facciata dello scaffale arriviamo a 100 alle spalle dello scaffale avremo 101 fino a 200, l’altra file di scaffali incomincerà da 401 e cosi di seguito per tutto il tuo magazzino.

            perche si usa questa metodologia, per ragioni logistiche, quando tu dici scaffale c terra il personale di magazzino va allo scaffale c e deve vedere tutte le posizioni di terra se contengono il codice, mentre se gli hai dato come posizione 15 lui va direttamente a tale posizione per prendere il codice, risparmio di tempo e fatica del personale, inoltre quando crei una lista di prelievo o deposito ed ordini la lista in base alla posizione, il personale fa un solo giro del magazzino in sequenza prendendo tutti i codici e non ritorna 2 volte sullo stesso percorso.

            ci potranno anche essere più posizioni con lo stesso codice perche lo spazio si è riempito allora si posiziona il codice in più posizioni prendendo sempre il codice più datato come lotto, oppure più codici nella stessa posizione.

            questo lo dico solo come consiglio, poi fai come credi, io ho adottato questo metodo nella userform, ma se vuoi applicare il tuo si deve solo aggiungere una nuova textbox per la posizione di terra o piano.

            non ho messo formule nelle prime 3 colonne, tanto lo fa il VBA non sono necessarie ricerche.

            vedi se può andare bene e se ci sono problemi scrivi.

            il link al file
            http://www.filedropper.com/test-mag

            Ciao By Sal (8-D

          • AvatarKris_9951
            Partecipante
              Post totali: 87

              Ciao Sal!

              La tua idea mi piace molto 😊😊

              Grazie mille per il supporto e grazie anche per i consigli :-)

              I realtà avevo proposto al magazziniere di specificare ancor di più la posizione (non in modo così professionale come tu hai suggerito) ma con la lettera della corsia es. “A” ed a fianco un numero che indica il numero dello scaffale ed una lettera che indica il posizionamento es: “A3M” vuol dire corsia “A”, scaffale “3”, posizione “Metà”.

              Nonostante non sia particolareggiata come la tua proposta il magazziniere l’ha bocciata in quanto non avrebbe mai avuto il tempo (e la voglia) di vincolare troppo le posizioni dei prodotti in base a quanto registra sul file.

              P.s.

              quale istruzione si può inserire per evitare che lui registra 2 volte lo stesso codice con lo stesso seriale?

              Ti ringrazio ancora anche perché cerco sempre di imparare qualcosa dai tuoi codici e quelli di Sid.

              Saluti, Cristian

            • AvatarKris_9951
              Partecipante
                Post totali: 87

                Ho rimediato il controllo dippioni con questa macro:-)

                Private Sub Worksheet_Change(ByVal Target As Range)
                With ActiveSheet.ListObjects(“Tabella2”)
                For i = 2 To .Range.Rows.Count
                For j = i + 1 To .Range.Rows.Count
                confronto1 = .ListColumns(4).Range(i) & .ListColumns(5).Range(i)
                confronto2 = .ListColumns(4).Range(j) & .ListColumns(5).Range(j)
                If confronto1 = confronto2 Then
                MsgBox “Duplicato: ” & confronto1, vbInformation, “VERIFICA DUPLICATI”
                End If
                Next
                Next
                End With
                End Sub

                 

                Grazie mille!!! :-)

              • BySalvBySalv
                Amministratore del forum
                  Post totali: 480

                  Ciao Kriss, come avrai notato la sequenza dei seriali è automatica parte dal’ultimo inserito ed incrementa fino alla quantità arrivata, quindi non può inserire 2 volte lo stesso seriale.

                  però posso fare in modo che puoi scegliere di inserire tu manualmente il seriale, in questo modo ad ogni inserimento la macro si ferma aspetta che inserisci il seriale e passa al successivo, fino al numero di codici da caricare.

                  lo so è una battaglia ardua far capire che risparmierà tempo e lavoro al magazziniere con questo metodo, se lo avrebbe già trovato questo metodo sarebbe diventata una routine

                  ti preparo la modifica

                  Ciao By Sal (8-D

                • AvatarKris_9951
                  Partecipante
                    Post totali: 87

                    Ciao Sal!

                    Forse mi sono spiegato male 😭

                    L’inserimento dati così come lo hai fatto tu è perfetto ma temo solo che se il magazziniere ripete 2 volte lo stesso  inserimento fatto con la maschera poi si creano duplicati.

                    Es. Se oggi inserisce il codice A dal seriale 10 a 20, domani potrebbe fare erroneamente la stessa cosa, in questo modo è come se avesse inserito 2 volte gli stessi prodotti…

                    giusto?

                    quindi mettendo una macro all’evento Worksheet_Change si può controllare cella dopo cella eventuali duplicati…

                  • AvatarKris_9951
                    Partecipante
                      Post totali: 87

                      Hai ragione!!

                      Sono io che non ho capito :-(

                      Ora ho capito il perché di quelle due colonne in più sulla tabella dei codici!!!

                    • BySalvBySalv
                      Amministratore del forum
                        Post totali: 480

                        Ciao Kriss, quelle 2 colonne in più non permettono di creare doppioni, ma facendo un inserimento manuale dei seriali può capitare.

                        ti ho inserito una Checkbox che abilita/disabilità l’inserimento automatico, se è disabilitata ti chiede ogni volta il seriale per tante volte quanto sono le quantità.

                        con l’automatico invece controlla anche se è già presente un seriale doppione e non inserisce quindi alla fine devi ricordare che ne ha caricato solo 2 ammettendo che la quantità sia 3.

                        comunque vedi se va bene.

                        http://www.filedropper.com/test-mag_1

                        Ciao By Sal (8-D

                      • AvatarKris_9951
                        Partecipante
                          Post totali: 87

                          Grazie mille Sal!!! :-)

                        Devi essere loggato per rispondere a questa discussione.

                        Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                        Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                        Chiudi