Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Tabella compilata con record di n tabelle

Ultimo Aggiornamento: 22/10/2019 09:49
Post: 5.770
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
21/10/2019 16:24

Tabelle
Ciao Michele, la prima cosa per evitare disomogeneità, in un foglio prendi il foglio di riepilogo delle tabelle e vai alla colonna "AA" e crea un elenco delle operazioni in modo che non ci siano voci discordanti, dovrebbe essere questa

Operazioni
ACQUISTI
DEPOSITO
DEPOSITO POSTEPAY
DONAZIONE RICEVUTA
PRELIEVO
PRELIEVO POSTEPAY
VISA VERSAMENTO

a questo punto vai in gestione nomi e crea un nuovo nome, chiamalo "Operazioni"

in basso "Riferito a" gli inserisci questa formula

=SCARTO(Tabella_unica!$AA$2;;;CONTA.VALORI(Tabella_unica!$AA:$AA)-1;1)


questo fa in modo che se aggiungi una nuova voce all'elenco questa viene riconosciuta ed aggiunta alla convalida che andrai a creare per ogni foglio "Utente" nella colonna "Operazioni"

per la convalida seleziona la colonna delle operazioni scegli di inserire la convalida e metti come "Origine:" "=Operazioni"

questo per ogni foglio utente quindi in questo modo le operazioni avranno tutte la stessa dicitura ed impostazione.

passiamo alla macro, la registrazione Macro ti darà una cosa del genere.

Sub Macro5()
'
' Macro5 Macro
'

'
    Range("B35:H35").Select
    Selection.Copy
    Sheets("Tabella_unica").Select
    Range("C100").Select
    ActiveSheet.Paste
    Range("C101").Select
End Sub


logico che a questo punto la macro ti ha dato il codice ma come riferimento sono riferimenti fissi, se lanci di nuovo la macro copierà sempre la riga 35 e la metterà sempre nel foglio "Tabella unica" alla riga 100, perche questa è la registrazione fatta.

cosa dobbiamo sapere noi
prima il foglio di partenza e questo lo si ottiene con "Activesheet"
poi l'ultima riga che abbiamo scritto come la otteniamo con il codice

r1=cells(rows.count,2).end(xlup).row


che dice metti nella variabile "r1" l'ultima riga occupata della colonna 2=B

il nome del foglio di arrivo lo sappiamo che è "Tabella Unica" quello che ci resta da sapere è l'ultima riga occupata del foglio di arrivo "Tabella Unica", quindi ripetiamo il codice ma con un altra variabile "r2"

r2=cells(rows.count,3).end(xlup).row+1


come noti ci sono 2 differenze la prima il 3 perche la tabella incomincia dalla colonna "C" quindi 3=C la seconda alla fine ho inserito "+1" perche senza mi avrebbe riportato ll'ultima riga occupata ma a me serve una riga vuota quindi il "+1" mi riporta in r2 appunto il numero della riga vuota appena sotto.

andiamo a variare adesso la nostra macro con la registrazione

in primis dobbiamo dichiarare le due variabili

Sub Macro5()
'
' Macro5 Macro
'
Dim r1, r2 'aggiunta
'
    Activesheet.select'aggiunta
    r1=cells(rows.count,2).end(xlup).row'aggiunta
    Range("B" & r1 & ":H" & r1).Select'modificata
    Selection.Copy
    Sheets("Tabella_unica").Select
    r2=cells(rows.count,3).end(xlup).row+1'aggiunta
    Range("C" & r2).Select'modificata
    ActiveSheet.Paste
    Range("C" & r2+1).Select'modificata
End Sub


cosi diventerebbe la tua macro da lanciare con un pulsante in ogni foglio Utente.

ma solo questa macro unica per tutti i fogli.

alla fine sorge un problema, lo vedrai quando lanci la macro, l'ultima colonna "Saldo" ti riporterà un errore "#VALORE" in quanto nell'ultima colonna ce una formula che è fatta per funzionare sul foglio utente e non sul foglio di riepilogo, quando fai il Copia/incolla riporta anche la formula.

però puoi ovviare non copiando anche la colonna "H" quindi la riga diventerebbe fermandosi con la copia alla colonna "G"

Range("B" & r1 & ":G" & r1).Select'modificata


a questo punto rifare la formula della colonna "I" del foglio di riepilogo in modo che funzioni per le righe successive.

fai sapere Ciao By Sal [SM=x423051]




[Modificato da by sal 21/10/2019 16:35]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Vota: 15MediaObject3,33325 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 16:20. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com