È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro eseguite con eccessiva lentezza dopo gli ultimi aggiornamenti

Ultimo Aggiornamento: 12/10/2023 10:43
Post: 188
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
02/10/2023 19:37

Salve a tutto il forum, non so se sia una coincidenza ma dopo gli ultimi aggiornamenti Excel le esecuzioni di alcune macro sono lentissime. Avete notato anche voi qualcosa di analogo?
All'inizio pensavo che il foglio di lavoro si fosse appesantito, ho quindi creato un file nuovo con pochissimi dati ma il problema persiste.
Ho provato anche a disinstallare ed installare Microsoft 365 ma niente di buono 😒

Microsoft 365 MSO (Versione 2309 Build 16.0.16827.20130) a 64 bit
Post: 1.149
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
ONLINE
02/10/2023 21:58

Ciao
Cosa intendi per "aggiornamenti Excel"?
Ti capita con tutti i file ovvero solo con qualcuno?
Potresti allegare un file che ti dà problemi o, almeno, il codice relativo?

Ciao,
Mario
Post: 188
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
02/10/2023 22:40

Ciao Marius44, innanzitutto, grazie per il tuo interesse.
Allego un file con una semplice macro che, data una colonna A, seguendo un criterio, riporta solo alcune sue righe nella colonna B (quella dei risultati).
Ciò che mi succede, e che non riesco a spiegarmi, è che le prime righe selezionate me le copia ed incolla nella colonna B lentamente ma, ad un certo punto, a partire da una certa data, l'esecuzione si velocizza così come dovrebbe essere e come è sempre stato.
Insomma, una velocità di esecuzione decisamente non uniforme non giustificata assolutamente dai dati nella colonna A.
Ciò che è cambiato su questo file e sul mio pc è l'installazione degli aggiornamenti Excel.
Post: 1.150
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
ONLINE
03/10/2023 07:25

Ciao
Prova mettendo Application.ScreenUpdating = False dopo la pulizia delle colonne E:G e poi
Application.ScreenUpdating = True prima dell'ultima riga della macro.

Fai sapere. Ciao,
Mario
Post: 7.369
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
03/10/2023 08:10

Ciao Melissa, è molto valido il suggerimento di Mario che saluto e toglierei anche

Application.CutCopyMode = False

negli "If" mettendolo fuori dal ciclo Next cosi si elimina solo alla fine del ciclo.

ma una cosa non mi è chiaro, quali sono i parametri di selezione per la copia, perche ho fatto un semplice filtro sulla prima tabella in base alla data e non tutti i dati vengono riportati, come puoi vedere



forse ho capito volevi 1 solo elemento per data con l'importo minore.

