Condividi:        

riepilogo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

riepilogo

Postdi Tequi » 05/12/17 18:48

Buona sera a tutti,
sto provando a fare una macro in Excel,che mi consente di fare un riepilogo da una pagina all'altra:
Dunque:
nella prima pagina chiamata Import ho un formulario/tabella chiamato Memorandum, che viene compilato come segue:
nr. di Memorandum nella cella E10 - data nella cella D10- importatore (che sono tre) - nr. crt nelle celle E17 e F17 - kg nelle celle G17 e H17 - valore nelle celle I17 e J17.

Ho bisogno di salvare in automatico su un'altro foglio i totali per ogni importatore al fine di avere una lista completa a fine mese di tutto cio' che e passato,che poi andro' ad analizzare con dei filtri.

Alla fine il foglio Import verra' duplicato e nascosto,onde evitare che venga toccato e quindi alterato.Quindi la macro dovra' leggere anche i dati dai fogli nascosti

spero di essere stato chiaro, se riuscissi a capire come si allegano i file in Excel magari aiuta

grazie
Avatar utente
Tequi
Utente Junior
 
Post: 34
Iscritto il: 21/08/12 15:32

Sponsor
 

Re: riepilogo

Postdi xilofono » 05/12/17 19:21

http://www.filedropper.com

lo cairchi qui poi posti il link che ti fornisce il sito in modo che gli altri possano scaricarlo
Windows 11 - Office 2016 Ita
Avatar utente
xilofono
Utente Junior
 
Post: 80
Iscritto il: 27/11/17 09:52

Re: riepilogo

Postdi Tequi » 05/12/17 20:19

Avatar utente
Tequi
Utente Junior
 
Post: 34
Iscritto il: 21/08/12 15:32

Re: riepilogo

Postdi Anthony47 » 06/12/17 19:32

Perdona lo sfogo, ma quando vedo queste situazioni io dico che la soluzione e' un blocco notes, il lapis, una calcolatrice con le 4 operazioni e continuare a fare tutto a mano; perche' Excel e' stato usato con la finalita' di emulare un modulo cartaceo, organizzando i dati secondo il principio di indeterminazione di Heisenberg.

Bisognerebbe (modesta opinione) capovolgere l'approccio: non partire dal modulo Import cosi' compilato ma da un analitico giornaliero compilato. Dall'analitico giornaliero si compila poi il modulo Import e si popola lo storico (la somma di tutti gli analitici giornalieri)

Con queste considerazioni, ti propongo un modo per popolare un foglio Storico con le informazioni che si trovano sul tuo Import, riportandovi in ordine:
-la data (prelavata da G10)
-il contenuto dell'intestazione (in grigio)
-il contenuto delle N celle sotto l'intestazione in grigio, se hanno una qualche valorizzazione nelle colonne E-J
-i valori di colonna E-J, se la riga e' valorizzata

Per questo si potra' utilizzare la seguente macro, che e' basata sulla struttura pubblicata del foglio Import.
Codice: Seleziona tutto
Sub Import2Storico()
Dim iDate As Date, cAge As String, sNext As Long, rCnt As Long
Dim I As Long, LastC As Long, dSh As Worksheet
'
Set dSh = Sheets("Storico")
'
Sheets("Import").Select
LastC = Cells(Rows.Count, "C").End(xlUp).Row
iDate = Int(Range("G10").Value)
For I = 16 To LastC
Debug.Print I, Cells(I, 3)
    If UCase(Cells(I, "C")) <> "TOTALI" And UCase(Cells(I, "C")) <> "ACCETTAZIONE" Then
        If Cells(I, "C").Interior.Color = Range("C16").Interior.Color Then
            cAge = Cells(I, "C")
        Else
            If Application.WorksheetFunction.Count(Cells(I, "E").Resize(1, 6)) > 0 Then
                sNext = dSh.Cells(Rows.Count, 1).End(xlUp).Row + 1
                dSh.Cells(sNext, 1) = iDate
                dSh.Cells(sNext, 2) = cAge
                dSh.Cells(sNext, 3) = Cells(I, "C")
                dSh.Cells(sNext, 4).Resize(1, 6).Value = Cells(I, "E").Resize(1, 6).Value
                rCnt = rCnt + 1
            End If
        End If
    End If
Next I
MsgBox ("Completato" & vbCrLf & "Righe storicizzate: " & rCnt)
End Sub

Va messa in un Modulo Standard del vba (es Modulo1); poi quando vuoi "storicizzare" il contenuto di un foglio Import devi lanciare la Sub Import2Storico; per questo, partendo da Excel:
-premi Alt-F8, scegli Import2Storico dall'elenco di macro disponibili, premi Esegui.
Oppure associ la macro a un pulsante da inserire sul foglio Import, o altra icona da inserire nella "Barra di accesso rapido" di Excel, o altra automazione.

Il foglio Storico deve gia' esistere al momento dell'avvio della macro.

Ogni volta che si esegue la macro Import2Storico il contenuto del foglio Import viene copiato nel foglio Storico, accodandolo a quanto e' gia' presente.
Il file andra' poi salvato con estensione .xlsm (macro enabled)

Spero che quanto proposto sia di qualche utilita'.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: riepilogo

Postdi Tequi » 11/12/17 10:27

Ciao Anthony,
intanto grazie mille.
O tolto la parte colorata in grigio e vorrei aggiungere la cella E10, e non capisco dove inserirla per fare in modo che mi copaia nella cella B2 dello storico


PS perdona l'ignoranza
Avatar utente
Tequi
Utente Junior
 
Post: 34
Iscritto il: 21/08/12 15:32

Re: riepilogo

Postdi Anthony47 » 11/12/17 15:23

Come ti avevo detto, il file era organizzato alla "block notes cartaceo", comunque su quel formato, compreso la colorazione in grigio, avevo compilato la Sub Import2Storico.
Se togli la parte colorata in grigio la Sub Import2Storico non capira' dove cominciano gli elenchi e quindi non so cosa ti restituira'.
Per una nuova versione della macro dovrei vedere il nuovo look del tuo foglio.

Se invece vuoi semplicemente aggiungere in Storico /col B la data del documento, allora modifica questa parte della macro:
Codice: Seleziona tutto
        Else
            If Application.WorksheetFunction.Count(Cells(I, "E").Resize(1, 6)) > 0 Then
                sNext = dSh.Cells(Rows.Count, 1).End(xlUp).Row + 1
                dSh.Cells(sNext, 1) = iDate
                dSh.Cells(sNext, 2) = Range("E10")
                dSh.Cells(sNext, 3) = cAge
                dSh.Cells(sNext, 4) = Cells(I, "C")
                dSh.Cells(sNext, 5).Resize(1, 6).Value = Cells(I, "E").Resize(1, 6).Value
                rCnt = rCnt + 1
            End If
        End If
(elimina le righe precedenti, sostituiscile con queste; c'e' una riga aggiunta e le altre con modifiche)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "riepilogo":


Chi c’è in linea

Visitano il forum: Nessuno e 54 ospiti