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
[Modificato da by sal 21/10/2019 16:35]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie
clicca qui