Sviluppare funzionalita su Microsoft Office con VBA Automatizzare inserimento spese ricorrenti in bilancio familiare

Login Registrati
Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
  • Autore
    Articoli
  • #50994 Score: 0 | Risposta

    Semiuccio
    Partecipante
      1 pt

      Buongiorno a tutti e buon nuovo anno.

      Io ho un foglio excel per gestire il bilancio familiare. E' un foglio semplice, proprio una tabella, nella quale avrei bisogno di inserire automaticamente delle spese ricorrenti (tipo abbonamenti, utenze) quando la data del giorno è corrispondente alla data di pagamento di dette spese.

      Come potrei risolvere?

      #50999 Score: 0 | Risposta

      alexps81
      Moderatore
        58 pts

        Allega un file di esempio con il risultato che vorresti ottenere scritto a mano

        #51000 Score: 0 | Risposta

        Semiuccio
        Partecipante
          1 pt

          Ciao alexps81, ti allego un esempio del file a titolo esemplificativo.

          Ti ringrazio per la tua attenzione.

          Ciao

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

          alexps81
          Moderatore
            58 pts

            Ciao, credo che devi essere molto più esplicito...non è per nulla chiaro cosa vorresti ottenere.

            Io vedo 2 fogli: "CATEGORIE" e "2025".  In foglio "CATEGORIE" vedo in colonna A degli elementi che poi vengono riportati in colonna B del foglio "2025" tramite convalida dati. Perché? A cosa serve la presenza di quell'elenco in colonna A quando riporti gli stessi elementi da D1 a S1?

            Comunque...io non capisco che tipo di automatismo di aspetti. Quali azioni vorresti compiere affinché avvenga ciò che hai scritto nell'esempio del foglio 2025 nel riquadro blu? Ma poi questo automatismo come deve avvenire? Con la pressione di un pulsante? All'apertura del file? All'attivazione del foglio?

            Prova a dare una spiegazione dettagliata, partendo da zero e spiega tutti i passaggi che servono a raggiungere il risultato finale. 

             

            #51004 Score: 0 | Risposta

            Semiuccio
            Partecipante
              1 pt

              Ok ci provo. Partendo dall’inizio

              - nel foglio 2025 ho il vero e proprio bilancio nel quale andranno tutte le spese

              - nel foglio Categorie sono riportate le categorie di spesa che prelevo dal foglio 2025 tramite convalida dati

              - nella colonna C del foglio 2025, tramite la funzione indiretto() prelevo (sempre dal foglio categorie e dalle colonne D:S) le sottocategorie si spesa.

              Quello che vorrei ottenere è l’inserimento in automatico (o al limite il promemoria) delle spese ricorrenti, tipo le fatture per internet, le bollette luce, gas ecc…

              - pensavo ad un elenco a parte contenente le date e le rispettive spese.

              - all’apertura del file dovrebbe partire una macro che, vista la data “adesso()” mi dovrebbe inserire in coda alle spese, quella la cui data corrisponde ad “adesso()”. Al limite può essere una macro che avvio io, oppure un avviso che mi ricordano che ci sono spese in scadenza, o altra idea.

              Spero di essermi spiegato a sufficienza.

              Grazie ancora.

              #51012 Score: 0 | Risposta

              alexps81
              Moderatore
                58 pts

                Semiuccio ha scritto:

                nel foglio Categorie sono riportate le categorie di spesa che prelevo dal foglio 2025 tramite convalida dati

                Se non sbaglio è il contrario. Dal foglio "Categorie" prelevi i dati e li inserisci nel foglio "2025".

                 

                Comunque la data "odierna" come farebbe a capire quali sono le spese da accodare? Cioè queste date che sono inserite in colonna A del foglio "2025" come saltano fuori? Le inserisci tu di volta in volta oppure sarebbe quello il risultato che vorresti ottenere? Diciamo che vorresti questo come risultato...come fa la macro a capire che "TASSE Bollo C/C" scade il 02/01/2025?

                Da quel poco che ho capito è che sei tu che inserisci da A a D i vari dati (data, categoria, tipo e importo), poi lanci la macro e magari in una ListBox o MsgBox compare una lista di scadenze in base alla data attuale.

                Quindi mettiamo il caso che oggi 13/01/2025 scade l'ABBONAMENTO NOW e tu, oggi, lanci la macro, a quel punto comparirà un messaggio che tale abbonamento è caduto.

                Diciamo che è così...ma deve comparire solo ciò che è scaduto oggi o fino ad oggi? Cioè tutto ciò che viene prima del 14/01/2025? Ovviamente se così fosse capisci che più aumentano i mesi, più sarà grande l'elenco, dato che riporta tutto da gennaio. A meno ché non creiamo una discriminante sulla scadenza pregressa o la elimini del tutto. Ma questo è un processo che avviene in seguito. Ora tocca capire qual è l'approccio iniziale...ma sei tu a fornire i dettagli.

                #51026 Score: 0 | Risposta

                Semiuccio
                Partecipante
                  1 pt

                  alexps81 ha scritto:

                  Semiuccio ha scritto:

                  nel foglio Categorie sono riportate le categorie di spesa che prelevo dal foglio 2025 tramite convalida dati

                  Si. E' vero. Infatti sto pensando di rivedere il tutto per organizzare meglio il flusso del codice. Appena mi chiarisco le idee ti riscrivo.

                  Grazie ancora

                  #51077 Score: 0 | Risposta

                  Semiuccio
                  Partecipante
                    1 pt

                    Ciao Alex. Rieccomi. Ti allego nuovamente il file di esempio.

                    Vorrei che le spese ricorrenti vengano inserite automaticamente quando la data "adesso()" equivale a quella del pagamento.

                    Magari prendendole dal foglio "Spese Ricorrenti" che predispongo annualmente, prelevando tutte quelle non contrassegnate come "Registrata". Sarebbe utile anche come promemoria.

                    Giustamente, come da te suggerito, queste potrebbero essere contenute in una listbox.

                    Spero di non arrecarti troppo disturbo.

                    Grazie

                     

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

                    vecchio frac
                    Senior Moderator
                      272 pts

                      Ma la richiesta e' tutto senza codice? Solo formule?

                      #51081 Score: 0 | Risposta

                      gianfranco55
                      Partecipante
                        91 pts

                        ciao

                        non ho capito bene cosa vuoi fare

                        comunque non puoi usare ADESSO() ma =OGGI()

                        Adesso cambia ad ogni ricalcolo e ha l'orario

                        che versione hai di excel

                        #51082 Score: 1 | Risposta

                        alexps81
                        Moderatore
                          58 pts

                          Ciao @semiuccio

                          dunque io purtroppo sto facendo un po' fatica a capire ciò che ti serve. Quello che ho capito è che tu hai:

                          1 foglio "CATEGORIE" dove elenchi tutte le categorie delle varie spese che sostieni

                          1 foglio relativo all'anno dove elenchi le spese sostenute

                          1 foglio "Spese Ricorrenti" dove elenchi tutte quelle che sono le spese cicliche (quelle che sei certo di dover pagare), comprese di date e somme.

                          Ora, da quel poco che ho inteso, tu vorresti elencare nel foglio "2025" tutte le spese, ma quelle così dette "Ricorrenti", vorresti che ti comparissero in automatico quando la data attuale è relativa alla data di scadenza della Spesa Ricorrente.

                          Quindi, per ipotesi, nel foglio 2025, nella prima cella utile in colonna A scrivi una data, ad esempio quella di oggi (19/01/2025), poi compili da colonna B a colonna D i vari dati (categoria, tipo e importo). Poi attraverso un pulsante, importi tutte quelle spese ricorrenti relative alla data attuale. Dopodiché aggiungere una "x" di fianco alla spesa ricorrente presa in considerazione. Cosicché, al prossimo lancio della macro, quella spesa non viene più presa in considerazione.

                          Provo a girarti un mio esempio. Vedi se ho capito.

                          Tieni presente che ho eliminato il rigo 2 (che risultava nascosto) nel foglio "2025" perché credo che non abbia alcuna utilità.

                          In oltre per far sì che tutto funzioni, devi riportare esattamente le stesse parole nei fogli "CATEGORIE" e "Spese Ricorrenti". Cioè la scritta "Internet casa" deve essere uguale in entrambi i fogli...e non che in uno c'è scritto "Internet casa" e nell'altro "Internet"

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

                          Semiuccio
                          Partecipante
                            1 pt

                            Meraviglioso Alex !!!!! Mi hai compreso alla perfezione !!!! E' proprio quello che mi serviva. Grazie ancora.

                            Ho cercato di capire il tuo codice (per me è opera d'arte visto il mio livello) e mi è tutto chiaro. Una sola cosa non ho capito bene, anche se ho capito cosa fa, ma mi riprometto di approfondire tutto il codice.

                            Grazie tante ancora.

                            #51093 Score: 0 | Risposta

                            alexps81
                            Moderatore
                              58 pts

                              Bene, sono contento che abbiamo risolto.

                               

                              Semiuccio ha scritto:

                              mi riprometto di approfondire tutto il codice

                              Per facilitare la comprensione ti ho messo un commento per ogni azione:

                              Option Explicit
                              
                              Sub speseRicorrenti()
                                  Dim c As Range, f As Range
                                  Dim ur As Long, newRow As Long
                                  Dim categoria As String
                                  
                                  '--qui si capisce...giusto?
                                  If MsgBox("Sei sicuro di voler aggiornare i dati con le ""Spese Ricorrenti""?", vbQuestion + vbYesNo, "Spese ricorrenti") = vbNo Then Exit Sub
                                  
                                  '--rileva il numero della riga compilata nel foglio "Spese Ricorrenti"
                                  ur = Sheets("Spese Ricorrenti").Cells(Rows.Count, "A").End(xlUp).Row
                                  
                                  '--esegue un ciclo su ogni cella del foglio "Spese Ricorrenti" che va dalla cella A2 all'ultima riga compilata (ur)
                                  For Each c In Sheets("Spese Ricorrenti").Range("A2:A" & ur)
                                      '--se la data presente nella cella iterata è inferiore o uguale alla data attuale e _
                                         nella colonna "D" (Registrata) non è presente la "x" allora...
                                      If CLng(c) <= CLng(Date) And c.Offset(, 3) <> "x" Then
                                          '--ricava il primo rigo disponibile nel foglio "2025" (quindi ultimo rigo compilato + 1)
                                          newRow = Sheets("2025").Cells(Rows.Count, "A").End(xlUp).Row + 1
                                          '--formatta in data la cella in colonna "A"
                                          Sheets("2025").Range("A" & newRow).NumberFormat = "m/d/yyyy"
                                          '--formatta in valuta la cella in colonna "D"
                                          Sheets("2025").Range("D" & newRow).NumberFormat = "#,##0.00 $"
                                          '--cerca la "spesa" nel foglio "Categorie"
                                          Set f = Sheets("CATEGORIE").Cells.Find(What:=c.Offset(, 1), LookIn:=xlValues, LookAt:=xlWhole)
                                          '--se non è nulla...ovvero se l'ha trovata...
                                          If Not f Is Nothing Then
                                              '--assegna alla variabile 'categoria' il TIPO di categoria definito nel rigo 1 del foglio "Categorie". _
                                                 Preleva quindi prendendo come coordinare rigo 1 e colonna trovata (f.Column)
                                              categoria = Sheets("CATEGORIE").Cells(1, f.Column).Value
                                          End If
                                          
                                          Sheets("2025").Range("A" & newRow).Value = c.Value '--assegna alla cella A e nuovo rigo la data ciclata
                                          Sheets("2025").Range("B" & newRow).Value = categoria '--assegna alla cella B e nuovo rigo la 'categoria'
                                          Sheets("2025").Range("C" & newRow).Value = c.Offset(, 1).Value '--assegna alla cella B e nuovo rigo la spesa ciclata
                                          Sheets("2025").Range("D" & newRow).Value = c.Offset(, 2).Value '--assegna alla cella C e nuovo rigo l'importo ciclato
                                          
                                          c.Offset(, 3).Value = "x" '--segna una 'x' nella cella D ciclata
                                      End If
                                  Next c
                                  
                                  MsgBox "Fatto!"
                              End Sub
                              
                              #51097 Score: 0 | Risposta

                              Semiuccio
                              Partecipante
                                1 pt

                                alexps81 ha scritto:

                                Bene, sono contento che abbiamo risolto.

                                Grazie mille per l'aiuto e per il codice commentato.

                              Login Registrati
                              Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
                              Rispondi a: Automatizzare inserimento spese ricorrenti in bilancio familiare
                              Gli allegati sono permessi solo ad utenti REGISTRATI
                              Le tue informazioni: