Flash30005 ha scritto:Secondo me dovresti chiarire quando vorresti aggiornare e quando devi evitare di aggiornare nuovamente
Il file funziona in questo modo:
1. una macro apre il file elenco, controlla nella colonna A qual'è il primo numero progressivo disponibile e inserisce nel file CB-TECH nella cella H3 il numero.
2. La macro "AggiornaELENCO", al momento, fa un controllo del tipo: se in B!&= c'è scritto "0" o "A" allora esegui la macro Aggiorna altrimenti no
3. La macro aggiorna copia alcuni dati dal file CB-TECH nel file Elenco.
4. Quello che succede adesso facendo partire questa macro:
- Codice: Seleziona tutto
Sub AggiornaELENCO()
If Sheets("Ref").Range("B160") = 0 Or Sheets("Ref").Range("B160") = "A" Then
Call Aggiorna
Else
MsgBox ("Dati gia' caricati")
End If
End Sub
Sub Aggiorna()
Dim WB_OUT As Workbook
Dim WS1 As Worksheet, WS2 As Worksheet
Dim UR As Long, Anno As String
Application.ScreenUpdating = False
nome = ThisWorkbook.Name
ChDir "G:\OFFERTE\ELENCO"
Workbooks.Open Filename:="G:\OFFERTE\ELENCO\Elenco.xls"
Set WB_OUT = ActiveWorkbook
Anno = Format(Year(Date), "0000")
Set WB_OUT = ActiveWorkbook
Anno = Format(Year(Date), "0000")
UR = Sheets(Anno).Range("A" & Rows.Count).End(xlUp).Row + 1
Windows(nome).Activate
Set WS1 = Sheets("QGL10.03b"): Set WS2 = Sheets("Riepilogo")
' H3-I3 su "A..-B.." - numero/anno OFFERTA
WS1.Range("H3:I3").Copy
WB_OUT.Sheets(Anno).Cells(UR, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' D1 su "C.." - Codice Progetto
WS2.Range("D1").Copy
WB_OUT.Sheets(Anno).Cells(UR, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' G1 su "D.." - Data
WS2.Range("G1").Copy
WB_OUT.Sheets(Anno).Cells(UR, 4).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' C2 su "E.." - Denominazione
WS2.Range("D2").Copy
WB_OUT.Sheets(Anno).Cells(UR, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' G2 su "F.." - Località
WS2.Range("G2").Copy
WB_OUT.Sheets(Anno).Cells(UR, 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' K14-K17 su "G..-J.." Tabella contatti
WS2.Range("K14:K17").Copy
WB_OUT.Sheets(Anno).Cells(UR, 7).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.ScreenUpdating = False
Windows("Elenco.xls").Activate
ActiveWorkbook.Save
ActiveWindow.Close
MsgBox "La copia dei dati è stata effettuata"
End Sub
è che se per caso io lancio più volte la macro AggiornaELENCO, i dati da copiare vengono copiati più volte. Visto che ho associato la macro ad un tasto può capitare che mi dimentico di averlo premuto e allora mi trovo nel file elenco più righe uguali.
Quello che serve sarebbe un controllo da fare nella colonna A del file elenco che verifica se i dati sono già stati copiati o meno. La cella principale, sulla quale si può fare questo controllo è H3 nel foglio QGL10.03b del file CB-TECH corrispondente alla colonna A del file elenco.
Forse così sono riuscito a spiegare meglio.
Grazie per la pazienza e scusatemi se non sono stato più chiaro prima.
Ciao