› Excel e gli applicativi Microsoft Office › Tabella ripeilogativa di pagamenti presenti in un altro file excel
-
AutoreArticoli
-
Salve a tutti,
ho bisogno del vostro aiuto per creare una tabella riepilogativa (file Riepilogo Importo Carta da ricevere) che deve prendere le informazioni presenti nei vari files dell'anno (ho allegato di esempio solo un mese 01-Gennaio) utile a sapere, scegliendo le informazioni di ricerca qual è il valore da ricevere.
Il file 01-Gennaio è composto da vari fogli che rappresentano i 30 giorni del mese e in ciascun giorno sono inseriti i pagamenti di ciascun tavolo suddivisi per importo, il codice tipo di carta usata ed é presente a destra un riepilogo totale per ciascun tipo di carta con la relativa data per ricevere importo netto considerando se è credito a 30 giorni, se è debito a 1 giorno (per fare il calcolo della data ho usato una tabella trovata in rete che fa il calcolo del primo giorno utile di pagamento).
Il file Riepilogo Importo Carta da ricevere deve acquisire dai files mesi per ciascun giorno:
- data movimento del giorno (presente nel riepilogo a destra del file del mese)
- tipo operatore delle carte di credito (casella a discesa)
- tipo di carta (Visa, MasterCard, etc.) con la funzione di convertire il codice presente nel file in tipo di carta
- importo lordo ricevuto
- % tassa applicata dalla carta (presente nel riepilogo a destra)
- % di anticipazione credito (presente nel riepilogo a destra)
- importo netto (lordo - %tassa applicata - %anticipazione)
- data di ricevimento importo netto (secondo il calcolo presente riepilogo a destra del file mese)
- la possibilità di fare ricerca per periodo, per tipo di carta, etc.
NB: capita che per lo stesso tavolo ci sono pagamenti diversi con varie carte, quindi la possibilità di creare nella tabella varie righe per ciascun pagamento effettuato.
Spero di essere stato chiaro nella descrizione ma sono a vostra disposizione per ulteriori informazioni.
Vi ringrazio per l'eventuale aiuto.
Windows 10 - Excel 2021
Allegati:
You must be logged in to view attached files.Perchè il files 01-Gennaio non è scritto in Italiano?
Credo che: DATA MOVIMENTO = sia nomefoglio-gennaio, mà di quale anno?
Per tutte le altre "voci" non sò dove trovarle, pertanto scrivi da quali colonna prelevare i dati?
DATA MOVIMENTO =colonna?
OPERAT. =colonna?
TIPO CARTA =colonna?
IMPORTO LORDO =colonna?
% TASSA APPLICATA =colonna?
% ANTICIP. =colonna?
IMPORTO NETTO =colonna?
DATA RICEV. =colonna?
Oppure riallega il files Riepilogo con inserito a mano i dati del giorno 1-2-3Ciao @Raffaele23, grazie per la risposta.
Perchè il files 01-Gennaio non è scritto in Italiano? io mi trovo all'estero per questo vedi alcune scritte in portoghese, ma ti ho tradotto il file 01-Gennaio in italiano e lo allego di nuovo.
Credo che: DATA MOVIMENTO = sia nomefoglio-gennaio, mà di quale anno? considera 2024, io poi faccio gli anni precedenti
Per tutte le altre "voci" non sò dove trovarle, pertanto scrivi da quali colonna prelevare i dati? le trovi nel file 01-Gennaio nelle seguenti celle
DATA MOVIMENTO =colonna? CELLA AA11
OPERAT. =colonna? CELLA U12
TIPO CARTA =colonna? sono i codici di riferimento di ciascun tipo di carta. Per esempio il giorno 1 nel tavolo 20 ho il codice 8 (cella C3) che si riferisce a VISA CREDITO, il codice 9 (cella E3) del pagamento successivo é MAESTRO e cosí via per tutti i pagamenti degli altri tavoli.
IMPORTO LORDO =colonna? es. tavolo 20 trovi nella cella D3 il primo importo e nella cella F3 l'altro importo. Di conseguenza bisogna generare due righe differenti nel riepilogo essendo due pagamenti diversi.
% TASSA APPLICATA =colonna? dipende dal tipo di carta - celle da X3 a X20
% ANTICIP. =colonna? celle da Y13 a Y17
IMPORTO NETTO =colonna? bisogna fare la formula (IMPORTO LORDO - %TASSA APPLICATA - %ANTICIP.)
DATA RICEV. =colonna? bisogna fare la formula come ho fatto nelle celle da AA13 a AA20 usando il file Feriados Dias Uteis) che praticamente ti cerca il primo giorno lavorativo successivo utile considerando i 30 giorni se é CREDITO e 1 giorno se é DEBITO.Ti ho inserito nel file "Riepilogo Importo Carta da ricevere" come deve apparire.
Allegati:
You must be logged in to view attached files.Domani ci provo. Alcune Domande...(tutti gli altri mesi sono uguali?)
Pertanto Tavolo20 = 2 righe (2 carte differenti), Tavolo27 = 2 righe (1 somma D6+F6) + 2 riga per carta differente. Euro 100 in col "O"6 non si deve considerare? Riguardo TASSA APPLICATA-ANTICIP-DATA RICEV. mi riferirò ai dati presenti in U12:AA21 in base al numero di carta. Giusto OK?
Mettimi il rispettivo numero delle Carte
VISA CREDITO
MC CREDITO
ELO CREDITO
DINERS
AMEX
8 VISA DEBITO
9 MAESTRO
ELO DEBITO
PIXPs. Posso eliminare riga1,2,3,9,10,11,12,13 in Riepilogo?
Pps. Questo Riepilogo dovrà contenere una sola annata intera oppure dovrà contenere diverse annate?.(tutti gli altri mesi sono uguali?) SI
Pertanto Tavolo20 = 2 righe (2 carte differenti), due righe differenti
Tavolo27 = 2 righe (1 somma D6+F6) + 2 riga per carta differente. sono 3 righe perché sono state usate 3 transazioni di carte differenti. Tavolo 30 sono 4 righe differenti perché sono state usate 4 transazioni di carte
Euro 100 (magari fossero euro
, moneta di qua R$ real brasiliano, dividi gli importi per 5,5 e avrai gli importi in euro) in col "O"6 non si deve considerare? NO il contante non mi interessa nel Riepilogo.
Riguardo TASSA APPLICATA-ANTICIP-DATA RICEV. mi riferirò ai dati presenti in U12:AA21 in base al numero di carta. Giusto OK? SI
Mettimi il rispettivo numero delle Carte
VISA CREDITO - 3
MC CREDITO - 4
ELO CREDITO - 5
DINERS - 11
AMEX - 12
VISA DEBITO - 8
MAESTRO - 9
ELO DEBITO - 10
PIX - 15 (adesso é gratuito, ma potrebbero esserci in futuro costi di addebito). Ho letto che stanno pensando di farlo anche in Italia. (PIX = pagamento instantaneo)Ps. Posso eliminare riga1,2,3,9,10,11,12,13 in Riepilogo? il file Riepilogo é un esempio, puoi crearlo come meglio credi
Pps. Questo Riepilogo dovrà contenere una sola annata intera oppure dovrà contenere diverse annate? vorrei iniziare dal 2023 in poi. Ma se crei il 2024 io poi faccio il 2023 e gli anni futuri, cosí ho sotto controllo la situazione di tutti gli anni.Obiettivo principale di questo Riepilogo é controllare se l'Operatore (GetNet) mi trasferisce gli importi esatti delle transazioni fatte e anche avere una previsione di quanto incasserò nel periodo scelto. Ho inserito la cella Operatore perché oggi lavoro con GetNet ma se in futuro si propone un altro operatore che offre tassi migliori cambio Gestore. Per questo motivo i codici delle carte non hanno una numerazione progressiva, perché prima avevo un altro Operatore (Cielo) con codici diversi.
Ho lavorato con 01-Gennaio-Esempio-1.xlsx, l'altro
01-Gennaio.xlsx è senza OPERATORE e i nomi delle carte sono differentiCreato il codice per un solo mese, provalo e dimmi se ci sono problematiche (se Ok, farò per un'annata intera).
Allegati:
You must be logged in to view attached files.ho aggiornato il file Gennaio, ho inserito una casella a discesa sulla cella Operatore, così attualizza i tassi e la quantità di giorni per le carte di credito in base all'operatore scelto.
Il calcolo dell'importo netto non é corretto, non sta togliendo la percentuale della tassa. Nel caso di debito ha sottratto 1 centesimo solo invece che il 0,69% stessa cosa nel credito non ha sottratto 1,69%.
Allegati:
You must be logged in to view attached files.Pertanto l'importo netto =IMPORTO LORDO - (IMPORTO LORDO * TASSA APPLICATA)
Adesso c'è pure la colonna = "DIAS" (devo farci un calcolo).Quale?DIAS significa GIORNI che sarebbero il numero di giorni per pagare (Credito a 30gg - Debito a 1gg)
il calcolo dell'importo netto é IMPORTO LORDO - %TASSA - %ANTICIPAZIONE DEL CREDITO (nel caso scegliessi questa opzione, se opto per l'anticipazione il numero di giorni passa da 30 al primo giorno utile di pagamento) ma il calcolo già c’è per questa opzione.
Ho notato un errore nel file nuovo Gennaio che ti ho allegato nel precedente post, nel fare copia e incolla ha riportato come data di movimento in tutti i giorni 01/01 invece che avere date differenti. Questo nel fare il database ti darà per tutti i movimenti data 01/01. Ti allego il file corretto.
Allegati:
You must be logged in to view attached files.>>>ma il calcolo già c’è per questa opzione.
Non capisco cosa intendi e dove sia il calcolo?>>>il calcolo dell'importo netto é IMPORTO LORDO - %TASSA - %IMPORTO LORDO - (IMPORTO LORDO * TASSA APPLICATA) DEL CREDITO
L'allegato in post #45361 lo faceva e hai detto che era errato
In Riepilogo-Importo-Carta-da-ricevere-1.xlsx hai scritto cella G14 =D15-(D15*E15) =298,43 che è esattamente quello che mi risulta nell'allegato
Importo netto =IMPORTO LORDO - ((IMPORTO LORDO * TASSA APPLICATA)+ANTICIPAZIONE)Ps. Meglio che usi solo Sub Importa_Mese, è presente pure Sub Importa_annata ma mettere i files in una cartella e avviare il VBa non gestisci bene tutti gli errori. Quando importi un mese (controlli il tutto) e poi fai altro mese
Allegati:
You must be logged in to view attached files.nel primo file che mi avevi dato stava calcolando errato, ma adesso sta ok
nel foglio ricerca mi sta dando errore nella cella IMPORTO NETTO, manca il riferimento alla cella, ti ho allegato l'immagine.
Solo per capire, dopo che ho inserito il mese nel D_Base, quale bottone di quelli che hai creato devo premere per importare nel foglio di Ricerca? uno specifico o uno qualsiasi?
Dopodiché per filtrare i dati, devo inserire le date Dal - AL che sta al lato destro? dove sta scritto "non funziona".
Ho una variazione da chiederti, invece di aspettare la fine del mese, è possibile farlo l'inserimento dei dati nel D_Base giornalmente? Perché cosi come è impostato non riesco a fare il controllo degli importi da ricevere durante il mese, lo posso fare solo a fine mese. Alternativa ancora migliore, è possibile farlo in automatico? Tutte le volte che inserisco i pagamenti di un tavolo di un determinato giorno, automaticamente registra nel D_Base.
Allegati:
You must be logged in to view attached files.In Ricerca metti in cella G2 =SUBTOTALE(9;INDIRETTO("G5:G"&CONTA.VALORI(I:I)+3))
Ps. Vai sul Bottone "CARTA" (mouse destro) ed assegna la macro Sub Carta()>>> Alternativa ancora migliore<<< Ci devo pensare sopra
>>>Solo per capire...
Nel foglio Ricerca devi solo compilare una delle celle "colorate giallo o arancione" e poi premere il bottone relativo.
Ex compilo B2 e premo Operatore, compilo J2 e premo AnnoNel VBA, Modulo2 cancella Sub DAL_AL() e metti questa
Sub DAL_AL() Dim Ur As Long, Data1 As Long, Data2 As Long Data1 = Range("K2") Data2 = Range("L2") Ur = Range("A" & Rows.Count).End(xlUp).Row If Ur > 4 Then Range("A5:J" & Ur).Clear If Sheets("Ricerca").FilterMode = True Then Sheets("Ricerca").ShowAllData If Range("K2") = "" Or Range("L2") = "" Then MsgBox "Scegliere una DATA in cella K2 + altra DATA in cella L2" Ur = Sheets("D_Base").Range("A" & Rows.Count).End(xlUp).Row Sheets("D_Base").Range("A1:J" & Ur).Copy Destination:=Worksheets("Ricerca").Range("A4") Sheets("Ricerca").Range("A4:J4").AutoFilter Sheets("Ricerca").Range("$A$4:$J$" & Ur).AutoFilter Field:=1, Criteria1:=">=" & Data1, Operator:=xlAnd, Criteria2:="<=" & Data2 End Sub
Se hai scadenze a 30 giorni, cosa serve avere un riepilogo oggi?
Secondo me bisogna usare due files Mese+Riepilogo (non saprei cosa fare d'altro)
Riepilogo, ogni mese importi i dati, qui avrai il resoconto totale dei anni passati e futuri.
Mese, ho aggiunto due fogli (D_base + Ricerca) ed ogni giorno puoi aggiornare il foglio D_Base. NB In "Ricerca" ho aggiunto la Tabella dei festivi, questa funziona appena metti una Data in foglio-01 cella AB11. Secondo me, nel foglio-01 in cella AB13 la formula per il primo giorno utile (nel caso non vada bene usa quella in AC13, idem per cella AB18-AC18). Da complettare tutti gli altri giorni del mese. Adesso Feriados-Ano-calcolo-dia-util.xlsx non serve piùAllegati:
You must be logged in to view attached files.Se hai scadenze a 30 giorni, cosa serve avere un riepilogo oggi? Mi serve il giornaliero per fare il controllo delle CARTE DI DEBITO che sono a 1 giorno
Adesso Feriados-Ano-calcolo-dia-util.xlsx non serve più Stavo usando questa tabella perché ha la possibilità di inserire le Feste Comunali/Patronali che nel tuo calcolo credo non sono comprese. Considerando che le Feste Comunali sono differenti per ciascuna città. Devo verificare se per gli Operatori delle Carte di Credito/Banche, la festa comunale é considerata per loro giorno utile o festivo.
Do un'occhiata a questi nuovi files.
Ti ringrazio per la tua disponibilità.
>>>Stavo usando questa tabella perché ha la possibilità di inserire le Feste Comunali/Patronali che nel tuo calcolo credo non sono comprese
Sei sicuro, ci sono 8 celle in Ricerca Q19:Q26 prova qualsiasi data...
=DATA(anno;mese;giorno) Naturalmente ANNO è in $Q$4@raffaele53 quando puoi, per favore mi correggi questa macro per inserire nel D_Base il singolo giorno del mese. Cosí come sta scritta non sta funzionando. Grazie
`Sub Importa_Giorno() Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("D_Base") Dim Sh As Worksheet, wK As Workbook Dim Ur As Long, Ur1 As Long, Rr As Long, X As Long, Y As Long, aAnno As Integer Dim fPath As String, sName As String, sName2 As String, Rg As Object, sFile As FileDialog, cCart() As Variant, Scart As String Application.ScreenUpdating = False Application.DisplayAlerts = False ' Array contenente le categorie di carta cCart = Array("0-nd", "1-nd", "2-nd", "VISA CREDITO", "MC CREDITO", "ELO CREDITO", "6-nd", "7-nd", "VISA DEBITO", "MAESTRO", "ELO DEBITO", "DINERS", "AMEX", "13-nd", "14-nd", "PIX") ' Ultima riga della tabella di destinazione per i dati importati Ur = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 ' Seleziona il file da importare sName = Application.GetOpenFilename("File Excel (*.xls*), *.xls*") If sName <> "Falso" Then Workbooks.Open (sName) sName2 = ActiveWorkbook.Name Set wK = Workbooks(sName2) ' Ciclo su ogni foglio del file importato For Each Sh In wK.Worksheets ' Trova l'ultima riga con dati nella colonna B del foglio corrente Ur1 = Sh.Range("B" & Rows.Count).End(xlUp).Row ' Ottiene l'anno dalla cella AB11 del foglio corrente aAnno = Year(Sh.Range("AB11").Value) ' Ciclo su ogni riga del foglio corrente For X = 3 To Ur1 ' Ciclo su ogni colonna dal 3 al 13 (a passi di 2) del foglio corrente For Y = 3 To 13 Step 2 ' Se la cella corrente è vuota, esci dal ciclo interno If Sh.Cells(X, Y) = "" Then Exit For ' Scrivi i dati nella tabella di destinazione ws.Cells(Ur, 1) = Sh.Range("AB11").Value ws.Cells(Ur, 2) = Sh.Range("U12").Value Scart = cCart(Sh.Cells(X, Y)) Set Rg = Sh.Range("U13:U21").Find(Scart, LookIn:=xlValues, LookAt:=xlWhole) If Rg Is Nothing Then ws.Cells(Ur, 3) = Scart Else Rr = Rg.Row ws.Cells(Ur, 3) = Scart ws.Cells(Ur, 4) = Sh.Cells(X, Y + 1) ws.Cells(Ur, 5) = Sh.Range("X" & Rr) ws.Cells(Ur, 6) = 0 + Sh.Range("Z" & Rr) ws.Cells(Ur, 7) = ws.Cells(Ur, 4) - ((ws.Cells(Ur, 4) * ws.Cells(Ur, 5)) + ws.Cells(Ur, 6)) ws.Cells(Ur, 8) = Sh.Range("AB" & Rr).Value ws.Cells(Ur, 9) = Ur - 1 ws.Cells(Ur, 10) = aAnno End If Ur = Ur + 1 Next Y Next X Next Sh wK.Close False End If ' Pulizia delle variabili e ripristino delle impostazioni dell'applicazione Set Rg = Nothing Set ws = Nothing Set Sh = Nothing Set wK = Nothing Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "Fatto" End Sub`
Perchè non funziona (a me sembra giusto), forse Vuoi importare i dati di UN solo giorno? Non sarebbe ideale perchè soggetto ad vari errori Tuoi (salti la giornata oppure due volte nello stesso giorno). Come gìà scritto, onestamente non saprei come fare (ci vorrebbe un codice univoco). Ci proverò
Ho modificato il codice, adesso crea un codice univoco (spero sia funzionale). Pertanto puoi aggiornare quando Vuoi, il VBA controlla se è già presente (non importa) e in caso contrario lo importa
Option Explicit Sub Importa_Giorno() Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("D_Base") Dim Sh As Worksheet, wK As Workbook Dim Ur As Long, Ur1 As Long, Rr As Long, X As Long, Y As Long, aAnno As Integer Dim fPath As String, sName As String, sName2 As String, Scart As String, Sid As String Dim Rg1 As Object, Rg2 As Object, sFile As FileDialog, cCart() As Variant Application.ScreenUpdating = False Application.DisplayAlerts = False ' Array contenente le categorie di carta cCart = Array("0-nd", "1-nd", "2-nd", "VISA CREDITO", "MC CREDITO", "ELO CREDITO", "6-nd", "7-nd", "VISA DEBITO", "MAESTRO", "ELO DEBITO", "DINERS", "AMEX", "13-nd", "14-nd", "PIX") ' Ultima riga della tabella di destinazione per i dati importati Ur = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 ' Seleziona il file da importare sName = Application.GetOpenFilename("File Excel (*.xls*), *.xls*") If sName <> "Falso" Then Workbooks.Open (sName) sName2 = ActiveWorkbook.Name Set wK = Workbooks(sName2) ' Ciclo su ogni foglio del file importato For Each Sh In wK.Worksheets ' Trova l'ultima riga con dati nella colonna B del foglio corrente Ur1 = Sh.Range("B" & Rows.Count).End(xlUp).Row ' Ottiene l'anno dalla cella AB11 del foglio corrente aAnno = Year(Sh.Range("AB11").Value) ' Ciclo su ogni riga del foglio corrente For X = 3 To Ur1 ' Ciclo su ogni colonna dal 3 al 13 (a passi di 2) del foglio corrente For Y = 3 To 13 Step 2 Sid = Sh.Range("AB11").Value & "_" & CDbl(Sh.Name) & "_" & X & "_" & Y Set Rg1 = ws.Columns("I:I").Find(Sid, LookIn:=xlValues, LookAt:=xlWhole) If Rg1 Is Nothing Then ' Se la cella corrente è vuota, esci dal ciclo interno If Sh.Cells(X, Y) = "" Then Exit For ' Scrivi i dati nella tabella di destinazione ws.Cells(Ur, 1) = Sh.Range("AB11").Value ws.Cells(Ur, 2) = Sh.Range("U12").Value Scart = cCart(Sh.Cells(X, Y)) Set Rg2 = Sh.Range("U13:U21").Find(Scart, LookIn:=xlValues, LookAt:=xlWhole) If Rg2 Is Nothing Then ws.Cells(Ur, 3) = Scart Else Rr = Rg2.Row ws.Cells(Ur, 3) = Scart ws.Cells(Ur, 4) = Sh.Cells(X, Y + 1) ws.Cells(Ur, 5) = Sh.Range("X" & Rr) ws.Cells(Ur, 6) = 0 + Sh.Range("Z" & Rr) ws.Cells(Ur, 7) = ws.Cells(Ur, 4) - ((ws.Cells(Ur, 4) * ws.Cells(Ur, 5)) + ws.Cells(Ur, 6)) ws.Cells(Ur, 8) = Sh.Range("AB" & Rr).Value ws.Cells(Ur, 9) = Sid ws.Cells(Ur, 10) = aAnno End If End If Ur = Ur + 1 Next Y Next X Next Sh wK.Close False End If ' Pulizia delle variabili e ripristino delle impostazioni dell'applicazione Set Rg1 = Nothing Set Rg2 = Nothing Set ws = Nothing Set Sh = Nothing Set wK = Nothing Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "Fatto" End Sub
Ciao @raffaele53
la parte delle Carte di Credito funziona perfettamente, adesso bisogna risolvere la questione delle Debito che sono a 1 giorno.
Stavo pensando e se creiamo un altro D_Base (D_Base1) nel file solo per le Debito con la macro "Inserisci Giorno", così li gestisco le date a 1 giorno e posso sapere quali sono i valori che devo ricevere, mentre nel D_Base già esistente lasciamo la macro "Inserisci Mese" per non avere così problemi di duplicazione di giorni e di transazioni già inserite.
Ti allego il file che ho preparato.
Allegati:
You must be logged in to view attached files.Non ho capito nulla, spiegati meglio. L'ultimo vba non va bene?
provo a spiegarmi meglio
Modificare la macro Importa Giorno nel file che ti ho allegato:
1 - cambiare il nome database da D_Base per D_Base1 - già fatto!
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("D_Base1")
2 - considerare solo le Carte di Debito (togliere le Carte di Credito e Pix):
' Array contenente le categorie di carta
cCart = Array("0-nd", "1-nd", "2-nd", "VISA CREDITO", "MC CREDITO", "ELO CREDITO", "6-nd", "7-nd", "VISA DEBITO", "MAESTRO", "ELO DEBITO", "DINERS", "AMEX", "13-nd", "14-nd", "PIX")codice nel file mese: 8-Visa Debito 9-Maestro 10-Elo Debito
3 - oltre a selezionare il file mese da importare, avere la possibilità di scegliere il giorno da inserire, così come è impostato adesso prende il mese intero:
' Seleziona il file da importare
sName = Application.GetOpenFilename("File Excel (*.xls*), *.xls*")
If sName <> "Falso" Then
Workbooks.Open (sName)
sName2 = ActiveWorkbook.Name
Set wK = Workbooks(sName2)4 - togliere la colonna %Anticipazione (nelle Carte di Debito non esiste).
ws.Cells(Ur, 6) = 0 + Sh.Range("Z" & Rr)Allegati:
You must be logged in to view attached files.L'ho scritto nel post #45526 "sarebbe soggetto ad una gestione con diversi errori". Questo importa un solo giorno e con questo credo spero d'aver finito.
Ps. Mettere Tabelle manda in tilt la ricerca dell'ultima riga, nel caso decidi di tenere la Tabella (abilita la riga UR relativa).
Allegati:
You must be logged in to view attached files. -
AutoreArticoli