Verifica valore e stampa



  • Verifica valore e stampa
    di Gabro63 data: 25/10/2010

    help, mi sono appena iscritto perchè sono un neofita di vba e non risco a venirne a capo. ho una tabella "tab01"(a1:j9) composta di 90 caselle che genera numeri casuali, una cella (j12) che analizza il totale della tabella e un'altra tabella "tab02"(n1:w9)con valori calcolati in funzione dalla prima tabella.
    avrei bisogno di una macro che aggiorni il dati in tab01 (come premere f9) e se il totale nella cella "j12" è inferiore di 10 deve mandare in stampa la "tab02" e fermarsi, altrimenti deve ricominciare il ciclo.
    vi ringrazio aticipatamente di cuore.



  • di Baz (utente non iscritto) data: 25/10/2010

    Ciao e benvenuto nel forum.

    per il tuo quesito, portesti essere più chiaro e dettagliato?

    1- nella tab01 , chi genera e come i numeri casuali? che numeri vengono generati interi, con decimali ...?

    2- tu chiedi una macro per aggiornare la tab01, ma ora come fai?

    3- nella cella j12 c'è la formula =somma(a1:j9) ?

    4- nella tab02 cosa intendi "con valori calcolati in funzione della tab01" ? hai un macro?

    se riesci postare un esempio, magari si riesce meglio aiutarti

    ciao



  • di Gabro63 (utente non iscritto) data: 26/10/2010

    Ti ringrazio baz, è più semplice di quanto credi, cercherò di essere un po’ più chiaro;
    nella tab01 (a1:j9), ogni cella contiene la formula "casuale" e si generano 90 valori 1 o 0 e premendo i tasto f9 si aggiornano.
    nella cella j12 c'è la formula =somma(a1:j9).
    nella tab02 (n1:w9), sempre di 90 celle, per ogni cella c'è una formula =se(xx=1;y;"") dove xx è l’indirizzo delle singole celle della tab01 e y è un numero da 1 a 90
    es: =se(b2=1;12;"") =se(b5=1;45;"") ecc.
    a me servirebbe una marco che:
    aggiorni i calcoli nella tab01 ( equivalente del tasto f9)
    se il totale della cella j12 è inferiore/uguale di 10 allora stampi la tab02 ed interrompa il ciclo
    se il totale della cella j12 è maggiore di 10 ricominci il ciclo
    (se conteggiasse anche il numero di cicli a vuoto sarebbe il massimo).
    a presto



  • di Baz (utente non iscritto) data: 26/10/2010

    Beh, messa così è molto più semplice

    ho però dovuto alzare a 30 il valore da te imposto a 10 in quanto a oltre 15000 cicli ho deciso di interrompere.

    per la stampa della sola tabella 2 credo bastasse impostare all'inizio l'area di stampa (lo vedo un pò superfluo farlo da macro) e comunque con il registratore di macro potevi trovare da solo le istruzioni necessarie, non trovi?

    ciao
     
    Function Calcola()
    Dim nCicli As Integer
    Dim Res1
    
    With Sheets("Foglio1")
        Do Until [j12] <= 30
            'aggiorna il foglio 1
            'Worksheets ("Foglio1")
            .Calculate
            nCicli = nCicli + 1
        Loop
        
        Res1 = MsgBox("cicli eseguiti " & nCicli & Chr(13) _
                & "vuoi stampare?", vbYesNo, "Fine elaborazione")
                
        If Res1 = vbYes Then
            .PageSetup.PrintArea = "$N$1:$W$9"
            .PrintOut
        End If
    End With
    End Function



  • di Gabro63 (utente non iscritto) data: 26/10/2010

    Ti ringrazio moltissimo della tua disponibilità.
    tutto quello che conosci è semplice, ho programmato in gw basic quando la versione del dos corrente era la 1.1, non direi che ora sono arruginito ma piuttosto fossilizzato, sto cercando di riprendere ma non è così semplice.
    ti ringrazio ancora.