Moderatori: Anthony47, Flash30005
ricky53 ha scritto:Ciao,
prova, avviando il registratore di macro, a fare i passi che hai descritto ed invia il codice ottenuto ed insieme cercheremo di adattarlo alla tua esigenza.
L'aggiornamento dei dati ogni quanto tempo va fatto?
Ogni "X" minuti, ore, giorni, ... ?
I dati presenti nel file "A" vanno, ogni volta, sostituiti tutti con i nuovi (del file "B") indipendentemente se nel file "A" ci sia qualche dato.
Vero?
I dati del file "B" vanno copiati tutti, ossia tutte le colonne/righe?
ricky53 ha scritto:Ciao,
prova, avviando il registratore di macro, a fare i passi che hai descritto ed invia il codice ottenuto ed insieme cercheremo di adattarlo alla tua esigenza.
L'aggiornamento dei dati ogni quanto tempo va fatto?
Ogni "X" minuti, ore, giorni, ... ?
I dati presenti nel file "A" vanno, ogni volta, sostituiti tutti con i nuovi (del file "B") indipendentemente se nel file "A" ci sia qualche dato.
Vero?
I dati del file "B" vanno copiati tutti, ossia tutte le colonne/righe?
Sub Import()
'
' Import Macro
'
' Scelta rapida da tastiera: CTRL+i
'
ChDir "C:\Users\...\Desktop\Cdc"
Workbooks.Open Filename:="C:\Users\...\Desktop\Cdc\Cdc1.xls"
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("ricla.xlsm").Activate
ActiveSheet.Next.Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
ActiveSheet.Previous.Select
End Sub
ricky53 ha scritto:Ciao,
con questo codice ottieni quello che volevi?
E' valido per tutti i casi ?
In merito all'intervallo da copiare: cambiano solo le righe ma le colonne rimangono sempre quelle?
Il codice va adattato inserendo il nome del foglio dal quale copiare e quello sul quale riportare i dati.
Probabilmente alcune istruzioni vanno tolte
ricky53 ha scritto:Ciao,
è preferibile attendere il tuo file, anche per capire bene il tuo problema legato al "#RIF!".
Sub Import()
'
' Import Macro
'
' Scelta rapida da tastiera: CTRL+i
'
perc = ThisWorkbook.Path & "\"
WSD = ThisWorkbook.Name
FoglioD = "DB"
Worksheets(FoglioD).Select
Cells.Clear
FileD = "Cdc1.xls"
Workbooks.Open Filename:=perc & FileD
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows(WSD).Activate
Range("A1").Select
'ActiveSheet.Next.Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
ActiveSheet.Previous.Select
Application.DisplayAlerts = False
Workbooks(FileD).Close savechanges:=False
Application.DisplayAlerts = True
End Sub
SOMMA.SE(Db!$A$2:Db!$A$1691; Cover!$D$5&"-"&$A7; Db!$J$2:Db!$J$1691)
ricky53 ha scritto:Ciao,
allora ci sono diverse cose da correggere:
a) la macro che cancella NON deve eliminare le righe ma cancellare solo il contenuto delle celle altrimenti NASCE il problema dei #RIF!
b) quando cancelli "elimini" anche il contenuto delle prime due colonne che contengono Key1 e Key2 questa cosa compromette i calcoli perchè la macro di copia copia da colonna "A" in avanti ed i dati vengono spostati di due colonne a sinistra, ne segue che nel foglio "P&L" TUTTE le formule danno sempre "ZERO" come risultato.
c) ... altre cose da vedere dopo
Veniamo alla questione: le due colonne Key1 e Key2 come vengono prodotte/calcolate/impostate ?
Ho visto che non ci sono formule ma solo valori?
La prima colonna Kye1 viene utilizzata, per esempio, inche è parte della formula presente in "C7" del foglio "P&L".
- Codice: Seleziona tutto
SOMMA.SE(Db!$A$2:Db!$A$1691; Cover!$D$5&"-"&$A7; Db!$J$2:Db!$J$1691)
Anche nelle altre formule dove si utilizza Key2 si ha la stessa problematica !!!
Come vedi ci sono diverse cose da capire (noi del forum) e sistemare (noi insieme a te).
Attendiamo le tue informazioni ed i tuoi chiarimenti.
Sub Clear()
'
' Clear Macro
'
' Scelta rapida da tastiera: CTRL+e
'
Sheets("Db").Cells.ClearContents
End Sub
ricky53 ha scritto:Caio,
volevo aggiungere una cosa al mio precedente intervento ma non posso più modificarlo, quindi, riporto qui il mio ... SOSPETTO
a ... NASO le macro non fanno quello che vorresti facessero ed alla fine, dopo la loro esecuzione, le formule in "P&L" non saranno corrette ... è un mio sospetto !!!
Adesso non posso provare ... a più tardi
ricky53 ha scritto:Ciao,
bene modifica come ti ho suggerito ma ... la macro "Aggancia_Cod" farà GUAI.
Vedo ... se mi sarà possibile di sistemarla, nella speranza che sia solo lei a fare guai.
La proposta di unire le macro in una sola che fa TUTTO è applicabile ?
Sub Aggiorna_DATI()
Application.ScreenUpdating = False
Call Clear
Call Import
Call Aggancia_Cdc
Call Aggancia_cod
Call Aggancia_Neg_cod
Call Aggancia_Neg_Cod_Rep
Call FINALE
Application.ScreenUpdating = True
MsgBox "Effettuato aggiornamento dei dati", vbInformation
End Sub
Sub Clear()
Sheets("Db").Cells.ClearContents
End Sub
Sub Import()
'
' Import Macro
'
' Scelta rapida da tastiera: CTRL+i
'
ChDir "C:\Users\UTENTE\Desktop\Cdc"
Workbooks.Open Filename:="C:\Users\UTENTE\Desktop\Cdc\Cdc1.xls"
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("ricla1.xlsm").Activate
ActiveSheet.Next.Select
Range("A1").Select ' <<==== AGGIUNTA dopo di deve essere "A1"
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
ActiveSheet.Previous.Select
End Sub
Sub Aggancia_Cdc()
'
' Aggancia_Cdc Macro
'
' Scelta rapida da tastiera: CTRL+a
'
ActiveSheet.Next.Select
Range("C2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Cdc!R1C1:R215C3,3,FALSE)"
Range("C2").Select
Selection.Copy
Range("C3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Columns("C:C").ColumnWidth = 7.43
Columns("C:C").EntireColumn.AutoFit
Range("A1").Select
ActiveSheet.Previous.Select
End Sub
Sub Aggancia_cod()
'
' Aggancia_cod Macro
'
' Scelta rapida da tastiera: CTRL+b
'
ActiveSheet.Next.Select
Range("J1").Select
ActiveCell.FormulaR1C1 = "Cod"
Range("J2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],Pdc!R2C1:R134C6,6,FALSE)"
Range("J2").Select
Selection.Copy
Range("J3").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("J1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns("K:K").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.ClearContents
Range("A1").Select
ActiveSheet.Previous.Select
End Sub
Sub Aggancia_Neg_cod()
'
' Aggancia_Neg_cod Macro
'
' Scelta rapida da tastiera: CTRL+c
'
ActiveSheet.Next.Select
Range("K1").Select
ActiveCell.FormulaR1C1 = "Key1"
Range("K2").Select
ActiveCell.FormulaR1C1 = "=MID(RC[-8],8,4)&""-""&RC[-1]"
Range("K2").Select
Selection.Copy
Range("K3").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("K2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
ActiveSheet.Previous.Select
End Sub
Sub Aggancia_Neg_Cod_Rep()
'
' Aggancia_Neg_Cod_Rep Macro
'
' Scelta rapida da tastiera: CTRL+d
'
ActiveSheet.Next.Select
Range("L1").Select
ActiveCell.FormulaR1C1 = "Key2"
Range("L2").Select
ActiveCell.FormulaR1C1 = "=MID(RC[-8],5,7)&""-""&RC[-1]"
Range("L3").Select
Columns("L:L").EntireColumn.AutoFit
Range("L2").Select
Selection.Copy
Range("L3").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("L:L").EntireColumn.AutoFit
Range("L1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
ActiveSheet.Previous.Select
End Sub
Sub FINALE()
ActiveSheet.Next.Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Range("M1").Select
Range(Selection, Selection.End(xlDown)).Select
Range("M:N").Select
Selection.Copy
Range("A1").Select
ActiveSheet.Paste
Columns("M:N").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
ActiveSheet.Previous.Select
End Sub
ricky53 ha scritto:Ciao,
senza entrare troppo nei meriti del codice che si vede che è stato ottenuto con il registratore di macro ed adattato ... ti propongo quanto segue:
A) cancella tutte le tue macro e rimuovi tutti i moduli
B) Rimuovi tutti i pulsanti
C) Associa la macro "Aggiorna_DATI" ad un nuovo pulsante
D) copia il seguente codice in un nuovo modulo
E) copia anche questo codice in un nuovo modulo (diverso dal precedente)
F) ho aggiunto la macro "FINALE" che sistema un po' le cose, ho utilizzato il tuo modo di procedere
G) ricordati che va chiuso, mediante codice, il file che apri per importare i dati
Nella speranza di aver toccato nei posti giusti il tuo codice (non è stato proprio semplice ma neanche difficilissimo, c'era solo il rischio di toccare/modificare/cancellare qualche istruzione di troppo) ...
comunque PROVA e sono QUI
Si dovrebbe mettere le mani ... PESANTEMENTE nel codice ma ... non me lo chiedere.
Torna a Applicazioni Office Windows
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
Inserire add.in nella barra di avvio veloce in excel 2003 Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 4 |
Excel: problema con date se devo unirle a testi Autore: valle1975 |
Forum: Applicazioni Office Windows Risposte: 5 |
Visitano il forum: Nessuno e 18 ospiti