Condividi:        

Gestionale magazzino con più di mille articoli

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: Gestionale magazzino con più di mille articoli

Postdi Anthony47 » 04/09/19 23:21

Quello che dici mi fa pensare che "il prezzo" a cui fai riferimento e' quello di colonna K, non M (come avevo adottato io).
Devi quindi modificare, nel codice che ti ho proposto, la riga dLayout = Array(2, 11, 1, 12) '<<< Le colonne di Articolo, Fornitore, Data, Prezzo in
Codice: Seleziona tutto
dLayout = Array(2, 11, 1, 9)   '<<< Le colonne di Articolo, Fornitore, Data, Prezzo


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: Gestionale magazzino con più di mille articoli

Postdi primal80 » 14/09/19 18:51

Salve
ho apportato le modifiche così come suggerito
Purtroppo a 5500 movimenti (due mesi circa) il file si è rallentato di nuovo
ci sarebbe qualche ulteriore modifica che possa velocizzarlo?
primal80
Utente Junior
 
Post: 11
Iscritto il: 13/08/19 23:10

Re: Gestionale magazzino con più di mille articoli

Postdi Anthony47 » 15/09/19 00:53

Non vedo la relazione tra quanto fatto ultimamente (una query, se non sbaglio) e il rallentamento di cui parli.

Ripeto che 5000 righe per excel sono piccole quantita' di dati; devi avere quindi qualche situazione che rallenta il lavoro.
Pubblica un file dimostrativo e spiega quali sono le modalita' operative in cui il rallentamento si manifesta, e vedremo di trovare il collo di bottiglia.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Gestionale magazzino con più di mille articoli

Postdi Anthony47 » 18/09/19 23:45

Ho guardato il codice della tua Sub INSERIMENTO_DATI (perche' e' quando attivi questa macro che va lento, vero?).

La macro e' palesemente un collage di macro registrate, che hanno il difetto di non essere compilate pensando alla velocita' di esecuzione.
Ad esempio, le righe
Codice: Seleziona tutto
    Range("Riga_dati").Select
    Selection.Copy
   
    ActiveSheet.Range("A1").Select
    ActiveCell.Range("ASTERISCO").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
Debug.Print "A_" & Format(Timer - myTim, "0.000")
   
    'ActiveSheet.Paste
    'Application.CutCopyMode = False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
   
Range("Riga_dati").Copy
Cells(Rows.Count, Range("asterisco").Column).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

potrebbero essere condensate (mantenendo la stessa flessibilita') in
Codice: Seleziona tutto
Range("Riga_dati").Copy
Cells(Rows.Count, Range("asterisco").Column).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Non si tratta di un miglioramento estetico ma prestazionale, avendo eliminato tutte le operazioni di spostamento e di selezione delle celle.

Ma non e' questo il collo di bottiglia, che invece e' rappresentato dalle 6300 righe di formule su foglio DescrizioneArticoli, colonne K:O
Se riesci a mettere le formule solo sulle righe che contengono in colonna B una "descrizione" secondo me il problema dovrebbe essere risolto

Credo che il contenuto di foglio DescrizioneArticoli sia abbastanza statico, nel qual caso potresti pensare di popolare le sue formule (di colonne K:O) all'apertura del file, modificando come segue il codice della Sub Workbook_Open (gia' presente nel modulo vba ThisWorkbook /QuestaCartellaDiLavoro):
Codice: Seleziona tutto
Private Sub Workbook_Open()
Sheets("Dati").Range("A1") = Int(Now)
With Sheets("Descrizione articoli")
    .Range("K13:O10000").ClearContents
    .Range("K12:O12").Copy .Range("K13").Resize(.Cells(.Rows.Count, "B").End(xlUp).Row +100, 1)
End With
End Sub

In questo modo, tutte le volte che apri il file inserirai formule per tutte le righe con Descrizione non vuota + 100 righe di riserva; ovviamente questo non sarebbe adeguato se nel corso di una sessione di lavoro il contenuto di foglio DescrizioneArticoli venisse ampliato per oltre 100 righe (mancherebbe il contenuto di colonna K:O sulle voci aggiunte oltre le 100, fino alla prossima apertura file)

Prova questa modifica (la modifica della Sub Workbook_Open); salva il file, chiudi e riaprilo.
Controlla cosi' la velocita' di lavoro e ragiona se le formule cosi' inserite (sulle righe popolate piu' 100 righe per ampliamento) possano essere un problema.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Gestionale magazzino con più di mille articoli":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti