In questo foglio Archivio, le intestazioni delle colonne sono:
A1 Numero Fattura
B1 Data Fattura
C1 Nome Azienda
D1 Indirizzo
E1 CAP
F1 Citta'
G1 P.I.
H1 Imponibile
I1 IVA
L1 Totale Fattura
I valori originali da archiviare li ho nel foglio che si chiama
"Fattura", nell'intervallo di celle AQ18:AQ27
La macro dovrebbe Importare i dati sulla prima riga libera disponibile
nel foglio Archivio
Chi mi aiuta?
Grazie
Armando
Ciao Armando,
non sarebbe preferibile fare il contrario?
Cioč, immettere i dati nel foglio "Archivio" e scegliere nel foglio
"Fattura" il numero di fattura da visualizzare/stampare?
--
Ciao,
Ignazio
RIO: www.riolab.org
Per le mie esigenze credo di no
lo troverei molto piu' scomodo
nell'archivio veglio solo mettere i dati riepilogativi, non le
specifiche dei prodotti (nel caso mie lunghissime e tantissime) ne' i
rispettivi prezzi, ne' le quantita', ne' i parziali.
> > ho un foglio di calcolo col quale faccio delle fatture. Vorrei
> > inserire una macro che mi permettesse di memorizzare i dati della
> > fattura (Nome Azienda, numero fattura, data fattura, imponibile, iva
> > etc) in un altro foglio che ho chiamato "Archivio", per avere sempre a
> > portata di mano tutte le fatture.
>
> > In questo foglio Archivio, le intestazioni delle colonne sono:
> > A1 Numero Fattura
> > B1 Data Fattura
> > C1 Nome Azienda
> > D1 Indirizzo
> > E1 CAP
> > F1 Citta'
> > G1 P.I.
> > H1 Imponibile
> > I1 IVA
> > L1 Totale Fattura
Ciao Armando,
visto che le celle sono tutte in sequenza, non è che l'ultima cella è la J1?
> > I valori originali da archiviare li ho nel foglio che si chiama
> > "Fattura", nell'intervallo di celle AQ18:AQ27
Supponendo che l'intervallo del foglio "Archivio" vada da A a J, prova
questa macro (ti suggerisco di provarla su di una copia del tuo file):
Sub ArchiviaFattura()
Dim i As Long
Dim N As Long
Dim Archivio As Worksheet
Dim Fattura As Worksheet
'
Set Archivio = Worksheets("Archivio")
Set Fattura = Worksheets("Fattura")
N = Archivio.Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To 10
Archivio.Range("A1").Offset(N, i - 1).Value = _
Fattura.Range("AQ18").Offset(i - 1, 0).Value
Next
End Sub
Ciao Armando
È un codice minimo che non controlla l'eventualità che la fattura è
già stata accodata. In una base dati meglio strutturata sarebbe meglio
archiviare i dati inseriti nel foglio fattura in 2 tabelle di
archivio; la prima contenente i dati fattura con il solo riferimento
univoco al cliente; la seconda contenente l'anagrafica dei clienti.
La macro controllerebbe se il cliente della fattura è già in archivio
e se la fattura è già stata archiviata. Avendo alla fine 2 tabelle
correlate tramite l'identificativo univoco cliente, sarebbe possibile
interrogare il tuo database con delle vere query lanciate dall'esterno
( altri file ) dell'origine dati. Comunque tornando a quanto chiedi:
Dove vuoi:
Sub AccodaDatiInArchivio()
Dim DestWS As Worksheet
Dim SourceWS As Worksheet
Dim lngLastRow As Long
Dim SourceRange As Range
Set SourceWS = ThisWorkbook.Sheets("Fattura")
Set DestWS = ThisWorkbook.Sheets("Archivio")
Set SourceRange = SourceWS.Range("AQ18:AQ27")
lngLastRow = LastRow(DestWS)
SourceRange.Copy
DestWS.Range("A" & lngLastRow + 1).PasteSpecial Paste:=xlPasteAll,
Transpose:=True
Application.CutCopyMode = False
End Sub
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Ciao Elio
Ho provato le due soluzioni proposte da Ignazio ed Elio.
Funzionano entrambe, e vi ringrazio per la disponibilita'.
Ciao
Armando