Tabella riassuntiva condizionata



  • Tabella riassuntiva condizionata
    di Andales (utente non iscritto) data: 23/04/2014 23:15:53

    Ciao,
    Sono nuovo nel forum, quindi saluto tutti e mi presento:
    Sono andrea della provincia di treviso.

    Sto lavorando sempre piu' a contatto con excel, e mi sto appassionando a questo programma ed alle sue molteplici possibilita'.

    Mi sono imbattuto in un problema che non sono ancora riuscito a risolvere anche facendo numerose ricerche su internet, e dalle varie ricerche sono capitato su questo forum che mi ha aperto ad un mondo inaspettato... La programmazione al di la delle formule.

    Provo a proporvi il mio problema e vediamo se qualcuno riesce a mettermi sulla giusta strada.

    Il problema che sono riuscito a risolvere solamente in parte e':

    ho una tabella pienissima di dati (una matrice di lavorazioni), che giornalmente aggiorno.
    questa tabella e' cosi' strutturata:
    Colonne divise in 4 sezioni: descriz. Articolo, tipo lavoraz., quantita' programmata, quantita' lavorata)e queste esplodono in:

    Cod. / art. /// L1 / L2 / L3 / L4 /// wk17 / wk18 /// lun / mar / mer / giov.

    ogni riga poi contiene un articolo, con delle "x" sotto ai reparti nei quali l'articolo passa.

    ora vorrei creare una tabella in un nuovo foglio, che si chiami "reparto 1" che raggruppi solamente gli articoli che passano nel reparto 1, quindi L1 ed L2, e che abbiano una richiesta di pezzi nelle settimane pianificate (wk 17 e wk 18), copiandomi tutta la riga.

    sono riuscito con una serie di formule nel foglio "reparto 1", pero' non riesco ad eliminare le righe "vuote", che mi si presentano appunto come righe vuote!

    spero di essermi spiegato, e se cosi' non fosse domattina vedo di allegare un file piu' esplicativo.

    grazie a tutti quelli che risponderanno.



  • di Textomb data: 24/04/2014 09:31:16

    La spiegazione è abbastanza chiara. Ma se alleghi un esempio con lo scenario che vorresti ottenere, sarebbe molto più facile provare ad aiutarti.



  • di Andales data: 24/04/2014 09:36:02

    ho allegato il file di esempio!
    il foglio "reparto 1" e' quello che ho cercato di ottenere, ma come vedi, mi riporta anche le righe vuote, che non centrano con le lavorazioni che passano per il reparto, o che non hanno quantita' lavorate!



  • di Andales data: 24/04/2014 09:39:05

    considera poi che per ogni reparto dovro' avere il foglio riassuntivo!
    quindi nel reparto 1 si eseguono le lavorazioni 1/2/5/6
    nel reparto 2 le lavorazioni 3/4
    nel reparto 3 le lavorazioni 7/8/9
    nel reparto 4 le lavorazioni 10

    ovviamente non appena trovato il sistema per creare il primo, gli altri vengono di conseguenza!



  • di Andales data: 24/04/2014 11:39:35

    p.s. le colonne verdi, quando trovo la soluzione al problema in oggetto, diventeranno:
    nella matrice (foglio su cui lavorero'), moltiplicate x 10 (una ogni giorno lavorativo delle 2 settimane), e nel foglio di reparto, sara' un riepilogo, che va a sommare i valori lavorati di ogni giorno restituendo il totale!
    questo e' il risultato che vorrei ottenere!



  • di Textomb data: 24/04/2014 17:46:22

    ho visto il tuo file di esempio.
    Il foglio Matrice mi pare un pò troppo ricco di dati. Così fatto risulta diffice da leggere ed analizzare.
    C'ho messo un pò di tempo per capire come andavano letti i valori e non ti nascondo che ad un tratto mi sono pure perso. Sicuramente è dovuto al fatto che non è il mio mestiere.
    Non ho capito infatti da dove si parte e dove si vuole arrivare. Cosa vuoi gestire e quali sono le informazioni che serve manipolare ed i risultati da tenere sotto controllo.
    Mi spiace ma così mi risulta molto difficile aiutarti. Almeno per quanto mi riguarda.
    In linea del tutto generale, però, mi permetto di suggerirti che, se vuoi ottenere in un altro foglio la sintesi dei vari reparti, prelevando i dati dal foglio matrice, senza che però si vedano le righe vuote, non puoi operare come hai fatto.
    Potresti filtrare solo le righe con i dati ed eliminare le righe vuote. Ma non credo che sia questo il tuo obiettivo.
    Certamente una routine in VBA aiuterebbe moltissimo a creare delle tabelle riepilogative e degli scenari personalizzati.
    La mia impressione però è che prima di passare alle macro sarebbe opportuna una rivisitazione sulla organizzazione dei dati da monitorare e da implementare sul foglio Matrice.
    buon lavoro.



  • di Andales data: 24/04/2014 19:42:11

    Provo a spiegarti come sono arrivato a quel file, che sono sicuro sia arzigogolato, in quanto cresciuto in base alle esigenze nate nell'utilizzo!
    Sicuramente quindi ci sara' un metodo piu' semplice di gestire questi dati, ma non vorrei dover ripartire da 0!

    Praticamente parto da una stampa (ogni settimana) delle consegne ai clienti che scadono la settimana successiva, quindi inserisco i dati nella matrice questi dati.

    Ogni articolo ha un iter diverso, segnalato nella matrice con le "x" su sfondo marrone.
    Ci sono articoli che sono composti da piu' componenti (quelli con la casella verde con sotto caselle rosse) in questo caso inserisco la quantita' nella casella verde e questa viene riportata nelle caselle rosse.

    Ogni articolo, poi, in base alle x inserite, riportala stessa quantita' nella lavorazione interessata.

    Alla fine dell'inserimento dei dati, copiavo la matrice (in versione senza formule) in 4 fogli dei 4 reparti, e grazie alle x di riempimento dei reparti, con semplici filtri, in 5 minuti avevo i 4 fogli dei reparti interessati da dare alla produzione.

    Successivamente, giornalmente durante la settimana, inserivo nelle colonne verdi
    I pezzi prodotti dai vari reparti, in modo da avere sott'occhio gli avanzamenti.... Capisco che sia un sistema paleolitico, ma almeno per ancora un anno, finche' non avremo un gestionale avanzato, non posso fare altrimenti!

    Ora nasce un' esigenza: devo avere i dati giorno per giorno dell'avanzamento, quindi le colonne verdi per ogni tipo di lavorazione devono diventare 5 (x10 =50 colonne in piu' da gestire), e mi stanno chiedendo di avere anche un controllo sugli scarti giornalmente(altre 50 colonne).

    Gestirlo a mano e' impensabile, quindi avevo pensato a questo sistema che mi raggruppasse automaticamente i dati inseriti nelle varie colonne!

    Spero sappiate aiutarmi o mi diate delle dritte su come gestire questi dati in maniera diversa.

    Grazie



  • di Textomb data: 24/04/2014 21:45:48

    Troppi dati da monitorare e gestire. Hai bisogno di un gestionale serio.
    Excel è un foglio di calcolo. Lo puoi adattare per fargli fare un lavoro tipo "gestionale" ma non avrai mai un gestionale come invece credo di aver capito ti serve utilizzare.
    Credimi, stai cercando di fare un lavoro molto articolato che non credo si possa fare "semplicemente" con excel.
    Anzi te lo sconsiglio. Prova a migrare sin da subito su Access oppure su altri gestionali.
    Questo il mio consiglio.



  • di Andales data: 24/04/2014 21:57:18

    Capisco, e ti ringrazio per la risposta, il gestionale lo stiamo sviluppando, e non sara' pronto ed operativo prima di gennaio 2015!
    Da gennaio 2014 sto utilizzando questo sistema, e non ho scelta, se non quella di continuare ad utilizzarlo (non conosco access), rinunciando alla possibilita' di implementare il controllo qualita'.
    Quello che mi sembra strano e' che non sia possibile un automatismo che trasporta solo le righe che soddisfano determinate condizioni, saltando quelle che non le soddisfano! Gia' questo mi aiuterebbe moltissimo!



  • di Textomb data: 24/04/2014 22:38:31

    cit. Quello che mi sembra strano e' che non sia possibile un automatismo che trasporta solo le righe che soddisfano determinate condizioni, saltando quelle che non le soddisfano! Gia' questo mi aiuterebbe moltissimo!
    Questo è possibile farlo. Basta una macro più o meno articolata.
    Io mi riferisco al tuo progetto in generale.
    Quando dici che servono altre 50 colonne e poi altre 50 ancora per gestire gli scarti ecc.. ecc...
    In questo caso non mi pare un obiettivo semplice da perseguire su excel. Anzi tutt'altro. Vedrai che è un bel casino.
    A proposito della tua richiesta spiega meglio quali sono i dati che vuoi estrapolare dal foglio Matrice per costruire i fogli di reparto1, reparto2, ecc ecc... e spiega meglio in base a quali criteri vanno estrapolati i dati e quali colonne devono essere considerate nel foglio di reparto1, quali nel reparto2, ecc...



  • di Andales data: 24/04/2014 23:00:28

    ok, allora cerco di essere il piu' preciso possibile:

    per il foglio "reparto 1":
    nel foglio "matrice" bisogna analizzare le righe che hanno la "x" nella colonna "G".
    se e' presente quella x deve copiarmi con lo stesso incolonnamento le celle delle colonne: B, C, D, E, X, Y, Z, AA, AB, AC, AD, AE, AN, AO, AP, AQ, AR, AS, AT, AU, BT.
    stessi dati e stessi colori, con l'intestazione (riga 1, 2, 3, 4) in alto.

    REPARTO 2:
    se c'e' la "x" nella colonna "H"
    celle colonne da copiare:B, C, D, E, AF, AG, AH, AI, AJ, AK, AL, AM, BT)

    REPARTO 3:
    se c'e' la "x" nella colonna "I"
    celle colonne da copiare: B, C, D, E, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH, BI, BJ, BT

    REPARTO 4:
    se c'e' la "x" nella colonna "J"
    celle colonne da copiare: B, C, D, E, BK, BL, BM, BN, BO, BP, BQ, BR, BS, BT


    questo e' quanto!
    se risultasse piu' comodo, la x della colonna "A" evidenzia di rosso (cosa che deve riportarsi anche nella scheda reparti" la descrizione delle colonne B C D E!

    grazie ancora per la pazienza!


  • ninai
    di ninai (utente non iscritto) data: 25/04/2014 07:13:48

    Ciao
    Lungi da me capire l'intero procedimento ma per il problema di "filtrare", estraendo solo i record che hanno nella colonna G la x, puoi usare una matriciale.
    in A5:
    =SE.ERRORE(INDICE(MATRICE!B$5:B$63;PICCOLO(SE(MATRICE!$G$5:$G$63="x";RIF.RIGA(B$5:B$63)-4);RIGHE(B$5:B5)));"")

    Matriciale, da confermare con CTRL+MAIUSCOLO+INVIO
    questa formula la trascini in basso ed a destra.
    Fino alla colonna D va bene, dopo devi vedere di adattare tu la formula in base a quale campo di "MATRICE", vuoi estrarre.



  • di ninai (utente non iscritto) data: 25/04/2014 07:40:19

    ti allego file "estrai tabella", con l'interpretazione che ho dato io all'estrazione dei dati



  • di Andales data: 25/04/2014 09:05:58

    grazie per la risposta ninai,
    ho verificato il file, e potrebbe andare bene, se non fosse che non mi "trasporta" le righe evidenziate di rosso!
    mi spiego meglio:
    se nella matrice inserisco una x nella colonna "A", la descrizione dell'articolo si evidenzia di rosso, questa evidenziazione deve passare anche nel foglio di reparto!
    io nel mio progetto (sbagliato) avevo inserito una formattazione condizionale delle celle legato alla "X" della matrice, ma come vedi adesso rispetta il "numero" della riga, quindi se metto la x nella riga 12, anche il foglio di reparto nella riga 12 si colora, ma non corrisponde piu' alla riga evidenziata!



  • di ninai (utente non iscritto) data: 25/04/2014 09:45:37

    Se ho ben capito ti dovrebbe bastare di applicare la formula di prima (INDICE(MATRICE!A$5:A$63.......) anche per importare la colonna A (le x) ed applicare poi la formattazione condizionale.



  • di Andales data: 26/04/2014 09:19:07

    Potrebbe essereuna valida soluzione!
    Appena riesco do un'occhiata alla formula, per capirecome funziona, e modificarla per gli alt reparti.
    Unica cosa che non mi e' chiara e' cosa fa e quando devo fare ctrl+maiusc+invio.
    Mi spieghi meglio?
    Grazie



  • di Textomb data: 26/04/2014 13:05:25

    la soluzione è senz'altro di altissimo pregio.
    L'unico aspetto negativo, a mio avviso, è riferito al fatto che rallenta molto l'operatività del foglio di calcolo in quanto ogni operazione ricalcola tutto.
    Se operi con diverse centinaia di righe e diverse decine di colonne potrebbe essere un problema.
    saluti



  • di ninai (utente non iscritto) data: 26/04/2014 16:25:58

    Ciao
    Sono perfettamente d'accordo con Textomb, purtroppo le Matriciali appesantiscono il file e sono anche delicate nella gestione; per un numero di record limitato (intorno ad un paio di migliaia) lavorano bene. Nel caso specifico (non l'ho studiato a fondo), se ARTICOLO, in matrice, è un valore univoco, si potrebbe usare la matriciale solo per la colonna C ed il resto dei dati si potrebbero estrarre tramite delle semplici formule di ricerca (cerca.vert(), indice(....confronta()) ecc.), evitando così di appesantire il ricalcolo del file.



  • di Andales data: 26/04/2014 19:35:39

    Provato ad inserirlo nel file originale, ed e' davvero lentissimo!
    Il file originale ha circa 600 righe in aumento di circa 30 al mese.
    Immagino e se inserisco la formula nei 4 fogli di reparto impallo excel.

    Quindi non la posso considerare una soluzione giusta per me.

    Non e' per caso possibile creare una macro che si attiva solamente quando devo creare i fogli di reparto, e lavora indisturbato per il tempo che gli serve?

    In questo modo non dovrebbe ricalcolare ad ogni minima modifica della matrice, e non appesantirebbe il file.



  • di Textomb data: 26/04/2014 20:37:01

    In effetti se operi con tutti questi dati non ti conviene agire con le formule matriciali.
    Forse sarebbe meglio pensare ad una macro che all'occorrenza ricrea lo scenario riferito ai reparti. Così non disturbi l'operatività del foglio durante le normali operazioni di aggiornamento.




  • di Textomb data: 27/04/2014 15:51:05

    Ti propongo l'estrazione mirata dei vari Reparti elaborato sul tuo file come l'ho immaginato io.
    Allego file esempio di Andales - textomb
    Ovviamente il presupposto di funzionamento è che lo schema del foglio Matrice resti così com'è adesso. In ogni caso, ho inserito dei commenti nel codice sorgente così, qualora necessario, potrai apportare tu stesso le necessarie sistemazioni.
    In bocca al lupo.



  • di Andales data: 27/04/2014 20:29:53

    mamma mia che meraviglia textomb!
    ho provato un secondo e devo dire che e' proprio quello che immaginavo nella mia mente!!

    adesso ti chiedo un'altra cortesia: come si fa ad imparare a programmare quello che hai fatto tu?
    magari mi risponderai che ci vogliono anni di studi a scuola, quindi posso gia' mettermela via, ma se come spero ci sono dei corsi semplici anche per novizi, vorrei davvero approfondire l'argomento, per capirci un pochino di piu'!

    davvero grazie!!!!



  • di Textomb data: 27/04/2014 20:55:36

    spero che il lavoro fatto possa esserti utile.
    Anche se ribadisco il mio pensiero a proposito del tuo file.
    Non puoi gestire un lavoro così complesso con excel. Hai bisogno di un gestionale serio che controlla tutti i parametri anche quelli che accidentalmente possono indurti in errore.

    cit. come si fa ad imparare a programmare quello che hai fatto tu?
    Non è particolarmente difficile (ma neanche semplice...). Quello che ho fatto io per te si può imparare in poco tempo. Dipende molto da te, dall'impegno e dalla passione che ci metti.
    In rete ci sono molti spunti per iniziare ed intraprendere un percorso formativo corretto.
    Inizia con un progetto semplice e quando incontri le prime difficoltà sbattici un pò la testa tu prima di chiedere...



  • di Andales data: 28/04/2014 15:22:15

    scusa textomb,
    ho provato a "girare" nel file matrice che sto utilizzando, la macro, ma non riesco a reimpostarla.... ho provato allora a "girare" il file che sto utilizzando nel file prova che mi hai mandato, ma nemmeno cosi' riesco a ripristinarlo funzionante!

    l'inghippo sta nel fatto che i reparti hanno nomi diversi da "rep1", "rep2"... ed i fogli non si chiamano "reparto1", "reparto2" ....

    sono entrato nella macro,ed ho variato dove pensavo fosse il riferimento con il nuovo nome, ma anche cosi' non gira!

    inoltre se vado a variare certi dati non mi prende la modifica.... come se fosse protetto da password..... ho notato anche il campo password..... sbaglio qualcosa?





  • di Textomb data: 28/04/2014 17:12:03

    Ogni volta che chiediamo di allegare file di prova aderenti a quelli effettivamente utilizzati è proprio per evitare che le procedure scritte diano sorprese quando poi vengono migrate sui file effettivi.
    Adesso se hai allegato un file che però ha delle differenze sostanziali (come quelle che mi hai scritto...) rispetto a quello che utilizzi dovevi aspettarti che andasse in errore.
    Comunque. Possiamo fare così.
    Allega un altro file, che però non abbia modifiche rispetto a quello effettivo. Ripuliscilo solo dei dati ed infilagli dati fittizi. Ma DEVE essere lo stesso che utilizzi altrimenti il rischio di malfunzionamenti è altissimo.
    Infine, il file che ho allegato io non ha alcuna password. Non avrebbe alcun senso!



  • di Andales data: 28/04/2014 20:37:05

    hai perfettamente ragione!
    scusami tanto, ma pensavo che fosse piu' facile metterci mano cambiando i riferimenti! mea culpa!

    se posso chiederti avrei visto una piccola modifica da fare ed un inserimento:

    - l'inserimento e': tra le colonne che "passano" nei fogli di reparto, che passino anche le formule che ci sono nel file matrice dalla riga 565 alla 570, ovviamente solo nelle colonne interessate al passaggio.

    - l'aggiunta sarebbe il foglio "calcolo telai" che ho aggiunto... qui dovrebbero passare le colonne che vedi nell'esempio, e lasciare le formule che ci sono nelle colonne verdi.
    non so se vai meglio inserirle nel forlio matrice ed importare anche quelle o se si puo' comunque, essendo la stessa formula per ogni riga, darla come "default" di riga.

    spero di non approfittarmene troppo!



  • di Textomb data: 28/04/2014 22:17:07

    ho appena visto il tuo nuovo file.
    come speravi potesse funzionare?
    E' ovvio che si è piantato. Anzi devi essere contento che non ti è esploso il computer...
    Comunque a proposito delle tue richieste dovresti darmi qualche indicazione in più sul nuovo foglio (calcolo telai)
    Quando si dovrebbe generare?
    Io ho intuito che al doppio clic su GAL nel foglio "Matrici" si generano due reparti in due fogli diversi. Uno è Galvanica e l'altro è Calcolo Telai. Giusto?

    cit. spero di non approfittarmene troppo
    Il problema non è questo. Io ti aiuto volentieri fin quando sarò nelle condizioni di poterlo fare.
    Ma se questo file dovesse diventare importante per il tuo lavoro potresti aver bisogno di implementare nuove funzioni e quindi ti consiglio di renderti autonomo il più presto possibile.



  • di Andales data: 28/04/2014 22:54:58

    beh, dai, cambia solo il nome delle 4celle e dei 4 fogli!
    Il tuo intuito e' perfetto! Quando estraggo galvanica si crea anche quello!

    Ti ringrazio davvero tantissimo per la tua disponibilita'! Per quel che riguarda il diventare autonomo, gia' mi sto attrezzando, ed ho gia' cominciato a leggere il tutorial che c'e' sul sito.... Spero di capirmi! Mi ci vorrebbe un bel corso.... Io poi mi arrabatto! Questi comandi che mi stai mandando tu comunque mi stanno gia' aiutando molto anche nel solo comprendere come funziona!

    Ci Vorra' un po' di tempo, ma vedrai che ci arrivo!



  • di Textomb data: 29/04/2014 13:44:23

    Credo di aver adempiuto a tutte le tue richieste. Allego il File "Nuovo file x Andales"
    Formule comprese e generazione del foglio Calcolo Telai. Alla fine era un pò complesso...
    Ad ogni modo, per migliorare la leggibilità del codice ho inserito dei commenti così potrai studiarlo e nel futuro sarà facile la manutenzione.
    Inoltre ho inserito dei nomi nel foglio Matrice (vedi menù formule Gestione Nomi) che mi hanno permesso una leggera semplificazione nella scrittura della routine.
    A presto. Facci sapere se così funziona.



  • di Textomb data: 29/04/2014 13:47:53

    Allego anche la routine che è venuta fuori per chi volesse ottimizzarla e migliorarla...


     
    Option Explicit
    
    Sub Estrai_Reparto()
    
    ' Routine necessaria per estrapolare i dati del Reparto in base al filtro generato dalle righe
    ' che contengono una "x" nelle colonne da G4 a J4
    
    Dim col_da_Eliminare_Rep1 As String
    Dim col_da_Eliminare_Rep2 As String
    Dim col_da_Eliminare_Rep3 As String
    Dim col_da_Eliminare_Rep4 As String
    Dim col_da_Eliminare_RepTelai As String
    Dim Risp As Byte, Rep As Integer, Reparto As String, TotRows As Integer, TotCol As Integer, FormulaR As Range
    
    ' Queste le colonne da eliminare rispetto al foglio Matrice per la rappresentazione dei vari reparti
    col_da_Eliminare_Rep1 = "$F$5:$W$5,$AF$5:$AM$5,$AV$5:$BS$5" 'VIBRATURA
    col_da_Eliminare_Rep2 = "$F$5:$AE$5,$AN$5:$BS$5" 'PULITURA
    col_da_Eliminare_Rep3 = "$F$5:$AU$5,$BK$5:$BS$5" 'GALVANICA
    col_da_Eliminare_Rep4 = "$F$5:$BJ$5" 'VERNICIATURA
    col_da_Eliminare_RepTelai = "$F$5:$AU$5,$AY$5,$BC$5:$BG$5,$BK$5:$BS$5" 'CALCOLO TELAI
        
        ' Assegno il numero associato al Reparto da estrapolare ed anche il nome del Reparto
        Select Case ActiveCell.Address
            Case Is = "$G$4"
                Rep = 1
                Reparto = "VIBRATURA"
            Case Is = "$H$4"
                Rep = 2
                Reparto = "PULITURA"
            Case Is = "$I$4"
                Rep = 3
                Reparto = "GALVANICA"
            Case Is = "$J$4"
                Rep = 4
                Reparto = "VERNICIATURA"
        End Select
    
    
    Risp = MsgBox("Vuoi estrapolare il Reparto " & Reparto & " ?", vbExclamation + vbOKCancel, Title:="Estrapola Reparto")
        
        If Risp = vbOK Then
        
            'Se non c'è il filtro sul foglio lo inserisco.
            If Not ActiveSheet.AutoFilterMode Then ActiveSheet.Range("A4:BT4").AutoFilter
        
        ' Spendo lo schermo
        Application.ScreenUpdating = False
    
        'Raggrupppo le colonne da eliminare e le colonne che devono essere filtrate in una matrice Vr()
        ' Questo passaggio è indispensabile per passare le variabili alla procedura in funzione del reparto selezionato
        Dim Vr(1 To 4, 1 To 2) As String
        
        Vr(1, 1) = col_da_Eliminare_Rep1: Vr(1, 2) = 7 ' dati x la colonna G VIBRATURA
        Vr(2, 1) = col_da_Eliminare_Rep2: Vr(2, 2) = 8 ' dati x la colonna H PULITURA
        Vr(3, 1) = col_da_Eliminare_Rep3: Vr(3, 2) = 9 ' dati x la colonna I GALVANICA
        Vr(4, 1) = col_da_Eliminare_Rep4: Vr(4, 2) = 10 ' dati x la colonna J VERNICIATURA
        
                'Elimino i dati preesistenti nel foglio di Reparto
                Worksheets(Reparto).Range("a1").CurrentRegion.Resize(Worksheets(Reparto).Range("I" & Rows.Count).End(xlUp).Row).Clear
                ' Estraggo con  il filtro i dati riferiti al reparto selezionato
                ActiveCell.AutoFilter field:=Vr(Rep, 2), Criteria1:="x"
                ActiveCell.CurrentRegion.Copy
                ' Memorizzo il numero di righe TotRows del filtro attivo
                TotRows = ActiveCell.CurrentRegion.Columns(1).SpecialCells(xlCellTypeVisible).Count
                    
                    ' Riporto i valori nel foglio del relativo Reparto
                    With Worksheets(Reparto)
                        .Range("a1").PasteSpecial xlPasteValues
                        .Range("a1").PasteSpecial xlPasteFormats
                        .Range(Vr(Rep, 1)).EntireColumn.Delete
                        .Range("4:4").Columns.AutoFit
                        ' Riporto le formule inserite in fondo alla tabella
                        TotCol = .Range("a4").CurrentRegion.Rows(4).Columns.Count - 1
                        Set FormulaR = .Range(Cells(TotRows, "f").Address, Cells(TotRows, TotCol).Address)
                        .Range(FormulaR.Address).FormulaR1C1 = "=SUM(R5C:R[-1]C)"
                        Range(Reparto).Resize(3, 5).Copy .Cells(TotRows + 3, "I")
                    End With
                
                            ' Se il Reparto selezionato è il N.3 (GALVANICA) si deve generare anche il foglio Calcolo Telai
                            ' Questo foglio ha un'altra struttura e quindi dovrò fare:
                            If Rep = 3 Then
                            ' Ripulisco i dati preesistenti nel foglio di Reparto
                            Worksheets(Foglio7.Name).Range("a1").CurrentRegion.Clear
                            ActiveCell.CurrentRegion.Copy
                            ' Memorizzo il numero di righe TotRows del filtro attivo
                            TotRows = ActiveCell.CurrentRegion.Columns(1).SpecialCells(xlCellTypeVisible).Count
                                With Worksheets(Foglio7.Name)
                                    .Range("a1").PasteSpecial xlPasteValues
                                    .Range("a1").PasteSpecial xlPasteFormats
                                    .Range(col_da_Eliminare_RepTelai).EntireColumn.Delete
                                    ' Inserisco le tre colonne L:M:N che contengono formule
                                    .Range("L4:N4").EntireColumn.Insert xlShiftToRight
                                    .Range("L4:N" & TotRows).Interior.Color = 12056726 'codice del colore verdino
                                    .Range("L4").Value = "TELAI NECESSARI PZ. RIT." ' Inserisco le intestazioni di colonna
                                    .Range("M4").Value = "TELAI NECESSARI WK " & Foglio2.[b26] 'completo i dati dal foglio Regole cella b26
                                    .Range("N4").Value = "TELAI NECESSARI WK " & Foglio2.[b27] 'completo i dati dal foglio Regole cella b27
                                    .Range("4:4").Columns.AutoFit
                                    .Range("a1").Value = "PIANO DI PRODUZIONE : reparto CALCOLO TELAI"
                                    ' Inserisco le formule nelle tre colonne L:M:N
                                    .Range("L5:N" & TotRows).FormulaR1C1 = _
                                    "=IF(OR(COUNT(RC[-3]),COUNT(RC[-6])),ROUNDUP((RC[-3]+RC[-6])/RC17,0),"""")"
                                    ' Riporto le formule inserite in fondo alla tabella
                                    TotCol = .Range("a4").CurrentRegion.Rows(4).Columns.Count - 1
                                    Set FormulaR = .Range(Cells(TotRows, "f").Address, Cells(TotRows, TotCol).Address)
                                    .Range(FormulaR.Address).FormulaR1C1 = "=SUM(R5C:R[-1]C)"
                                End With
                            End If
                
                ' Disattivo il filtro nel foglio Matrici
                ActiveCell.AutoFilter field:=Vr(Rep, 2)
                Worksheets(Reparto).Select
                Range("b1").Select
                Selection = "PIANO DI PRODUZIONE : reparto " & Reparto
                MsgBox "Estrapolazione eseguita!", vbInformation
            
            ' Riaccendo lo schermo
            Application.ScreenUpdating = True
        
        Else
            MsgBox "Hai annullato l'operazione", vbInformation
        
        End If
        
    End Sub
    



  • di Andales data: 29/04/2014 20:19:15

    Caspita! Sono senza parole!
    Stanotte me lo scarico sul pc e lo provo, intanto ho letto per bene il codice, e devo dire che ci sto capendo sempre piu', anche se non capisco ancora se la sintassi (intendo maiuscole/minuscole, rientri, spazi) debbano essere rispettati, o se vengono inseriti solamente perche' e' piu' capibile cosi' ordinato, ma funzionerebbe lo stesso anche in modo diverso.

    Ti faro' sapere domani come gira!

    Grazie

    Sono in debito!



  • di Andales data: 30/04/2014 11:02:21

    ciao,
    intanto rinnovo i ringraziamenti per lo sbattimento e per il meraviglioso lavoro!

    ho fatto alcune prove sul file, ed ho trovato un paio di cose da segnalare.

    la piu' importante e' che quando lancio l'estrapolazione della galvanica, va in errore segnalandomi "errore di runtime 1004, errore nel metodo autofilter per la classe range".
    errore gia' presente nel file anche prima che "reimportassi" i dati originali nel foglio matrice.

    le altre due cose (che adesso pero' vedo se comincio a capirci qualcosa sul vba, quindi aspetta a risolvermeli), sono:

    - dopo qualsiasi estrapolazione, viene mantenuto il filtro nella matrice, del reparto estrapolato

    - nei fogli di reparto viene variato il formato (grandezza) delle celle.




  • di Textomb data: 30/04/2014 11:57:13

    ciao
    molto strano l'errore che ti segnala.
    Nel mio file non va in errore. Funziona tutto perfettamente.
    Non capisco. Ma nel file che ho allegato va in errore?



  • di Andales data: 30/04/2014 13:28:34

    si, ti confermo che va in errore!
    ho provato a riscaricarlo e lanciarlo senza fargli nessuna modifica e mi segnala quell'errore!



  • di Textomb data: 30/04/2014 13:38:55

    si ma come faccio ad aiutarti?
    Anch'io ho riprovato a scaricare l'ultimo file che ho allegato "Nuovo file x Andales" e quando lancio l'estrapolazione Galvanica (si procede con il doppio clic sulla cella "I4") funziona tutto perfettamente.
    Dovresti essere più preciso magari indicando la riga di codice in cui si blocca (quella che si evidenzia in giallo) e cerchiamo di capirne il motivo...



  • di Textomb data: 30/04/2014 13:40:41

    E poi questo errore si verifica solo quando lanci l'estrapolazione del reparto Galvanica?
    Quindi mi pare di capire che per gli altri reparti funziona correttamente. Giusto?
    Boooooh....!



  • di Andales data: 30/04/2014 13:43:39

    questo e' il passaggio che da l'errore! la riga evidenziata e' quella in mezzo "ActiveCell....."

    ' Disattivo il filtro nel foglio Matrici
    ActiveCell.AutoFilter field:=Vr(Rep, 2)
    Worksheets(Reparto).Select

    stranissimo che a te funzioni pero'!
    il file e' lo stesso, non modificato.... che puo' essere?



  • di Textomb data: 30/04/2014 15:20:12

    Mi spiace ma non riesco proprio a trovare una ragione valida per cui a te il file va in errore in quel punto del codice mentre, lo stesso file, a me funziona perfettamente.
    A questo punto spero nell'intervento chiarificatore di qualcun altro e nelle more, apporta questa semplice modifica:
    ActiveCell.AutoFilter 'field:=Vr(Rep, 2)
    Ho semplicemente inserito l'apice di commento ' prima di field...
    In questo modo tutto ciò che è scritto dopo l'apice diventa di colore verde e non avrà più effetto sul codice.
    Poi riprova e dicci cosa accade.
    Ovviamente non è una soluzione!!



  • di Andales data: 30/04/2014 15:31:36

    fatto,
    l'errore non compare piu', ed esegue l'estrapolazione completa della galvanica, mentre quella del calcolo telai riporta solo le colonne della descrizione fino al colore (colonne A,B,C,D,E), lascia invariate e vuote le colonne F,G,H,I,J,K e le colonne L,M,N le colora di verdino, le intesta nella riga 4 e si ferma li, senza dati!

    provo a scaricare il file in un altro pc, per vedere se il problema e' il mio pc, o quello che c'e' in esecuzione e vediamo cosa succede



  • di Textomb data: 30/04/2014 15:45:40

    Ma è solo il folgio Calcolo Telai che è privo di dati oppure anche il foglio Galvanica?



  • di Andales data: 30/04/2014 23:27:02

    No no, il foglio galvanica si crea correttamente e viene con tutti i dati!



  • di Andales data: 01/05/2014 00:07:28

    Boh... Alquanto singolare questa cosa!
    Qui a casa, con un pc che va a carbone, e con office 2007 il file scaricato va alla grande, in ufficio, con un pc acquistato 5 mesi fa, e con l'ultimo office, l'estrapolazione da errore!
    Il file e' sempre quello... Che puo' essere?



  • di Textomb data: 02/05/2014 09:41:11

    ciao.
    il fatto che su un'altra macchina con office 2007 il file ti ha funzionato correttamente mi fa intuire che probabilmente esiste una incompatibilità tra le versioni.
    Ma, il fatto alquanto strano è che il problema viene generato solo all'estrapolazione del reparto Galvanica mentre per gli altri reparti funziona tutto bene.
    La riga che hai indicato in cui il codice va in errore viene eseguita per tutte le estrapolazioni. Quindi se va in errore per uno dovrebbe andare in errore per tutti i reparti.
    Da parte mia ho testato un'altra volta il file che ti ho allegato e a me funziona bene e quindi non so indicarti una strada per correggere l'errore che si verifica da te.
    Ci vorrebbe qualcuno che riscontrasse il tuo stesso errore e che ti sapesse indicare una soluzione.
    Cerca di verificare se il file gira correttamente su qualche altro computer... Non vorrei ci fosse qualche problema sul tuo.



  • di Andales data: 03/05/2014 10:04:43

    Lunedi' ho la possibilita' di provare il file su un pc diverso con lo stesso office mio!
    Comunque ti confermo che le altre estrazioni funzionano senza errore, e che l'errore insorge al secondo passaggio, quando ha gia' estrapolato "galvanica" ed inizia a ripetere le operazioni per estrarre "calcolo telai"!



  • di Andales data: 05/05/2014 19:22:22

    Ti confermo che il problema sta in office 2013!!!
    Provato su altri 2 pc ed office 2013 fa andare in errore questa routine!
    Mi sa che la soluzione piu' rapida e' quella di staccare l'estrapolazione dei telai e renderla autonoma!
    Provo a modificare il codice e vedere se ci riesco da solo.



  • di Textomb data: 06/05/2014 08:39:27

    Questa non è una buona soluzione. Stiamo solo agirando il problema ma non lo stiamo affrontando correttamente.
    Io non sono nelle condizioni di fare prove su Office 2013 e sul mio 2010 la routine funziona correttamente.
    Il file è ancora allegato alla discussione corrente.
    Per fare delle prove è semplicissimo. Basta fare doppio clic sulle celle che sono comprese nell'intervallo da G4 a J4.
    Se qualcun altro potesse darci dei riscontri sarebbe ottimo per aiutarci a capire.
    In estrema sintesi:
    Con Office 2013 la procedura si blocca solo all'estrazione del reparto Galvanica (doppio clic su cella I4) le altre funzionano correttamente. Nel mio office (2010) funziona tutto correttamente.



  • di Andales data: 14/05/2014 17:41:38

    Ciao textomb,
    aggiornamento:
    ho provato, come ti dicevo, a variare la tua routine in modo che alla fine dell'estrapolazione togliesse il filtro dalla colonna esaminata, e ci sono riuscito!
    inoltre ho aggiunto una colonna ed ho variato la routine in modo che si riallineassero le estrapolazioni con la colonna aggiunta, e ci sono riuscito anche qui
    con estrema sorpresa, mi sono accorto che non da piu' l'errore bloccandosi (non ho capito il perche'), ma non mi estrapola bene il foglio telai (vedi foglio telai esistente nel file di esempio).

    secondo te cosa e' cambiato da prima? perche' non si blocca piu' ma non completa il foglio telai? nel tuo excel estrapola il foglio telai correttamente adesso che ho inserito la modifica?

    grazie

    ciao



  • di Textomb data: 14/05/2014 18:10:24

    ciao Andales
    complimenti per i tuoi progressi.
    ho provato il file allegato e mi funziona benissimo.
    La scheda riferita al Calcolo Telai è perfettamente estrapolata.