Calcolare provvigioni differenziate con il Vba. (03/04/03) Utilizzo di una Funzione Utente per il calcolo (vedi in questa sezione: Funzioni Utente in vba). Rifacendomi al problema esposto nella sezione Formule, articolo: "Condizioni SE a raffica", vorrei presentare una soluzione a quel problema, che comunque riporto di seguito, realizzata mediante l'uso di istruzioni in vba. Dovendo realizzare una routine che si presume interessare molteplici celle (visto che un calcolo provvigionale su importi fattura in genere lo si esegue su un riepilogo fatture generale o per agente) ho ritenuto più sfruttabile utilizzare una Funzione personalizzata. In questo modo sarà possibile scegliere le celle destinate a contenere detta funzione che sarà usata come si usa una tradizionale Funzione di un foglio di lavoro, facendo precedere al nome della funzione il segno = e indicando i riferimenti alle celle che formeranno gli "argomenti" della funzione. Ma riassumiamo il problema:
"un rappresentante prende delle provvigioni in % Ci troviamo quindi con
Abbiamo quindi a che fare con una raffica di SE ( If ). Per sveltire l'esecuzione del codice, che dovrebbe leggere tutte le condizioni ( If ) immesse, facciamo uso dell'istruzione Select Case che rende la lettura delle condizioni più veloce, affidandogli il compito di decidere se lo sconto sarà inferiore o uguale a 5% oppure maggiore, ed annidare le istruzioni If all'interno dei Case. Come già visto nella pagina "Funzioni Utente in vba", assegneremo un nome alla funzione, seguito, tra parentesi, dai nomi che rappresentano gli argomenti della funzione. Per chi ha un minimo di conoscenza in vba, non sarà difficile "leggere" le istruzioni impiegate; si basano su valori assegnati alle provvigioni, e su variabili (uso lettere dell'alfabeto) che raccolgono le varie condizioni. Non ho previsto argomenti "legati" alle provvigioni in quanto in genere, una volta stabilite le provvigioni, queste restano tali, e allora tanto vale inserirle nella funzione ( la funzione con meno argomenti risulta più "leggera"). Questa la funzione:
Gli argomenti cifra e sconto non saranno altro che il riferimento alla cella che contiene l'importo fattura il primo, e una cella che destineremo a contenere il valore dello sconto concesso, il secondo. Questa funzione potrà essere inserita in una cella, esempio la C1, visto che nel problema su esposto si citava la A1 e la B1, e sarà : =Provv(A1;B1) ed in C1 avremo il risultato della formula. Se l'elenco fosse su più righe, sarà sufficiente usare il "trascinamento" per copiare la formula dalla C1 nelle celle sottostanti, ed il bravo Excel provvederà ad aggiornare i riferimenti alle celle di pertinenza. Se poi si volesse, nel caso di elenchi lunghi, affidarsi ad una macro per inserire la funzione nelle celle previste, sarà possibile richiamare la funzione assegnandogli gli argomenti, come faremmo con qualsiasi altra funzione. Questo un esempio: elenco importo fatture nella colonna A, nella B gli sconti concessi, a partire dalla riga 2. Nella colonna C vorremo il conteggio provvigioni. la macro:
non ho inserito un controllo se l'importo fattura o lo sconto non sono presenti, perchè in caso manchino dati il risultato della funzione sarà zero. Due precisazioni: nel campo "sconto" (colonna B) dovrà essere inserito lo sconto in formato numero e NON percentuale ( 5 e non 5%); i campi importo fattura (colonna A) e provvigioni (colonna C) dovranno avere il formato celle a numero con 2 decimali.
Buon lavoro. |