none
Macro excel vba con molteplici iterazioni RRS feed

  • Domanda

  • Buongiorno

    ho un problema nell'utilizzo di macro vba excel

    possiedo 2 pc:

    - Sony Vaio VPCZ2 , intel i7 2620M 2.7GHz , 8GB Ram , 64bit, 4 thread (storico pc posseduto dal 2011)

    - Dell AIO 7470 , intel i7 9700 , 3.0 Ghz, 16 GB Ram, 64 Bit, 8 thread (nuovo acquisto da utilizzare a casa)

    Su entrambi ho installato Office 365 con Windows Pro

    Periodicamente ho necessità di utilizzare una macro corposa in cui sono presenti molteplici iterazioni. Il tempo di effettuazione con il PC Vaio è di circa un'ora , moltiplicata per circa 250 addendi. In totale 250 h. Per l'utilizzo con Sony Vaio ho inserito dei comandi di WAIT per alleggerire il carico termico e gestire la cache. Non ho mai avuto e non ho tuttora alcun problema, tanto che anche attualmente la sto utilizzando.

    Visto la  ormai considerevole "età" e l'utilizzo passato del vaio, pensando anche di accorciare i tempi, ho deciso di acquistare il Dell ( in effetti, le pochissime volte che funziona, impiega circa il 50-60% del tempo originale).

    In realtà , praticamente sempre, non riesce a compiere nemmeno 1 dei 250 cicli, non recepisce il comando di interruzione (ESC) fornendo il messaggio "il sistema non risponde" e looppa per un periodo praticamente infinito (poichè eseguo durante il codice salvataggi periodici, ho constatato che ieri dopo la interruzione forzata operata dopo tre ore di run , non era avanzato di nulla praticamente).

    Il Dell è verificato, testato dalla casa madre e funziona in modo corretto, i driver sono aggiornati, windows è aggiornato.

    Qualche suggerimento da mettere in campo per risolvere questo problema?

    grazie in anticipo

    martedì 14 gennaio 2020 14:00

Tutte le risposte

  • La prima cosa da fare è provare il Dell escludendo i salvataggi, se così funziona bene significa che devi trovare il modo di attendere la fine dei salvataggi.
    Domanda: salvi su hd o ssd ?
    martedì 14 gennaio 2020 16:14
  • Salvo su sad su entrambi i Pc I salvataggi vengono fatti dopo ciascuno degli otto step di cui è costituito uno dei 250 addendi. Provo la esclusione dei salvataggi sul Dell Grazie
    martedì 14 gennaio 2020 20:10
  • Ovviamente ssd scusate
    martedì 14 gennaio 2020 20:11
  • Provato, ma non cambia.

    Quello che mi fa impazzire è che non si comporta sempre allo stesso modo.

    Nel test una volta funziona, lo interrompo e lo faccio ripartire e non funziona più.

    Potrebbe essere che debba aumentare il WAIT alla fine degli step per dargli modo di terminare tutte le operazioni e partire in una situazione scarica? 


    mercoledì 15 gennaio 2020 07:04
  • Non conoscendo il codice ti posso solo dire di provare, hai disabilitato l'aggiornamento dei fogli durante i calcoli con Application.ScreenUpdating = False ?
    mercoledì 15 gennaio 2020 07:11
  • No, non avevo bloccato l’aggiorn perché nega pochissimi Provo stasera ad aumentare da 45 a 60 secondi il Wait e a bloccare l’aggiornamento fino alla fine dello step Speriamo Per il momento grazie
    mercoledì 15 gennaio 2020 08:45
  • Una descrizione di come lavora il codice sarebbe utile, lavora solo in memoria ? utilizza dati nei fogli ? hai utilizzato DoEvents nei tuoi loop per permettere lo stop col tasto Esc ?
    mercoledì 15 gennaio 2020 10:14
  • Prima come lavora il codice:

    prende i dati da due files (qualche migliaio per ogni item) e li memorizza in vettori. Compie tutti gli otto step del calcolo di un item e poi scrive il risultato ( tipicamente un ventina di dati) su un foglio excel.

    Ripete la operazione per il ciclo di 250 items.

    Il salvataggio si effettua periodicamente in ogni step ad evitare di perdere i calcoli effettuati se mai dovesse succedere qualcosa (il processo era ed è molto lungo).

    I WAIT di 45 secondi sono inseriti , almeno 3, all'interno di ognuno degli 8 step di un addendo (per smaltire energia termica e gestire meglio la cache)

    Non ho utilizzato il DoEvents , probabilmente perchè prima non ne ho ravvisato la necessità visto che con il VAIO il pb non si era posto

    La prova:

    Ho fatto quello che avevo scritto ieri (WAIT a 60 e salvataggio alla fine dello step ) e la situazione è migliorata, nel senso che in 4/5 volte ha completato un paio di step (dopo ho interrotto). In una no.

    Sempre non recepisce la interruzione attraverso Esc, ma lì come mi hai suggerito potrei inserire il DoEvents.

    Mi sembra quasi che sia un pb di eccessiva velocità, anche se rabbrividisco all'idea.

    giovedì 16 gennaio 2020 13:36