Condividi:        

[Excel] Urgente - VBA - copia condizionale di fogli excel

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

[Excel] Urgente - VBA - copia condizionale di fogli excel

Postdi camillobenzo » 24/10/11 13:56

Ciao a tutti,

Sono Fabio, nuovo del forum e poco esperto con VBA, e vi sarei molto grato se riusciste ad aiutarmi con la risoluzione di una Macro.

Avrei bisogno di una macro (credo in Vba) che all'apertura del file Duvri master.xls, sul primo foglio del file legga il nome dei file da copiare nei rispettivi fogli, eliminando i vecchi valori presenti.
Il nome dei file da importare (il cui nome come già detto, è presente in tre celle del primo foglio di Duvri Master.xls) sarà dinamico in quanto frutto di un concatenate di (stato pdl, attivazioni e duvri) con la funzione today.

In breve: dato che questi 3 files fonte cambieranno ogni giorno e saranno denominati a seconda della data ("stato pdl gg-mm"; "attivazioni gg-mm"; "duvri_ggmmaaaa"), ma avranno sempre lo stesso numero di colonne (e diverso di righe), vorrei che all'apertura del file Duvri Master.xls i fogli all'interno (Stato pdl, attivazioni, duvri) cancellassero i vecchi valori presenti in quel range di colonna (A:AC per il foglio "Stato PdL", A:AG per il foglio "attivazioni", A:K per il foglio "Duvri") sostituendoli con i nuovi, senza che i riferimenti di formula di celle esterne si perdessero.
I files fonte ("stato pdl gg-mm"; "attivazioni gg-mm"; "duvri_ggmmaaaa") sarebbero salvati ogni giorno nella stesso stesso folder del file Master (Duvri Master.xls)

Allego files esemplificativi: uploading. com/files/b6a4532c/Analisi%2BDuvri.zip/


Grazie mille!!

Fabio

Versione Excel: 2007
Lenovo T400
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Sponsor
 

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 24/10/11 14:48

Ciao Camillobenzo e benvenuto nel Forum

Prova questa macro che potrai abbinare ad un pulsante sul foglio principale
Codice: Seleziona tutto
Sub Importa()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
For RR1 = 13 To 15
Worksheets("Analisi DUVRI").Select
Nomefile = Range("N" & RR1).Text & ".xls"
Select Case RR1
Case Is = 13
NomeFoglio = "Stato PdL"
Case Is = 14
NomeFoglio = "Attivazioni"
Case Is = 15
NomeFoglio = "Duvri"
End Select
Workbooks.Open Filename:=Perc & Nomefile
    Cells.Copy
    Windows("Duvri Master.xls").Activate
    Worksheets(NomeFoglio).Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.DisplayAlerts = False
    Workbooks(Nomefile).Close SaveChanges:=False
    Application.DisplayAlerts = True
Next RR1
Worksheets("Analisi DUVRI").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 24/10/11 15:29

Con questa modifica la macro è molto più veloce
Codice: Seleziona tutto
Sub Importa2()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
For RR1 = 13 To 15
Worksheets("Analisi DUVRI").Select
Nomefile = Range("N" & RR1).Text & ".xls"
Select Case RR1
Case Is = 13
NomeFoglio = "Stato PdL"
Case Is = 14
NomeFoglio = "Attivazioni"
Case Is = 15
NomeFoglio = "Duvri"
End Select
Workbooks.Open Filename:=Perc & Nomefile
    Cells.Copy Destination:=Workbooks("Duvri Master.xls").Worksheets(NomeFoglio).Range("A1")
    Application.DisplayAlerts = False
    Workbooks(Nomefile).Close SaveChanges:=False
    Application.DisplayAlerts = True
Next RR1
Worksheets("Analisi DUVRI").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 24/10/11 16:06

Ciao Flash,

grazie mille!!!! La macro è fantastica, è proprio ciò che mi serviva!!
Solo una piccola modifica: è possibile che durante l'aggiornamento non si cancelli tutto il foglio ma solo le colonne dove sono presenti i valori? Ti spiego: il numero di righe cambierà ma non il numero di colonne. Avevo intenzione di inserire dopo l'ultima colonna di dati, delle colonne con formule che si aggiornassero automaticamente all'aggiornarsi del file.
Inoltre, è possibile copiare i fogli in celle diverse dalla A1? Esempio: Duvri in A2, Stato PdL e Attivazioni in A1.

Grazie ancora!
Fabio
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 24/10/11 16:24

Per evitare ulteriori "rimpalli" di macro e aggiustamenti delle stesse
conviene che invii il file ma, questa volta, con i dati e formule e/o celle che non vuoi cancellare

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 24/10/11 16:40

