Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Codice VBA eseguito molto lentamente

Ultimo Aggiornamento: 26/08/2019 07:51
Post: 36
Registrato il: 09/09/2017
Città: SASSARI
Età: 64
Utente Junior
2007
OFFLINE
21/08/2019 18:18

Buonasera.
Volevo automatizzare gli aggiornamenti di una database di oltre 15.000 riche e 96 colonne.
Dopo aver importato i dati dal file di aggiornamento, mi occorre aggiornare le FORMULE delle prime 4 colonne.
Sono rimasto sorpeso dalla esasperante lentezza (ci metterebbe oltre un'ora) per eseguire questo codice:

Range("A2").Copy
For x = 3 to UltimaRiga (appositamente calcolata precedentemente)
Cells(x, 1).PasteSpecial xlPasteFormulas
Next x

La banale formula che deve ricopiare in Ax è:
=DATA.VALORE(Lx) - dove la data in Lx è espressa come data/ora (21/08/2019 18.05.

Se eseguo manualmente l'operazione da interfaccia utente (doppio clic su angolo basso a destra di A2) ci mette pochi secondi a ricopiare in basso la formula fino alla cella 15.000

Nella colonna B ho invece la formula semplice: In cella By =My
Qui il codice sottostante scorre agevolmente

Range("B2").Copy
For y = 3 to UltimaRiga (appositamente calcolata precedentemente)
Cells(y, 2).PasteSpecial xlPasteFormulas
Next y

Suggerimenti?
Post: 2.344
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
21/08/2019 18:43

prova a mettere il calcolo manuale per poi ripristinarlo alla fine:

Application.Calculation = xlCalculationManual
For x = 3 to UltimaRiga (appositamente calcolata precedentemente)
Cells(x, 1).PasteSpecial xlPasteFormulas
Next x
Application.Calculation = xlCalculationAutomatic

saluti



Domenico
Win 10 - Excel 2016
Post: 36
Registrato il: 09/09/2017
Città: SASSARI
Età: 64
Utente Junior
2007
OFFLINE
21/08/2019 20:30

Funziona.
Grazie mille
Post: 34
Registrato il: 13/08/2015
Città: COMO
Età: 60
Utente Junior
excel 2016
OFFLINE
23/08/2019 23:26

Re:
eltorpe, 21/08/2019 18.18:

... mi occorre aggiornare le FORMULE delle prime 4 colonne.
....
Suggerimenti?



Ciao, le formule mi pare di aver capito che sono in A2:D2, allora prova così:
Sub CopiaFormule()
    Range("A2:D2").Copy
    Range("A3:A15000").PasteSpecial Paste:=xlPasteFormulas
    Application.CutCopyMode = False
End Sub

Post: 5.742
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
24/08/2019 07:12

Lentezza esecuzione macro
Ciao a tutti, per la verità io sono contrario alle formule sul foglio, proprio per il rallentamento che avviene quando il foglio è imbottito di formule.

tranne se non devo vedere immediatamente il risultato del cambiamento di una cella relativa a molti calcoli, ed anche li ho le mie perplessità.

Sono più propenso a inserire direttamente nella cella il calcolo fatto dal VBA.

anche perche a volte per avere un risultato con le formule si creano diverse colonne di appoggio aumentando a dismisura le formule presenti nel foglio.

Logico che lo dico da parte di chi usa il VBA, chi non lo usa deve necessariamente e forzatamente usare le formule.


Ciao By Sal [SM=x423051]





se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 37
Registrato il: 09/09/2017
Città: SASSARI
Età: 64
Utente Junior
2007
OFFLINE
24/08/2019 09:21

Buongiorno.
Ringrazio tutti per i suggerimenti.
Ho premesso che lavoro per automatizzare gli aggiornamenti.
Il foglio non è pieno di formule.
La banale =DATA.VALORE che esite da quando utilizzo "manualmente" il foglio, rallentava a dismisura in fase di formattazione della data.
Con application.calculatione = xlManual restituisce il numero intero che sta alla base della data e funziona fluidamente.
Pure io sto dalla parte del codice, ma molti non vedono affatto male l'utilizzo misto di formule e codice.
Saluti.
Post: 5.744
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
26/08/2019 07:51

Lentezza macro
Ciao ma anche io non sono contrario alle formule, anche se non so usarle molto bene.

Ma sono contrario al fatto che sapendo di usare 15000 righe io spalmo di formule a priori il foglio di 15000 righe mentre al momento ne uso solo 1000.

mentre con una macro quando aggiungo una riga nuova faccio inserire le formule che servono sia con copia incolla che farle scrivere dalla macro.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 21:16. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com