Sviluppare funzionalita su Microsoft Office con VBA Pannello di controllo per inserimento dati

Login Registrati
Stai vedendo 16 articoli - dal 26 a 41 (di 41 totali)
  • Autore
    Articoli
  • #37236 Score: 0 | Risposta

    albatros54
    Moderatore
      89 pts

      ti riposto il file, fai delle prove senza mettere date inferiorio uguali al 03/03/2023.

      Fai sapere.

       

      Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
      Sempre il mare, uomo libero, amerai!
      ( Charles Baudelaire )
      Allegati:
      You must be logged in to view attached files.
      #37268 Score: 0 | Risposta

      FROST220684
      Partecipante

        Allora io ho dovuto iniziare nuovamente dal primo file che mi avevi mandato e l'ho dovuto modificare in modo che si potesse lavorare a partire da un altro foglio. te lo riallego cosi magari lavoriamo su questo cosi ci capisco qualcosa in piu

        ho risolto anche il problema della data quindi adesso se io inserisco nel form la data del 06/03/2023 lui cerca la prima data del 06/03/2023 ed aggiunge le righe. rimangono irrisolti ci ho provato ma non sono riuscito alcune problematiche di fondo:

        1) se la data non esiste (es. ho una nota del 03/06 ed una nota del 05/06, ma non ho note del 04/06) e quindi vado ad inserire ad esempio una data che non è presente come il 04/06/2023 dell'esempio lui non la inserisce.

        2) stesso simile problema quando si tratta dell'ultima riga (es. se io ho note fino al 13/06/2023 e voglio inserire una nota del 14/06/2023) lui non la inserisce. ho provato con il codice LastRow ma non mi funziona

        3) stessa cosa sull'intestazione - es. se le note partono dalla data del 03/06 ed io voglio inserire una data precedente tipo il 02/06 lui non la inserisce (ma questo mi avevi detto che era anche un altro problema riguardante il filtro che veniva eliminata ma essendo una casistica possibile dovrei risolverla in qualche modo)

        4) quando uso il form e clicco su inserisci i campi rimangono compilati a me servirebbe che si cancellassero e che ci sia un blocco che non fa inserire la riga se ci sono campi non immessi nel form

        scusate tutte le richieste e ringrazio chiunque riesca ad aiutarmi

        Allegati:
        You must be logged in to view attached files.
        #37270 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          FROST220684 ha scritto:

          ho risolto anche il problema della data

          Se io inserisco una data esistente, il nuovo dato viene messo PRIMA di tutte le altre date. Mi sembrava di aver capito che doveva accodarsi (mi sembrerebbe anche più logico). Forse però alla fine fai un sorting su tutti i campi e allora il problema non si pone  perché si rimescola tutto comunque 🙂

          #37271 Score: 0 | Risposta

          FROST220684
          Partecipante

            Diciamo che la prima richiesta era questa ma poi mi sono reso conto che il codice postato ha questo problema.

            Se io ho due note 7/06 ed inserisco una nota 8/06

            Il risultato è questo

            07/06

            08/06

            07/06

            Quindi la soluzione o è quella che ho postato io nel file oppure lui dovrebbe indentificare l'accodamento ma sull'ultima data esistente e quindi se ci sono 2 (07/06) posizionarsi dopo l'ultimo 07/06

             

             

            #37272 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              Sto sistemando questi problemi nel file che posterò. Verrà inserita una data in cima se precedente alla prima, in fondo se successiva all'ultima, e in fondo al blocco di date uguali se la data è presente. Se non è presente verrà inserita dopo quella più vicina.

              #37273 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Ecco, allego la mia revisione.
                Mi manca la seconda parte del punto 4: "e che ci sia un blocco che non fa inserire la riga se ci sono campi non immessi nel form" ma te la lascio per esercizio perchè è abbastanza semplice anche per te 😀

                Allegati:
                You must be logged in to view attached files.
                #37275 Score: 0 | Risposta

                FROST220684
                Partecipante

                  beh funziona molto bene ci sono alcune cose che ho notato:

                  1) prova ad inserire una nota con data 08/03/2023 e guarda dove te la posizione praticamente dopo il 10/03/2023

                  2) ho inserito nel form altri 2 tasti:

                  Cerca Riga = Dovrebbe cercare i dati collegati alle textbox (data colonna A; Comunicazione colonna B; operatore colonna C) e restituire se possibile un menu tipo il trova di excel ed alla scelta della riga desiderata ripopolare i dati della userform

                  Salva Riga = Una volta ripopolato i dati ed effettuate le dovute correzioni risalvare i dati senza aggiungere una nuova riga ma trascrivendo quella prelevata dalla userform

                  3) 

                  vecchio frac ha scritto:

                  e che ci sia un blocco che non fa inserire la riga se ci sono campi non immessi nel form"

                  io ho provato questa cosa che ho anche inserito nel codice inserendo poi un apice per non farlo funzionare ma non va mi da errore "end with senza with" ma io ho messo sia il with che l'end with e quindi mi sono spiaggiato con un balenottero

                  `Option Explicit
                  
                  Private Sub CommandButton1_Click()
                  Dim f As Object
                  Dim datacerca As Date
                  Dim i As Integer
                  Dim itm As Integer
                  Dim d As Date
                  
                      Application.ScreenUpdating = False
                      
                      datacerca = CDate(Me.TextBox1.Text)
                      d = datacerca
                      itm = [COUNTA('NOTE RICEVIMENTO'!A:A)]
                  
                      'With Note_Ricevimento
                     ' If TextBox1.Text = "" Then
                     ' MsgBox "Compilare Campo Data"
                     ' If TextBox2.Text = "" Then
                     ' MsgBox "Compilare Campo Comunicazione"
                     ' If TextBox3.Text = "" Then
                  'MsgBox "Compilare Campo Operatore"
                  'End If
                  'End With
                  
                      Set f = Worksheets("note Ricevimento").Range("A:A").Find(datacerca, LookIn:=xlValues, lookat:=xlWhole)
                      If f Is Nothing Then
                          If datacerca > Worksheets("note Ricevimento").Cells(itm, 1) Then
                              Set f = Worksheets("note Ricevimento").Cells(itm + 1, 1)
                          ElseIf datacerca < Worksheets("note Ricevimento").Cells(3, 1) Then
                              Set f = Worksheets("note Ricevimento").Cells(3, 1)
                          Else
                              i = 0
                              Do
                                  i = i + 1
                                  datacerca = datacerca + i
                                  Set f = Worksheets("note Ricevimento").Range("A:A").Find(datacerca, LookIn:=xlValues, lookat:=xlWhole)
                              Loop While f Is Nothing
                          End If
                      Else
                          i = f.Row
                          Do
                              i = i + 1
                          Loop While Worksheets("note Ricevimento").Cells(i, 1) = d
                          Set f = Worksheets("note Ricevimento").Cells(i, 1)
                      End If
                      
                      With f
                          .EntireRow.Insert
                          .Offset(-1).Value2 = d
                          .Offset(-1, 1) = TextBox2.Text
                          .Offset(-1, 2) = TextBox3.Text
                          .EntireRow.Copy
                          .Offset(-1).PasteSpecial xlPasteFormats
                      End With
                      Application.CutCopyMode = False
                      Application.ScreenUpdating = True
                      
                      For i = 1 To 3
                          Controls("TextBox" & i) = ""
                      Next
                      TextBox1.SetFocus
                      
                      Unload Me
                  End Sub`

                  4) il reset l'ho risolto con Unload Me

                  Allegati:
                  You must be logged in to view attached files.
                  #37278 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    1) Risolto 🙂 il controllo per l'inserimento nella posizione giusta è meglio farlo riga per riga per cercare la prima data maggiore di quella inserita. 

                    2) Hai inserito i tasti ma non c'è codice. Nemmeno l'ombra. Forse solo la firma di Inserisci riga... non è sufficiente 🙂

                    3) Ci hai provato. Io poi metterei questo controllo a inizio codice, inutile fare altri calcoli se non è soddisfatta questa condizione. Nel tuo codice utilizzi degli if multiriga ma quando lo fai devi chiuderli con end if oppure utilizzare la sintassi ElseIf oppure utilizzare la sintassi If monoriga (cioè scrivere le istruzioni if ... then senza andare a capo) . Il with era chiuso ma non essendoci la chiusura degli if, VBA va in palla. Inoltre dopo ogni etst devi uscire dalla sub altrimenti il codice prosegue dopo i msgbox ed è tutto inutile 🙂

                    4) Io avevo previsto la pulizia delle textbox come avevi chiesto, e implementato la chiusura dl form premendo ESC (non lo avevi chiesto ma era intuitivo). Col tuo unload rendi inutile la pulizia delle textbox quindi ho rimosso quel codice.

                    Allego il file rivisitato. Manca il punto 2 ma fai un piccolo sforzo 😀

                     

                    Allegati:
                    You must be logged in to view attached files.
                    #37280 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      272 pts

                      Alla ricerca della semplificazione e ottimizzazione allego revisione 4 😉

                      Uno sfruttamento intelligente di Match evita tutta una ridondanza di cicli e confronti.

                      Allegati:
                      You must be logged in to view attached files.
                      #37282 Score: 0 | Risposta

                      FROST220684
                      Partecipante

                        vecchio frac ha scritto:

                        1) Risolto 🙂 il controllo per l'inserimento nella posizione giusta è meglio farlo riga per riga per cercare la prima data maggiore di quella inserita. 

                        Si probabilmente è la strada giusta appena ho un attimo lo guardo per bene

                        vecchio frac ha scritto:

                        2) Hai inserito i tasti ma non c'è codice. Nemmeno l'ombra. Forse solo la firma di Inserisci riga... non è sufficiente

                        Hai ragione diciamo che volevo fare vedere quello che era necessario per capire come agire ci provooooo sicuramente

                        vecchio frac ha scritto:

                        3) Ci hai provato. Io poi metterei questo controllo a inizio codice, inutile fare altri calcoli se non è soddisfatta questa condizione

                        Mi sembra di aver capito faccio le prove e ti aggiorno

                        vecchio frac ha scritto:

                        4) Io avevo previsto la pulizia delle textbox

                        Si ho visto solo che pensandoci è abbastanza possibile che la nota da inserire sia una per poi passare magari ad altre note di altri fogli. Perciò tanto vale farla chiudere e riaprire all'occorrenza 

                        vecchio frac ha scritto:

                        Alla ricerca della semplificazione e ottimizzazione allego revisione 4

                        Se ho capito hai pulito solo il codice giusto?

                         

                        Grazieeeeeee mille e ti aggiorno

                        #37283 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          FROST220684 ha scritto:

                          Se ho capito hai pulito solo il codice giusto?

                          Sì, la versione 3 andava già bene di suo, scegli quella che preferisci 🙂 io ogni tanto rivedo i miei progetti alla ricerca della semplificazione (spesso poi non funziona più niente e allora torno indietro 🙂 )

                          #37288 Score: 0 | Risposta

                          FROST220684
                          Partecipante

                            vecchio frac ha scritto:

                            Alla ricerca della semplificazione e ottimizzazione allego revisione 4 😉

                            Uno sfruttamento intelligente di Match evita tutta una ridondanza di cicli e confronti.

                            ho incominciato a fare qualche prova:

                            la parte dei dati obbligatori ok. ma la parte data ha dei problemi:

                            se inserisci una data non esistente da errore
                            chiaramente succede anche se immetti una data tipo al 20/03/2023 che ancora non c'è invece di immetterla come ultima riga da errore, cosa strana non succede per la data del 02/03/2023 che immette correttamente come prima riga.
                            altra problema che secondo me a questo punto è un po tutto collegato, il file che stai gestendo in realtà è già pieno di note ma chiaramente verra prima o poi utilizzato dall'inizio quando ancora non ci sarà nemmeno una nota. se tu elimini tutte le note e provi ad inserire la prima va in errore
                            l'errore è sempre lo stesso per questo penso sia tutto collegato per facilitarti le prova prova ad inserire queste date sul file 4:

                            20/03/2023

                            04/03/2023

                            prova ad eliminare tutte le righe ed inserisci una nuova prima riga 
                             
                            per queste 3 casistiche ti da errore

                            prova ad inserire la data del 02/03/2023 che non esiste e ragionando allo stesso modo dovrebbe dare errore ma stranamente la inserisce bene.

                            vecchio frac ha scritto:

                            frost-Note-Voucher-Forum-ExcelVBA-3-VF.xlsm

                            stesse prove con il file 3:

                            se immetti queste date:

                            02/03/2023
                            20/03/2023

                            le inserisce correttamente

                            04/03/2023

                            data che non esiste da errore

                            #37291 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              272 pts

                              C'è sempre qualcosa che non va 🙂

                              Vediamo cosa posso fare.

                              #37292 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                272 pts

                                Vedo... il Match fallisce se l'elenco è vuoto. Mettiamoci allora un controllo di validità 🙂

                                #37304 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  272 pts

                                  Proviamo con una nuova versione 🙂

                                   

                                  Allegati:
                                  You must be logged in to view attached files.
                                  #37312 Score: 0 | Risposta

                                  FROST220684
                                  Partecipante

                                    funziona tutto alla perfezioneeeeeeeeeeeeeeeeeeeeeeeeee grazie davvero tanto dell'aiuto e grazie a tutto il forum

                                  Login Registrati
                                  Stai vedendo 16 articoli - dal 26 a 41 (di 41 totali)
                                  Rispondi a: Pannello di controllo per inserimento dati
                                  Gli allegati sono permessi solo ad utenti REGISTRATI
                                  Le tue informazioni: