Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Caty,
se ho ben capito nella colonna E hai il totale di tutte le righe che man mano vengono aggiunte, vero? Ipotizzando questo nella cella E2 ho inserito la formula =SOMMA(D$2:D2), che con l'aggiungersi di nuove righe ti darà il totale di quella corrente e di tutte le righe precedenti.
Nella cella D2 inoltre userei la formula =SE.ERRORE(B2*C2;0), altrimenti appena copi la riga vuota, trovando lo spazio al posto di un valore numerico nella colonna del prezzo, vedrai l'errore #VALORE!.
A questo punto do per scontate due cose:
- la cella A1 è piena (probabilmente ci sarà l'intestazione di colonna)
- la seconda riga sarà sempre presente con convalida e formule
Solo se queste due condizioni sono vere le routine di seguito saranno in grado di funzionare.
Sub CopiaRiga()
Dim dest As Range
If IsEmpty(Range("A2")) Then Exit Sub
Set dest = ActiveSheet.Range("A1").End(xlDown).Offset(1, 0)
Rows("2:2").Copy Destination:=dest
dest.ClearContents
dest.Offset(0, 2).ClearContents
Application.CutCopyMode = False
End Sub
Sub EliminaRigaVuota()
Dim dest As Range
If IsEmpty(Range("A2")) Then Exit Sub
Set dest = ActiveSheet.Range("A1").End(xlDown).Offset(1, 0)
dest.EntireRow.Delete
End Sub
Come potrai vedere per prima cosa controllo la cella A2 sia piena, altrimenti non ha senso né aggiungere una riga (puoi usare già quella) né eliminarla (non dovrebbero essercene altre) e quindi nessuna delle due routine viene eseguita.
La seconda cosa che faccio è identificare la prima cella vuota nella colonna A assegnandola alla variabile "dest". Il comando ActiveSheet.Range("A1").End(xlDown).Offset(1, 0) equivale a posizionarsi sulla cella A1, premere CTRL+<freccia giù>, per posizionarsi sull'ultima cella piena contigua alle altre, e scendere ancora di una riga.
Ora che hai la cella di destinazione puoi usarla come parametro DESTINATION del comando COPY, e puoi eliminarne il contenuto dopo aver copiato la riga 2. Ho anche eliminato il contenuto della quantità, 2 celle a destra di dest (dest.Offset(0,2).ClearContents) che altrimenti sarebbe rimasta inserita.
Spero di aver capito correttamente cosa volevi e di esserti stato di aiuto. Se hai bisogno chiedi pure.
Ciao,
Alessandro