Nel frattempo ho modificato così, provale e fai sapere
Codice: Seleziona tutto
Sub Importa2()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
For RR1 = 13 To 15
Worksheets("Analisi DUVRI").Select
Nomefile = Range("N" & RR1).Text & ".xls"
Select Case RR1
Case Is = 13
ColI = 1
ColF = "AC"
NomeFoglio = "Stato PdL"
Case Is = 14
ColI = 1
ColF = "AJ"
NomeFoglio = "Attivazioni"
Case Is = 15
ColI = 2
ColF = "K"
NomeFoglio = "Duvri"
End Select
Workbooks.Open Filename:=Perc & Nomefile
Columns("A:" & ColF).Copy Destination:=Workbooks("Duvri Master.xls").Worksheets(NomeFoglio).Columns(ColI)
    Application.DisplayAlerts = False
    Workbooks(Nomefile).Close SaveChanges:=False
    Application.DisplayAlerts = True
Next RR1
Worksheets("Analisi DUVRI").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 24/10/11 16:51

Essendoci dei dati sensibili dovrei metterci mani per un po' per 'pulirlo' senza snaturare i fogli. Se è necessario lo faccio, no problem.
Le uniche cose che mi premevano erano le seguenti:
-copiare i fogli non in A1, ma in B1 (sia per stato pdl, che attivazioni, che duvri)
-lasciare che le colonne A, e AD:AZ del foglio stato pdl (che occupa le colonne B:AC) non si cancellino all'aggiornarsi del file
-lasciare che le colonne A, e AK:AN del foglio attivazioni(che occupa le colonne B:AJ) non si cancellino all'aggiornarsi del file
-lasciare che le colonne A, e M:N del foglio duvri (che occupa le colonne B:L) non si cancellino all'aggiornarsi del file
-che tutti i campi e le tabelle pivot presenti nel file si aggiornassero (referesh) in automatico al termine del processo

Grazie! Questo forum diventerà la mia nuova mecca!
Ho letto anche dei sistemi lotto su cui hai lavorati, complimenti, sei un grande!!

Fabio

ps. Se hai bisogno del file ne faccio uno zip e faccio l'upload..
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 24/10/11 16:56

Prova la macro postata qui sopra che rispetta la specifica precedente dove solo il foglio Duvri prevedeva lo spostamento sulla colonna B e non gli altri due fogli
ma potrai modificare il valore ColI nella Select Case
(se sono uguali per tutti e tre i fogli si può mettere direttamente il valore fisso nella colonna destinazione)

fai sapere
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 24/10/11 17:09

Ci ho provato, ma la mia immensa ignoranza in fatto di Vba non ha aiutato... Riusciresti a dargli l'ultima aggiustatina?
Prometto di portarmi avanti con VBA nel prossimo mese e divenire più attivo nel forum..

Grazie ancora!!
Fabio
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 24/10/11 17:52

Ok
basta che studi! :D

Codice: Seleziona tutto
Sub Importa3()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
For RR1 = 13 To 15
Worksheets("Analisi DUVRI").Select
Nomefile = Range("N" & RR1).Text & ".xls"
Select Case RR1
Case Is = 13
ColI = "B"
ColF = "AC"
NomeFoglio = "Stato PdL"
Case Is = 14
ColI = "B"
ColF = "AJ"
NomeFoglio = "Attivazioni"
Case Is = 15
ColI = "B"
ColF = "K"
NomeFoglio = "Duvri"
End Select
Workbooks.Open Filename:=Perc & Nomefile
    Columns(ColI & ":" & ColF).Copy Destination:=Workbooks("Duvri Master.xls").Worksheets(NomeFoglio).Columns(2)
    Application.DisplayAlerts = False
    Workbooks(Nomefile).Close SaveChanges:=False
    Application.DisplayAlerts = True
Next RR1
Worksheets("Analisi DUVRI").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 28/10/11 14:04

Ciao Flash, ciao a tutti,

avrei bisogno di aggiornare la macro perchè purtroppo mi dà dei problemi.. Non allego il file perchè è ormai diventato molto pesante..
1)Il file importa delle tabelle e a fianco a queste tabelle ho inserito delle colonne con formule. La lunghezza stessa delle tabelle cambia e quindi vorrei che le colonne affianco si aggiornassero sia come valori, sia come dimensioni (matchando la lunghezza della tabella, altrimenti dovrei manualmente copiare le formule nelle celle vuote se la tabella è più lunga), eliminando poi le righe successive alla fine della tabella

Codice: Seleziona tutto
Sub Importa3()
Perc = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.Calculation = xlManual
For RR1 = 12 To 15
Worksheets("Analisi DUVRI").Select
Nomefile = Range("N" & RR1).Text & ".xls"
Select Case RR1
Case Is = 12
ColI = "A"
ColF = "AC"
NomeFoglio = "Stato PdL"
Case Is = 13
ColI = "A"
ColF = "AI"
NomeFoglio = "Attivazioni"
Case Is = 14
ColI = "A"
ColF = "K"
NomeFoglio = "Duvri"
Case Is = 15
ColI = "A"
ColF = "K"
NomeFoglio = "Duvri ieri"
End Select
Workbooks.Open Filename:=Perc & Nomefile
    Columns(ColI & ":" & ColF).Copy Destination:=Workbooks("Duvri Master.xls").Worksheets(NomeFoglio).Columns(2)
    Application.DisplayAlerts = False
    Workbooks(Nomefile).Close SaveChanges:=False
    Application.DisplayAlerts = True
