conto scalare



  • conto scalare
    di giancarlo (utente non iscritto) data: 16/08/2013 09:02:16

    ho un file con più fogli di lavoro dove nella cella C35 del foglio 1 inserisco un valore, per esempio 10, vorrei che quando inserisco dei valori nella cella C35 di altri fogli si aggiorni il valore di C35 del foglio 1 fino a avere allarme al raggiungimento del valore di 0 o l'impossibilità di inserire valori che portino in C35 di foglio 1 valori negativi, è possibile?

    grazie



  • di Grograman data: 16/08/2013 12:03:49

    Sicuramente sì vedendo un file di esempio con dati chiari e una spiegazione di cosa esattamente vuoi ottenere.



  • di giancarlo (utente non iscritto) data: 16/08/2013 12:29:54

    come potrai vedere nel file allegato vorrei gestire un listino prezzi con relative comande (foglio 1, 2 ecc.) dove per esempio se imposto nella cella quantità del listino una disponibilità di 10 bistecche cella B 28 vorrei che una volta vendute le 10 disponibili mi venga dato un allarme oppure mi blocchi l’inserimento di altre quantità oltre la disponibilità di B 28.
    A proposito potrei fare stampare le comande con i soli righi dove la cella relativa alle quantità è compilata?
    grazie



  • di Grograman data: 16/08/2013 13:22:30

    Intanto che guardo meglio il file, ma come fai amanutenere quelle formule?
    Ti consiglio di studiarti le 3d Reference o "formule tridimensionali" ;)

    Entri nella cella "B5" del foglio Listino, poi scrivi "=somma(" e selezioni X fogli tenendo premuto shift e cliccandoli con il mouse.
    A quel punto clicchi sulla cella B5 di uno dei fogli, dai invio e otterrai:
    =SOMMA('1:30'!B5)

    (per comodità selezioni magari solo i primi fogli)

    Poi a mano cambi quel 30 in 120 e ottieni quanto segue:
     
    Questa:
    
    ='1'!B5+'2'!B5+'3'!B5+'4'!B5+'5'!B5+'6'!B5+'7'!B5+'8'!B5+'9'!B5+'10'!B5+'11'!B5+'12'!B5+'13'!B5+'14'!B5+'15'!B5+'16'!B5+'17'!B5+'18'!B5+'19'!B5+'20'!B5+'21'!B5+'22'!B5+'23'!B5+'24'!B5+'25'!B5+'26'!B5+'27'!B5+'28'!B5+'29'!B5+'30'!B5+'31'!B5+'32'!B5+'33'!B5+'34'!B5+'35'!B5+'36'!B5+'37'!B5+'38'!B5+'39'!B5+'40'!B5+'41'!B5+'42'!B5+'43'!B5+'44'!B5+'45'!B5+'46'!B5+'47'!B5+'48'!B5+'49'!B5+'50'!B5+'51'!B5+'52'!B5+'53'!B5+'54'!B5+'55'!B5+'56'!B5+'57'!B5+'58'!B5+'59'!B5+'60'!B5+'61'!B5+'62'!B5+'63'!B5+'64'!B5+'65'!B5+'66'!B5+'67'!B5+'68'!B5+'69'!B5+'70'!B5+'71'!B5+'72'!B5+'73'!B5+'74'!B5+'75'!B5+'76'!B5+'77'!B5+'78'!B5+'79'!B5+'80'!B5+'81'!B5+'82'!B5+'83'!B5+'84'!B5+'85'!B5+'86'!B5+'87'!B5+'88'!B5+'89'!B5+'90'!B5+'91'!B5+'92'!B5+'93'!B5+'94'!B5+'95'!B5+'96'!B5+'97'!B5+'98'!B5+'99'!B5+'100'!B5+'101'!B5+'102'!B5+'103'!B5+'104'!B5+'105'!B5+'106'!B5+'107'!B5+'108'!B5+'109'!B5+'110'!B5+'111'!B5+'112'!B5+'113'!B5+'114'!B5+'115'!B5+'116'!B5+'117'!B5+'118'!B5+'119'!B5+'120'!B5
    
    
    Diventa
    =SOMMA('1:120'!B5)



  • di giancarlo (utente non iscritto) data: 16/08/2013 13:30:24

    Hai perfettamente ragione ma le formule le ho ereditate da chi aveva creato la base del file.



  • di Grograman data: 16/08/2013 15:04:32

    Scusa avevo dimenticato l'argomento principale... nel file di esempio non ci sono dati quindi devo supporre!

    Tuper esempio scrivi "50" alla voce "coperti" del foglio "listino".
    La prima comanda mi porta via 10 coperti, la seconda 15, la terza 20.
    In questa situazione il foglio "TOTALI" riporta 45 coperti.

    Vuoi che, in una situazione del genere, se provo ad inserire 6 coperti nella distinta numero 4 compaia un messaggio di errore in quanto 10+15+20+6 = 51 > 50 disponibili?

    Ho inteso correttamente?



  • di Grograman data: 16/08/2013 15:28:29

    Vediamo intanto se così ha senso.
    Per non complicarmi la vita ho tolto una riga al foglio "Listino" perchè non era allineato con il formato degli altri.

    Con le formule e formattazioni condizionali non sono in grado di farlo, ho quindi aggiunto un controllo in VBA che riporto per comodità di lettura, se non vuoi il messaggio in caso di MANCATO superamento del totale, togli le righe con indicato in commento "'TOGLIERE QUI".

    Allego esempio.
     
    Option Explicit
    
    
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim dblTot As Double
    Dim wsList As Worksheet, wsTot As Worksheet
    
    Application.EnableEvents = 0
    If Sh.Name <> "Listino" And Sh.Name <> "TOTALI" Then
        If Target.Column = 2 Then
            Set wsTot = ThisWorkbook.Sheets("TOTALI")
            Set wsList = ThisWorkbook.Sheets("Listino")
            With Target
                dblTot = wsTot.Cells(.Row, .Column)
                If dblTot > wsList.Cells(.Row, .Column) Then
                    MsgBox "Totale per " & wsTot.Cells(.Row, .Column).Offset(0, -1).Value & " superato."
                    .ClearContents
                    .Select
                Else 'TOGLIERE QUI
                     MsgBox "Disponibili altri " & wsList.Cells(.Row, .Column) - dblTot & " " & wsTot.Cells(.Row, .Column).Offset(0, -1)  'TOGLIERE QUI
                End If
            End With
            Set wsTot = Nothing
            Set wsList = Nothing
        End If
    End If
    Application.EnableEvents = 1
    End Sub
    



  • di giancarlo (utente non iscritto) data: 16/08/2013 16:46:53

    esatto



  • di giancarlo (utente non iscritto) data: 16/08/2013 19:21:09

    Ho visto il tuo file, funziona benissimo.
    Rimane il problema che non riesco a registrare la macro sul mio file.
    Puoi dirmi come fare?
    Per la stampa delle sole righe con la cella quantità compilata non si può fare niente?

    scusami ma avrai capito che sono una frana.