[Pagamento Quote] UNA SOLUZIONE CON VBA

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
dan.71
00venerdì 2 dicembre 2016 16:12
Ciao a tutti, immagino serva il VBA (non so usarlo bene) per risolvere il mio problema perché con le formule non sono riuscito a venirne a capo.
Premetto che in allegato c'è il file di esempio (excel 2007).
Ecco il mio problema.
Ho un file nel quale ho una serie di fogli, uno per ogni allievo; ogni allievo effettua ogni mese il pagamento della propria quota (iscrizione e retta mensile) e viene registrata anche la modalità di pagamento; il file contiene anche dei fogli che rappresentano le schede incassi del mese, nella colonna A c'è la data del pagamento, dalla colonna B fino alla R sono invece riportati i pagamenti giornalieri perché ho bisogno di evidenziare il fatto che due o più pagamenti, avvenuti lo stesso giorno, possono essere stati effettuati con modalità diverse (la scheda incassi riporta una legenda dove associo un colore diverso per ogni modalità di pagamento prevista).
Cosa vorrei:
1) che nelle schede incassi venissero riportati tutti i pagamenti effettuati dagli allievi in quella data e per quell'importo, e questa è la mia priorità;
2) che se il pagamento è avvenuto in contanti, venga evidenziato automaticamente con il colore di cui alla legenda riportata.
Nel file di esempio - che per praticità riporta due sole schede allievo e due sole schede incassi dei mesi di gennaio e febbraio - ho riportato gli esempi come se sia accaduto ciò che vorrei che accadesse, ma è pura e semplice copia dei dati e formattazione.
Spero di essere stato chiaro.
Grazie a tutti voi.
alfrimpa
00venerdì 2 dicembre 2016 16:48
Ciao Dan

Sto incominciando a fare delle prove sul tuo file.

Mi occorre un po' di tempo.
alfrimpa
00venerdì 2 dicembre 2016 18:01
Ciao Dan

Ti riallego il tuo file con la macro che vedi sotto inserita.

vb
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim uc As Long
Dim nr As Long
Dim colore As Integer
Dim fgl As String
On Error Resume Next
If IsNumeric(Sh.Name) Then
    Exit Sub
    Else
    If Not Intersect(Target, Sh.Range("K6:K17")) Is Nothing Then
        fgl = CStr(Month(Target.Offset(0, -9)))
            Select Case Target.Offset(0, -2).Value
                Case Is = "MPS A "
                    colore = 4
                Case Is = "MPS B"
                    colore = 6
                Case Is = "SF P"
                    colore = 15
                Case Is = "ASSEGNO"
                    colore = 24
                Case Is = "CONTANTI"
                    colore = 55
            End Select
        nr = Day(Target.Offset(0, -9) + 3)
        uc = Worksheets(fgl).Cells(nr, Columns.Count).End(xlToLeft).Column
        Worksheets(fgl).Cells(nr, uc + 1).Value = Target.Value
        Worksheets(fgl).Cells(nr, uc + 1).Interior.ColorIndex = colore
    End If
End If
End Sub


Ti ho, per esigenze di "programmazione" modificato un po' la struttura dei fogli relativi ai nominativi e ti ho inserito i fogli per tutti i 12 mesi dell'anno nominandoli con il numero del mese.

La macro viene eseguita ogni qualvolta vai a modificare il range K6:K17 dei fogli relativi ai nominativi.

Quindi se ne vuoi aggiungere altri basta che duplichi il foglio di un nominativo (non cambiandone la struttura) modificandone solo il nome e la macro funzionerà anche sul nuovo foglio.

Prova un po' il file e fai sapere.
dan.71
00venerdì 2 dicembre 2016 20:01
UNA SOLUZIONE CON VBA
Grazie....spettacolare
Proverò a studiare il tuo codice, grazie ancora e saluti
dan.71
00venerdì 2 dicembre 2016 23:52
UNA SOLUZIONE CON VBA
Dopo averlo testato, non va tutto bene.
Ad esempio, se registro nella scheda allievo un pagamento in data 3 marzo 2017, e poi lo correggo al 4 marzo perchè mi accorgo di aver sbagliato, e vado a vedere la scheda incassi del relativo mese, mi accorgo che mi viene riportato comunque il pagamento di giorno 3 (come se restasse memorizzato), e mi appare insieme a quello di giorno 4, come è possibile vedere dal nuovo file di esempio che allego.
Cosa fare?
Grazie saluti
alfrimpa
00martedì 6 dicembre 2016 11:33
Ciao Dan

Innanzitutto mi scuso per la non tempestiva risposta.

Devo dire che subito dopo che ti ho allegato il precedente file ho pensato: e se uno sbaglia che succede? Un casino [SM=g27828]

Il codice l'ho scritto solo sulla base del file che tu hai allegato e su quanto hai detto.

Mi rendo conto però che la struttura che hai proposto non è molto rispondente a tutte le necessità (come il caso dell'errore.

Se vuoi (e per te non è un problema e dai un po' di tempo) proverei a farti una nuova proposta (ma non è detto che ci riesca).

Fammi sapere se sei d'accordo.
dan.71
00martedì 6 dicembre 2016 15:44
Certo che sono d'accordo. Ti ringrazio per la tua disponibilità. Aspetto tue. Saluti
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 13:02.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com