|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
Salve a tutti, sto creando una struttura in excel per fare fatturazione, mi serviva il vostro aiuto per creare delle macro che consentano di cambiare automaticamente il numero progressivo per ogni nuova fattura e che mi facesse il riepilogo delle fatture emmesse spero che mi aiutate.Grazie anticipatamente.
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
esistono già un mare di fatture preimpostate in excel (guarda ad esempio fra i modelli da scaricare nel sito di microsoft "modelli Office") oppure tramite google "Fatture Excel" ne trovi tanti e poi sbizzarti come vuoi. saluti Andrea
|
|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
Si questo lo so però volevo imparare a fare questo tipo di macro, comunque ho dato un'occhiata su google e non ho trovato quello che cercavo, grazie comunque per la tua disponibilità
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
Ti posso dare un piccolo spunto da cui partire: supponiamo che lo schema della fattura in un foglio chiamato Fattura sia così organizzato: in E3=Ragione sociale - F9=Nr.fattura - A10=data fattura - E23=imponibile -E24=Iva - E25 = Tot fattura. Nel foglio Riepilogo con le intestazioni in celle da A1 a F1 con il seguente ordine: Nr.Fattura/ Data Fattura/ Ragione sociale/ Imponibile/ Iva/ Totale fattura inserire sul foglio Fattura un pulsante a cui associare la seguente macro:(questa macro controlla l'ultimo numero utilizzato per le fatture emesse che trova nel foglio riepilogo, l'aumenta di 1 e lo scrive nel campo della fattura che si sta generando) Sub numera() With ActiveSheet .Range("f9").Value = Application.WorksheetFunction.Max(Worksheets("riepilogo").Range("a2:a100")) + 1 End With End Sub inserire sul foglio Fattura un ulteriore pulsante a cui associare la macro che segue:(questa macro accoda al foglio Riepilogo la fattura appena emessa) Sub registra() With Sheets("riepilogo") riga = 2 While .Cells(riga, 1) () "" riga = riga + 1 Wend .Cells(riga, 1).Value = Range("f9").Value .Cells(riga, 2).Value = Range("a10").Value .Cells(riga, 3).Value = Range("e3").Value .Cells(riga, 4).Value = Range("e23").Value .Cells(riga, 5).Value = Range("e24").Value .Cells(riga, 6).Value = Range("e25").Value End With End Sub saluti Andrea
|
|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
Ciao Andrea ho provato quello che mi hai scritto però mi da un errore evidenziandomi questo comando While .Cells(riga, 1) () "", ovviamente io non so cosa fare mi chiarisci le idee? Grazie.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
<BLOCKQUOTE id=quote><font size=1 face="Sans Serif, Arial, Helvetica" id=quote>quote:<hr height=1 noshade id=quote> Ciao Andrea ho provato quello che mi hai scritto però mi da un errore evidenziandomi questo comando While .Cells(riga, 1) () "" <hr height=1 noshade id=quote></BLOCKQUOTE id=quote></font id=quote><font face="Sans Serif, Arial, Helvetica" size=2 id=quote> è il solito problema di trasformazione del simbolo di maggiore e minore che in questo sito cambia con le parentesi tonde While .Cells(riga, 1) maggiore minore " il simbolo di maggiore minore sono le frecce di fianco al tasto maiuscolo. saluti Andrea Edited by - a10n11 on 02/15/2006 15:00:15
|
|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
Problema risolto grazie Andrea, vorrei porti un altro quesito se i ripieloghi li volessi fare per trimestri in base alla data cosa mi suggerisci di fare?
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve del tipo un foglio per ogni trimestre?? basta scrivere una macro che in base alla data di fattura sceglie il foglio su cui registrare il documento. Anche per facilitare le cose, terrei comunque un foglio di riepilogo generale. Domani provo a suggerire una ipotesi. saluti Andrea
|
|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
Si perfetto mi serve questa macro, sia un riepilogo generale che suddiviso in trimestri aspetto tue notizie. Grazie sempre
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve crea nel tuo file i seguenti foglio: fattura/riepilogo/1trim/2trim/3trim/4trim La macro che registra i dati della fattura prima sul foglio riepilogo e poi in base alla data nei fogli suddivisi per trimestre è la seguente: NB. fa attenzione ai simboli di maggiore minore che troverai trasformati in parentesi tonde. Sub registra() With Sheets("riepilogo") riga = 2 While .Cells(riga, 1) () "" 'attenzione ai simboli di maggiore/minore riga = riga + 1 Wend .Cells(riga, 1).Value = Range("f9").Value .Cells(riga, 2).Value = Range("a10").Value .Cells(riga, 3).Value = Range("e3").Value .Cells(riga, 4).Value = Range("e23").Value .Cells(riga, 5).Value = Range("e24").Value .Cells(riga, 6).Value = Range("e25").Value End With riga = 2 mese = Month(Range("a10")) If mese )= 1 And mese ( 4 Then 'attenzione ai simboli di maggiore/minore ws = "1trim" ElseIf mese )= 4 And mese ( 7 Then 'attenzione ai simboli di maggiore/minore ws = "2trim" ElseIf mese )= 6 And mese ( 10 Then 'attenzione ai simboli di maggiore/minore ws = "3trim" ElseIf mese )= 9 And mese ( 13 Then 'attenzione ai simboli di maggiore/minore ws = "4trim" End If With Sheets(ws) While .Cells(riga, 1) () "" 'attenzione ai simboli di maggiore/minore riga = riga + 1 Wend .Cells(riga, 1).Value = Range("f9").Value .Cells(riga, 2).Value = Range("a10").Value .Cells(riga, 3).Value = Range("e3").Value .Cells(riga, 4).Value = Range("e23").Value .Cells(riga, 5).Value = Range("e24").Value .Cells(riga, 6).Value = Range("e25").Value End With End Sub saluti Andrea
|
|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
Ciao Andrea ho adattato la tua macro alla mia fattura ma mi da un errore dicendomi else senza if cosa faccio?
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve. se hai ricopiato pari pari la macro sostituendo tutte le parentesi tonde che devono essere simboli di maggiore minore, non ci sono errori. le condizioni If sono correttamente posizionate e chiuse. se mi dici dove mandadartelo ti mando un file di testo con la macro. saluti Andrea
|
|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
|
|
Rank: Member
Iscritto dal : 10/18/2003 Posts: 14
|
Andrea tutto risolto sempre grazie a te, hai dei programmi fatti in excel dove io possa imparare ad usare le macro? Se si mandameli nella mia mail mi serviranno a studiare le macro, grazie.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve. per avvicinarsi al mondo VBA in excel, necessita prima di tutto conoscere i fondamentali del linguaggio (di guide da scaricare in rete ne trovi tantissime) Un sito che aiuta moltissimo all'apprendimento delle macro Excel l'ha realizzato Rèmi un amico di comunità microsoft in cui mette a disposizione un gran numero di macro per una infinità di impieghi. scorrilo attentamente. http://remigueudelot.free.fr/PHP/VBAit.phpsaluti Andrea
|
|
Rank: AiutAmico
Iscritto dal : 6/28/2005 Posts: 58
|
Salve, chiedo scusa se mi intrometto nella vostra interessante discussione. Volevo sapere come fare per insire un pulsante (nel caso specifico sul foglio fattura) associato ad una macro. Ho crato la stessa macro ma devo andare ogni volta sul menu per eseguirla. Inoltre volendom posizionare le intestazioni del foglio riepilogo su diverse celle devo modificare il valore di a2:a100 ? Come ?
Grazie ciao
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve per creare un pulsante sul foglio questa è la procedura: scopri la barra dei menu Moduli da questa barra clicca sul modulo Pulsante e trascina il puntatore del mouse sul foglio per crearlo. Ti si aprirà una finestra che ti chiede di associarci una macro. seleziona la macro che in questo caso è stata chiamata registra e conferma con Ok. quando cliccherai sul pulsante verrà eseguita la macro. Per quanto riguarda il range a cui fai riferimento, A2:A100 identifica la colonna e le righe in cui sono registrati i numeri di fattura. Se nel tuo caso questi si trovano non in colonna A ma in colonna D cambia in D2:D100 saluti Andrea Edited by - a10n11 on 02/18/2006 12:25:31
|
|
Rank: AiutAmico
Iscritto dal : 6/28/2005 Posts: 58
|
Ok. Ma se volessi mettere un risultato per esempio in A2 ed un altro in C2, come andrebbe modificata la routine? Chiedo scusa ancora dell'intrusione. Ciao
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve forse fai riferimento a questa parte della routine:
Riga = 2 While .Cells(riga, 1) () "" riga = riga + 1 Wend .Cells(riga, 1).Value = Range("f9").Value
ti spiego il significato di queste istruzioni. Riga=2 significa che si prende come dato iniziale la riga nr. 2 del foglio di lavoro While .Cells(riga, 1) () "" riga = riga + 1 Wend con le istruzioni di cui sopra si controlla che la riga 2 di colonna 1 (che sarebbe la cella A2) sia vuota se non lo è controlla la successiva. quando trova la riga vuota con questa istruzione: .Cells(riga, 1).Value = Range("f9").Value ci copia il valore della cella F9 del foglio fattura. quindi se si vogliono indicare colonne diverse dall'esempio del codice postato, bast cambiare il valore di .cells() .cells(riga,1) = A2 .cells(riga,2)= B2 .cells(riga,3)=C2 ecc. se non ho capito il problema fa un esempio concreto del layout del tuo foglio. saluti Andrea Edited by - a10n11 on 02/19/2006 22:09:21
|
|
Guest |