Ciao By Sal (8-D


se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 189
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
03/10/2023 19:35

Buonasera a tutti, ho seguito i vostri consigli modificando opportunamente il codice come mi avete suggerito ma l'esecuzione continua ad essere molto lenta, non come prima. Davvero non capisco cosa sia improvvisamente successo.

By Sal, mi sono accorta soltanto adesso che nel preparare il file esempio non ho adattato bene il codice, ora ho corretto.
Nella colonna A ogni riga rappresenta un evento verificatosi ad una certa data, ad un definito orario e con un determinato importo.
Partendo dalla prima riga in colonna A, si copieranno ed incolleranno nella colonna B, procedendo cronologicamente, tutti gli eventi per cui la distanza temporale dal precedente disti almeno 2 ore.

Ora, nell'esempio allegato, possibile che un codice così semplice, per analizzare 21 eventi, copiarne ed incollarne 18, mi ci metta adesso 31 secondi?
Io analizzo un numero di eventi pari a 3-4000, prima il mio codice impiegava qualche minuto al massimo, adesso la perdita di tempo è insostenibile.😔
P.S. Grazie Marius44 e By Sal per avermi dedicato il vostro tempo
Post: 785
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
03/10/2023 19:55

ciao, cortesemente proveresti a controllare se il file che allego è più veloce ?

Leo

LEO
https://t.me/LordBrum
Post: 1.151
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
ONLINE
04/10/2023 09:26

Ciao

@L2018
Mi sembra abbastanza veloce.

@Melissa2018
Prova a modificare la tua macro così
Sub INCOLONNAMENTO()
Sheets("INCOLONNAMENTO CON MACRO").Select
Dim I As Long'Integer
Range("E3:G10000").ClearContents
Application.ScreenUpdating = False
Range(Cells(3, 1), Cells(3, 3)).Copy
Range("E3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
For I = 4 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(I, 1) > Cells(Range("E" & Rows.Count).End(xlUp).Row, 5) Then
   Range(Cells(I, 1), Cells(I, 3)).Copy
   Cells(Range("E" & Rows.Count).End(xlUp).Row + 1, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
   'Application.CutCopyMode = False
End If
If Cells(I, 2) - Cells(Range("E" & Rows.Count).End(xlUp).Row, 6) >= Cells(1, 7) Then
   Range(Cells(I, 1), Cells(I, 4)).Copy
   Cells(Range("E" & Rows.Count).End(xlUp).Row + 1, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
   'Application.CutCopyMode = False
End If
Next I
Application.CutCopyMode = False
Application.ScreenUpdating = True
Cells(1, 5).Select
End Sub


Fai sapere. Ciao,
Mario
[Modificato da Marius44 04/10/2023 09:27]
Post: 7.372
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/10/2023 10:00

Ciao a me il file è velocissimo, e non credo sia la macro,
però io credo che sia il suo PC che ha problemi forse disco pieno, oppure Excel si sia corrotto e deve essere reinstallato, oppure in ultimo, lavora in Cloud e la velocità di internet non sia ottimale oppure ancora il cloud è pieno e trova difficoltà a lavorare.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 786
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
04/10/2023 10:04

buongiorno
per Marius e Melissa
non ho potuto seguire bene la problematica
ho scaricato l'ultimo file e restituito, ma da 89000 bytes è diventato 16000
perchè ?
ho semplicemente eliminato le righe dopo la 21, che di solito si chiamano formattazione ridondante
se sia giusto non so, certo a volte si vedono grossi file con poche righe utili e migliaia di righe predisposte ma non utilizzate

Leo

LEO
https://t.me/LordBrum
Post: 190
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
04/10/2023 10:51

Buongiorno e grazie per i vostri interventi!
Mario, ho utilizzato il codice da te suggerito ma purtroppo i tempi d'esecuzione continuano ad essere identici, ben 31 secondi.
Leo, purtroppo anche eseguendo il codice sul file da te allegato il problema persiste.
Salvatore, il mio laptop ha 61 GB liberi su 466 GB, fino ad un paio di giorni fa andava tutto benissimo. Sul mio portatile non è cambiato praticamente nulla se non aver scaricato ed installato gli aggiornamenti Excel e aver scaricato qualche file da internet (di piccole dimensioni e che non credo abbiano malware o virus).
Ho disinstallato Microsoft365 e reinstallato ma non ho risolto.
Ho un abbonamento Microsoft365 family con cui ho riscaricato ed installato l'applicazione ufficiale
(Versione 2309 Build 16.0.16827.20130) a 64 bit
[Modificato da Melissa2018 04/10/2023 10:52]
Post: 787
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
04/10/2023 10:57

Re:
Melissa2018, 04/10/2023 10:51:


Leo, purtroppo anche eseguendo il codice sul file da te allegato il problema persiste.



per essere preciso, sempre meglio, ho eliminato tutte righe dopo la 21
ho messo un contatempo nella prima riga e cliccato su ESEGUI
Tempo=0


Leo

LEO
https://t.me/LordBrum
Post: 3.548
Registrato il: 06/04/2013
Utente Master
2010
ONLINE
04/10/2023 11:31

ciao a tutti

Melissa
siamo sicuri che il tuo file è quello che hai allegato?
Non è che ci sono formule ed altri fogli, magari con eventi e quant'altro??

saluti



[Modificato da dodo47 04/10/2023 17:35]
Domenico
Win 10 - Excel 2016
Post: 191
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
04/10/2023 17:36

Buon pomeriggio caro Domenico, che bello rileggerti! 🤗
Il file allegato all'inizio della discussione era stato da me riproposto spoglio di tutti i dati sensibili, fogli, formule etc. affinché fosse più leggero dell'originale, ho dunque aggiunto solo quelle righe di dati per poter avviare l'esecuzione del codice.
Nel mio codice, prima del ciclo i c'è l'istruzione che copia la prima riga di dati della colonna A e la incolla nella prima riga vuota della colonna B (in E3), dopo inizierà la comparazione, mi sembra tutto corretto, sbaglio qualcosa? 🤔

Leo ho acquisito il video dallo schermo del mio portatile, messo in allegato, per mostrarvi la lentezza dell'esecuzione

Post: 3.549
Registrato il: 06/04/2013
Utente Master
2010
ONLINE
04/10/2023 18:31

ciao Melissa

quindi a quanto pare il tuo file contiene diversi fogli - formule e (forse) anche eventi del foglio interessato.

Fai questa prova sfruttando gli array e vedi che succede.

Fai sapere....un caro saluto

Sub INCOLONNAMENTO()
Dim mArrF() As Variant, mArrTo() As Variant, lr As Long, k As Long, indx As Long, c As Byte
Dim I As Long, s As Boolean
On Error GoTo merr
Sheets("INCOLONNAMENTO CON MACRO").Select

With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With

lr = Range("A" & Rows.Count).End(xlUp).Row
mArrF = Range("A3:C23")
k = 2
ReDim mArrTo(1 To lr, 1 To 3)
For c = 1 To 3
    mArrTo(1, c) = mArrF(1, c)
Next c

Range("E3:G10000").ClearContents
indx = 2
For I = 4 To lr
    If mArrF(indx, 1) > mArrTo(k - 1, 1) Then
        For c = 1 To 3
            mArrTo(k, c) = mArrF(indx, c)
            mArrTo(k, c) = mArrF(indx, c)
        Next c
        s = True
    End If
    
    If mArrF(indx, 2) - mArrF(k - 1, 2) >= Cells(1, 7) Then
        For c = 1 To 3
            mArrTo(k, c) = mArrF(indx, c)
            mArrTo(k, c) = mArrF(indx, c)
        Next c
        s = True
    End If
    indx = indx + 1
    If s Then
        k = k + 1
        s = False
    End If
Next I

Range("E3").Resize(lr, 3) = mArrTo

xit:
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With
Exit Sub
merr:
MsgBox Err.Number & " _ " & Err.Description
Resume xit
End Sub
Domenico
Win 10 - Excel 2016
Post: 3.550
Registrato il: 06/04/2013
Utente Master
2010
ONLINE
05/10/2023 10:02

ciao
solo un refuso di prove:

sostituisci:
mArrF = Range("A3:C23")

con
mArrF = Range("A3:C" & lr)

saluti




Domenico
Win 10 - Excel 2016
Post: 192
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
05/10/2023 22:00

Caro Domenico, sul mio laptop il tuo codice viene eseguito praticamente all'istante! 😮
Quali parole potrei mai usare, che già non ti abbia scritto in passato, per ringraziarti ancora ed ancora per il tuo aiuto?🎁🙏
Spero di riuscire a capire il motivo per cui con gli array il problema non si presenta.
Un indizio che pensi dovrei seguire per comprendere il fenomeno?
Ero sfiduciata, confesso che ero pronta addirittura a formattare il laptop pensando ad un qualche malware.
P.S. Ringrazio anche Mario, Salvatore e Leo per le attenzioni che hanno avuto per me ed il mio problema
Post: 3.551
Registrato il: 06/04/2013
Utente Master
2010
ONLINE
06/10/2023 09:56

ciao Melissa...ti pare, è sempre un piacere.

Gli array lavorano in memoria, mentre i codici normalmente lavorano sulle celle dei fogli e, se ci sono formule ed eventi, ad ogni scrittura determinano il ricalcolo dell'intero file, a meno che non vengano disattivate alcune funzionalità.

Per farla breve il mio codice scrive 1 sola volta sul file (Range("E3").Resize(lr, 3) = mArrTo), mentre il tuo scrive tante volte quante sono le righe che troverai nel gruppo COLONNA B

Se ti va fai questa prova:
- nel codice di Mario (salutoni) oppure al tuo metti all'inizio:
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With

ed alla fine
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With

vedi che succede

carissimi slauti



[Modificato da dodo47 06/10/2023 11:21]
Domenico
Win 10 - Excel 2016
Post: 193
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
06/10/2023 22:40

Caro Domenico, mi sono presa tempo prima di risponderti per fare varie prove, questo tuo ultimo suggerimento purtroppo non migliora il tempo d'esecuzione del codice, che rimane sui 30 secondi come per il mio codice iniziale.
Solo il tuo prezioso codice con gli array, che ho adattato per lavorare sui miei dati reali, mi ha salvata. 🙏
Ma credo sia successo qualcosa di strano sul mio laptop anche perché, durante gli ultimi test che ho fatto, mentre riportavo
i dati sensibili che mi servono mi è uscito questo messaggio che, cercando sul web non sembra niente di buono.
Per adesso mi limiterò a superare questi problemi con il tuo codice, quando avrò più tempo formatterò tutto.
Grazie ancora 🎁






[Modificato da Melissa2018 06/10/2023 22:40]
Post: 788
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
06/10/2023 23:43

Re:
Melissa2018, 06/10/2023 22:40:


...... mi è uscito questo messaggio che, cercando sul web non sembra niente di buono.


Ciao
il messaggio di errore che riporti non necessariamente riconduce a malware, anzi, se devo rifarmi alla mia esperienza direi che si tratta di cose più semplici.
(Ma l'hai fatta una scansione antivirus ? Hai per caso attivi i punti di ripristino ? in Office esiste un'opzione Ripara/Ripristina)
La risposta certa sul problema te la potrebbe dare il TaskManager di Windows attivato nel preciso istante della comparsa dell'avviso di errore, e dopo aver evidenziato il Tab Processi, e messo i processi in ordine alfabetico di nome.eseguibile cliccando su "nome immagine".
la finestra così ottenuta, se non sai interpretarla potresti fotografarla e postarla qui per intero, nella speranza che io riesca a interpretarla destreggiandomi tra chissà quanti nomi (ecco perchè l'ordine alfabetico).
E quindi non escludo di riuscire ad indicarti il colpevole.
Oltretutto potrebbe essere l'occasione per snellire il tuo sistema, ma a mio avviso giammai formattare per un simile motivo.

Leo

Taskmanager = taskmgr.exe
o
CTRL-ALT-CANC
[Modificato da L2018 07/10/2023 10:44]

LEO
https://t.me/LordBrum
Post: 7.373
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
07/10/2023 08:06

Ciao Melissa, è una prova visto che hai dati sensibili, fai una cosa, vai nel tuo foglio Originale, poi nel menu File->Opzioni- e metti una spunta alla riga evidenziata, nelle celle verranno mostrate le formule applicate, vorrei vedere quali sono le formule, questo il percorso



fai un immagine di poche righe, nel caso che il dato sensibile sia ancora visibile nell'immagine cerca di cancellarlo, interessa vedere nelle celle, quale potrebbe essere la formula che impiega molte risorse per rallentarti l'esecuzione.

anche perche quel messaggio può stare ad indicare che prende dati da un file condiviso oppure che sul PC hai aperto anche altri file, e la formula lo aspetta chiuso.

perche mi sembra strano che la macro di Domenico che saluto poi ti faccia quello scherzo, visto che blocca tutti i calcoli e gli eventi, forse avrebbe dovuto bloccare anche gli alert?

prova prima di tutto ad inserire ad inizio e fine della macro, cosi non dovrebbe uscire quel messaggio

Application.DisplayAlerts = False

Application.DisplayAlerts = True


Ciao By Sal
[Modificato da by sal 07/10/2023 08:09]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.552
Registrato il: 06/04/2013
Utente Master
2010
ONLINE
07/10/2023 09:59

Ciao Melissa

se hai la possibilità, fai un test del tuo file su un altro computer e vedi che succede.

Tra l'altro, il mio codice non copia nulla e gli appunti, di conseguenza, restano vuoti.


saluti

ps: possibile che non riesci a sottoporre il tuo file senza dati sensibili??



[Modificato da dodo47 07/10/2023 10:56]
Domenico
Win 10 - Excel 2016
Post: 789
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
07/10/2023 17:25

salve
aggiornamento un po' tardivo
quando si vuole vedere l'elenco dei processi attivi si usa il taskmanager ma questa è una finestra difficile da mettere tutta in uno screenshot
per ottenere la lista completa è più comodo dal prompt dos digitare TASKLIST e per ottenere la lista ordinata TASKLIST | sort > task.txt
dopo di che si puo' pubblicare il file come normale file di testo

tanto dovevo

Leo
[Modificato da L2018 08/10/2023 09:10]

LEO
https://t.me/LordBrum
Post: 194
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
07/10/2023 21:51

Buonasera a tutti!

Leo, quel messaggio ha iniziato ad apparire negli ultimi giorni, mai prima, e noto che non mi si presente sempre. Adesso, non appena mi si paleserà nuovamente farò come mi hai suggerito e allegherò il file .txt, grazie!
(Dopo aver letto il tuo intervento avevo cercato sul web, avrei eseguito il prompt da amministratore per poi tasklist >C:\servicelist.txt)


Salvatore, ho fatto come mi hai suggerito circa la spunta per la visualizzazione delle formule e, come puoi vedere, il file "leggero" (lo stesso che ho allegato nei precedenti messaggi), che presenta il medesimo problema di lentezza nell'esecuzione dei codici del file originale (tranne per il codice di Domenico che va come una scheggia), non ha alcuna formula ma solo quei codici e quelle poche righe di dati.
Grazie per le righe di codice.


Domenico, però il file "leggero" che ho postato qui è spoglio della mole di dati e delle formule che solitamente utilizzo, ho riempito le righe a mano e riproposto i codici ma presenta il medesimo problema di lentezza. Ho già iniziato ad adattare quel tuo codice con gli array su tantissimi altri file 🤗
Domani, come mi hai consigliato, eseguirò il codice sul medesimo file "leggero" sul desktop di mia madre
[Modificato da Melissa2018 07/10/2023 21:56]
Post: 195
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
11/10/2023 18:58

Buonasera a tutti, volevo solo chiudere questa discussione informandovi che tutti i miei file Excel funzionano senza problemi su ogni altro desktop provato in questi ultimi due giorni. Il problema è il mio laptop probabilmente. Poiché avevo l'idea di prenderne uno nuovo (questo attuale è del 2019), ma tergiversavo da tempo, ho provveduto all'ordine oggi. Questo con problemi verrà dunque formattato.
Grazie davvero a tutti voi che siete intervenuti 🤗
Post: 795
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
11/10/2023 19:30

benissimo
cmq per me un pc del '19 è un neonato
formattandolo, se possibile,
evita i programmi ad esecuzione automatica e in background
evita i punti di ripristino
evita telemetrie varie e invadenza della privacy
svuota sempre le cache
non ammucchiare gli antivirus, basta uno

Ciao

Leo

LEO
https://t.me/LordBrum
Post: 196
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
12/10/2023 10:43

Grazie Leo, seguirò i tuoi preziosi consigli.
Vota: 15MediaObject5,001727 17
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 17:18. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com