Excel Forum Per condividere esperienze su Microsoft Excel

Userform lenta

  • Messaggi
  • OFFLINE
    VincenzoCambareri
    Post: 6
    Registrato il: 29/12/2016
    Città: REGGIO CALABRIA
    Età: 43
    Utente Junior
    2007, 2010
    00 01/06/2017 10:04
    Buongiorno a tutti,
    premetto che non sono un programmatore e quel poco che sono in grado di fare con vba è dato da letture, scopiazzamenti di pezzi di codice adattati alle mie esigenze e soprattutto prove su prove senza alcuna base tecnica ne teorica(non ho mai studiato informatica)

    Dopo la doverosa premessa passo al mio problema.
    sto creando un gestionale per la mia azienda utilizzando excel.
    So che lo strumento più adatto sarebbe Access ma in questo momento non possiamo permetterci investimenti neanche piccoli, abbiamo tuttavia l'esigenza di velocizzare alcuni processi che riguardano la gestione di anagrafiche di aziende e dipendenti e i relativi corsi di formazione a cui questi dovranno partecipare negli anni.

    Ho realizzato inizialmente un gestionale gestibile direttamente dalle pagine in excel (se vorrete allegherò anche quello) che però ogni tanto si inceppava ma soprattutto considerando gli utenti medi molte cose non erano facilmente intuibili.

    Ho dunque pensato di utilizzare le userform riscrivendo per filo e per segno quanto fatto nella precedente versione.

    Il punto è che utilizzando le userform, non ne capisco il motivo, le pagine in cui si inseriscono i dati (soprattutto DBAPP, AVANZAMENTO e DBCONFERIMENTI) risultano lentissime sia in fase di inserimento dei dati al click del bottone dell'userform, sia entrando direttamente dentro la pagina e provando a modificare i dati di una cella.

    Riuscite ad aiutarmi per velocizzare il tutto?

    Allego il file privo di dati sensibili e di password.

    Grazie
  • OFFLINE
    dodo47
    Post: 1.367
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 01/06/2017 10:27
    ciao
    ELIMINA (non copia) quei fogli e li ricrei, tanto hanno solo intestazioni.

    Fossi in te eliminerei anche calendario (magari fai un copia incolla valori temporaneamente su altro file per non riscrivere il tutto).

    Non entro nel merito del resto in quanto mi sembra molto "pasticciato"

    Infine, non te la prendere, ma si concilia male:

    "...premetto che non sono un programmatore e quel poco che sono in grado di fare con vba è dato da letture, scopiazzamenti di pezzi di codice adattati alle mie esigenze e soprattutto prove su prove senza alcuna base tecnica ne teorica(non ho mai studiato informatica)..."


    con:

    "...sto creando un gestionale per la mia azienda utilizzando excel. ..."

    saluti
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    VincenzoCambareri
    Post: 6
    Registrato il: 29/12/2016
    Città: REGGIO CALABRIA
    Età: 43
    Utente Junior
    2007, 2010
    00 01/06/2017 12:52
    Ciao grazie per la risposta.

    A dire il vero avevo già provveduto a fare quanto mi hai suggerito, le pagine infatti sono "nuove" e non copiate.
    Il punto è che non appena inserisco 2.3 righe di dati comincia a rallentare parecchio.

    Per quanto riguarda l'ossimoro tra il mio non saper fare ed il mio voler fare capisco possa essere un controsenso ma ho necessità di "gestire" più di 150 clienti in una provincia vasta dal po' al confine con la toscana e son da solo a far tutto ciò.

    Se potessi anche darmi una mano sul "pasticciaccio" te ne sarei grato

    Grazie ancora
  • OFFLINE
    dodo47
    Post: 1.369
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 01/06/2017 18:20
    Ciao
    non intendevo esprimere un concetto di "ossimoro" né mettere in discussione la tua volontà di fare, ma semplicemente dire che non va bene non avere un minimo di conoscenze di base quando si affronta un gestionale di tale portata, e ne stai constatando i risultati.

    Comunque il grosso problema del tuo file è la quantità di formule e la loro struttura.

    Fai questa prova:
    menu file > opzioni > formule > opzioni di calcolo metti manuale
    poi prova ad inserire quello che vuoi dove vuoi e constaterai che è un fulmine. Ricordati di rimettere in automatico.

    Ti faccio un esempio per spiegarmi meglio: tuo foglio DBAPP, è vuoto, eppure se provi a scriverci qualcosa, ci mette una vita a recepirlo. Il motivo è presto detto: quel foglio, fino a riga 5.000 e col. Y (quindi per 125.000 celle) è la base di riferimento di una mole di celle presenti in diversi fogli del tuo lavoro.
    Prova in tale foglio DBAPP a metterti in una cella vuota qualsiasi e poi dal menu formule, clicca su "individua dipendenti" e fai doppio click sulla punta della freccia che appare; come potrai notare c'è l'elenco di tutte le celle e di tutti i fogli cui quella singola cella fa riferimento, di conseguenza vengono ricalcolate tutte quelle formule prima che il dato immesso sia disponibile.

    Spero di aver chiarito.

    Quel documento andrebbe rifatto completamente sostituendo quasi tutte le formule con una gestione in vb.

    Questo è il mio modesto parere.

    Ora se in nessuno di quei fogli scrivi manualmente, cioè tutto quello che devi scrivere lo inserisci tramite le userform, allora potresti disattivare il calcolo automatico all'apertura delle varie userForm e riattivarlo alla chiusura; in questo modo il ricalcolo verrebbe fatto una sola volta e non ogni volta che inserisci un dato in una cella qualsiasi.

    saluti


    [Modificato da dodo47 01/06/2017 19:00]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    VincenzoCambareri
    Post: 7
    Registrato il: 29/12/2016
    Città: REGGIO CALABRIA
    Età: 43
    Utente Junior
    2007, 2010
    00 05/06/2017 11:14
    Ammetto di non essere in grado da solo di sostituire tutte le formule (o quasi) con la gestione vb. Però d'altra parte non posso inserire manuale e automatico in apertura e chiusura perchè non sarò l'unico a lavorare sul file.

    :(
  • OFFLINE
    dodo47
    Post: 1.376
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 05/06/2017 11:37
    Non lo devi fare manualmente, ad inizio e fine di ciascuna macro (fermo restando quanto precisato sull'input dei dati):

    Sub TuaSub()
    Application.Calculation = xlCalculationManual

    'tue istruzioni....

    Application.Calculation = xlCalculationAutomatic
    End Sub

    Ti ricordo che è bene inserire una gestione di errori che, nel caso, ripristini comunque il automatico il calcolo.

    saluti
    Domenico
    Win 10 - Excel 2016