Next RR1
Worksheets("Analisi DUVRI").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 28/10/11 14:35

2) che anche le pivot presenti in altri fogli si aggiornino automaticamente includendo le nuove celle in caso le tabelle aumentassero di dimensione
3)che le colonne B e F DEL FOGLIO "kpi MASTER" si copino nelle rispettive colonne del foglio 1 di un altro file ("kpi master.xls") e trovando quelle colonne piene copino i valori nella colonna subito successiva.

Grazie mille a tutti
Sembra un codice piuttosto complesso. Di sicuro senza di voi non ce la farei mai, nè mai ce l'avrei fatta senza l'amico Flash!

Vi prego di aiutarmi il prima possibile

Fabio
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 28/10/11 15:14

Per il Punto 1)
dovresti dire in quale colonna/e si trova la/le formule e qual'è la formula (altrimenti come faccio a scrivertela con il vba?)

Punto 2) Credo che la pivot si aggiorna se cambia il dato ma se aggiungi nuove righe dovrai rifare la Pivot
esiste un metodo però, registrare una macro prima di fare la pivot con tutti i dati che ti interessano
una volta completata la tabella, fermi la macro
poi pubblica la macro, proverò a renderla idonea per l'inserimento di ulteriori righe

Punto 3) quando dovrebbe avvenire questo?
ti trovi nel foglio Kpi Master (che io non ho) oppure in un altro foglio o altro file?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 28/10/11 15:48

1)le colonne sono A e AE:AQ del foglio 'stato pdl', G:H del foglio "pivot attivazioni", A del foglio "duvri", A del foglio "Duvri Ieri", A del foglio "attivazioni". Le formule sono già presenti nelle colonne.
2) purtroppo con questo passaggio si perderebbe l'automazione del foglio.. Non è possibile indicare alla pivot di non fare più riferimento al range di celle utilizzato ma ad un'altro range? Questo nuovo range sarebbe semplicemente la tabella A:AQ del foglio "stato pdl", dove ci sono valori.
3)La macro, dopo aver terminato gli altri processi dovrebbe copiare le colonne A e AJ del foglio "Kpi duvri" presente nel solito file Duvri Master, aprire il file presente nella stessa cartella "Kpi Master" e Copiare i valori nel foglio "kpi duvri aggiornato" nelle stesse colonne. Se sono occupate dovrebbe copiarle nella prima colonna libera (es. A in B se A ha celle non vuote e lo stesso AJ in AK)
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 28/10/11 16:13

Premetto che ti sto rispondendo, malgrado impegni che ho in questi giorni, solo perché hai chiesto urgenza
purtroppo non posso soddisfare nessuno dei tuoi quesiti perché:

1) Nel file in mio possesso non ci sono formule, altrimenti non avrei fatto richiesta
2) Nel foglio "Stato Pdl" non ho tabelle di pivot per sapere gli elementi da importare nella tabella, pertanto, qualsiasi tabella faccia non sarà sicuramente come la vorresti tu
3) Nel mio Druvi Master non ho alcun foglio "Kpi duvri" e quindi non saprei quante colonne copiare

Ora ti devo salutare perché, come dicevo poc'anzi ho impegni improrogabili.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 28/10/11 16:39

Grazie per il supporto, immagino sarai impegnatissimo. Dovendo excel in giornata ho appuntato il thread con urgente, altrimenti non ti avrei mai disturbato. ;) Sto caricando con uploading il file cosi puoi vederlo tu stesso appena puoi. Pochi min e carico il link.
Se riuscissi ad aiutarmi te ne sarei veramente grato.

Grazie!
Fabio
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 01/11/11 14:03

Ciao Flash,

riesci a darmi una mano nell'automatizzazione di una macro più tardi? Non sarà questione di molto tempo. Se si mi dici a che ora preferisci, così ti scrivo il problema e carico il file entro quell'ora?
Spero che essendo giorno festivo riesca a ritagliarmi qualche minuto.

Grazie mille!
Fabio
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 01/11/11 22:39

Cosa dirti...
sono ora in linea per rispondere e vedere che sia tutto ok
ma sono di corsa...
prova ad inviare

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi camillobenzo » 02/11/11 09:33

Ciao Flash,
quando parte la macro, nel copiare i due file duvri (duvri_ggmmaaaa) mi dà un errore:
run-time error 9, subscript out of range. Immagino perchè il numero di righe del foglio da importare è maggiore di quello presente. Mi aiuteresti a modificare il codice (è l'ultimo codice presente nel topic)?

Grazie,
Fabio
camillobenzo
Utente Junior
 
Post: 29
Iscritto il: 24/10/11 13:40

Re: [Excel] Urgente - VBA - copia condizionale di fogli exce

Postdi Flash30005 » 02/11/11 09:53

Più di una volta hai annunciato che avresti inviato il file ma ancora non vedo nessun link per scaricarlo,
hai qualche problema?

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Urgente - VBA - copia condizionale di fogli excel":


Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti