RICHIESTA DI AIUTO,
Una decina di anni fa, i vari Anthony47, Flash etc mi hanno aiutato ( direi quasi fatto del tutto) un programmino utile su excel per la gestione di un elenco di dati esterni al file (che si aggiornavano via via). Via via ho modificato qualcosa ed ora , forse anche complice il passaggio dal vecchio excel 2007 ad excel 2016 mi da problemi, nel senso che si blocca oppure ci mette 15 minuti invece di 1 minuto ad aggiornare il tutto.Posto il file .
Mi si blocca qui dove evidenziato in rosso. allego link su We transfer del file esempio
https://we.tl/t-YIosVDfrQ5
Sub Compila()
Application.ScreenUpdating = False '<<<< evita l'aggiornamento schermate (sfarfallio)
Application.Calculation = xlManual '<<<< ferma il calcolo e velocizza la macro
Set Ws1 = Worksheets("RIEPILOGO ORDINI")
Set Ws2 = Worksheets("INCOLONNA")
Set Ws3 = Worksheets("PARTICOLARI")
Set Ws4 = Worksheets("COMMERCIALI")
UC1 = Ws1.Cells(1, Columns.Count).End(xlToLeft).Column
Ws2.Range("A2:Z10000").Clear
Ws3.Cells.Clear
Ws4.Cells.Clear
For CCR = 1 To UC1 - 4 Step 20
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Ws1.Range(Ws1.Cells(2, CCR), Ws1.Cells(UR1, CCR + 19)).Copy
Ws2.Select
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & UR2).Select
ActiveSheet.Paste
Next CCR
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR2 = UR2 To 1 Step -1
If Ws2.Range("C" & RR2).Value = 0 Or Ws2.Range("B" & RR2).Value = "Ins." Or Ws2.Range("C" & RR2).Value = "" Then Rows(RR2).Delete
If RR2 > 5 And Ws2.Range("B" & RR2).Value = "POS" Then Rows(RR2).Delete
Next RR2
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR2 = 2 To UR2
If Val(Ws2.Range("D" & RR2)) >= 1 And Val(Ws2.Range("D" & RR2)) <= 199999 Then
Ws2.Range("A" & RR2 & ":E" & RR2).Copy Destination:=Ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Else
Ws2.Range("A" & RR2 & ":E" & RR2).Copy Destination:=Ws4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next RR2
Ws2.Range("A1:E1").Copy Destination:=Ws3.Range("A1")
Ws2.Range("A1:E1").Copy Destination:=Ws4.Range("A1")
Application.Calculation = xlCalculationAutomatic '<<<< ripristina il calcolo
Application.ScreenUpdating = True '<<<< ripristina l'aggiornamento schermate
End Sub