Numero progressivo dopo stampa



  • Numero progressivo dopo stampa
    di GQ (utente non iscritto) data: 12/11/2014 15:57:39

    Salve a tutti
    Vorrei fare un CMR usando piu' fogli di excel.
    Il primo contiene i dati che inserisco, gli altri hanno collegamenti e prendono i dati per la stampa

    Riscontro due ostacoli:
    1-il collegamente dei fogli secondari restituisce 0 e non null quando il campo principale è vuoto
    2-vorrei lanciare la stampa di tutti i fogli in sequenza con un unico comando e al contempo incrementare una numerazione progressiva in una cella.

    Qualcuno mi puo' aiutare?

    ** allego un file dove si capisce meglio



  • di Lucas87 data: 12/11/2014 16:06:14

    Ciao
    Il file non lo vedo.
    Non ho capito una cippa.



  • di GQ (utente non iscritto) data: 12/11/2014 16:57:39

    Eccolo scusa...l'avevo dimenticato



  • di GQ (utente non iscritto) data: 13/11/2014 11:38:19

    nessuno mi puo' aiutare?



  • di Textomb data: 13/11/2014 11:51:43

    ciao
    per quanto riguarda il problema della visualizzazione dello 0 invece di testo vuoto nel foglio2, puoi rimediare molto facilmente con una formula condizionale di questo tipo =SE(Foglio1!E15="";"";Foglio1!E15).
    Per quanto riguarda il problema della numerazione progressiva dei fogli non ho ben capito la tua esigenza e come la vuoi gestire.
    Infine perchè vuoi un pulsante per mandare in stampa tutti i fogli.
    Non puoi mandare in stampa l'intera cartella di lavoro? Mi pare la stessa cosa... E quindi senza pulsanti.




  • di GQ (utente non iscritto) data: 13/11/2014 11:59:15

    per quanto riguarda il problema della visualizzazione dello 0 invece di testo vuoto nel foglio2, puoi rimediare molto facilmente con una formula condizionale di questo tipo =SE(Foglio1!E15="";"";Foglio1!E15).

    questo ok

    Per quanto riguarda il problema della numerazione progressiva dei fogli non ho ben capito la tua esigenza e come la vuoi gestire.

    vorrei che ad ogni stampa mi avanzi di 1

    Non puoi mandare in stampa l'intera cartella di lavoro? Mi pare la stessa cosa... E quindi senza pulsanti.

    Intendi selezionando le linguette dei vari fogli in simultanea?



  • di Textomb data: 13/11/2014 12:26:30

    sul progressivo della stampa, al momento, non saprei come aiutarti...
    forse perchè non ho capito bene come devi gestire questa cosa.
    per esempio una UDF impostata nella cella I9 di ogni foglio. vedi esempio sotto.

    Per la stampa puoi anche selezionare le linguette e poi mandare in stampa i fogli selezionati.
    Ma, se devi stampare tutti i fogli, come penso di aver capito, puoi semplicemente selezionare l'opzione di stampare l'intera cartella di lavoro.
     
    Function numWs() As Integer
        numWs = Right(ActiveSheet.CodeName, Len(ActiveSheet.CodeName) - 6)
    End Function
    



  • di GQ (utente non iscritto) data: 13/11/2014 13:05:44

    ...per esempio una UDF impostata nella cella I9 di ogni foglio. vedi esempio sotto.

    Ma come la applico?
    Creo un modulo copio il tuo codice...ma poi?



  • di Textomb data: 13/11/2014 13:24:09

    allego il tuo stesso file con l'esempio della UDF applicata.
    spero sia utile al tuo caso.



  • di GQ (utente non iscritto) data: 13/11/2014 13:48:49

    Ho capito ma non è quello che mi serve.

    Io voglio che SOLO il numero del foglio 1 si incrementi, quelli sugli altri fogli sono gli stessi, collegati.
    E' come fosse un DDT con piu' copie.

    Ho bisogno di mettere qualcosa, pensavo ad un pulsante che generasse questo incremento del valore della cella del foglio1, e magari lanciasse pure la stampa.



  • di Zer0Kelvin data: 13/11/2014 14:27:22

    Ciao a tutti.
    Per incrementare il valore di una cella per indicare il n° progressivo di stampe effettuate, puoi usare l'evento Workbook_BeforePrint che si verifica prima della stampa.
    La sub va inserita nel modulo di codice del Workbook.
    -Accedi all'editor VBA
    -Nell'elenco a destra, fai doppio click su "Questa_cartella_di_lavoro" o "ThisWorkbook", a seconda della versione Excel.
    -Nel modulo di codice a destra incolli:


     
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        With Workbooks("Foglio1")
            .Range("I10") = .Range("I10") + 1
        End With
    End Sub
    



  • di Zer0Kelvin data: 13/11/2014 14:40:08

    Per evitare che venga visualizzato lo zero, hai due possibilità
    1) modificare la formula
    2) impostare Excel in modo che gli zeri delle celle vuote per quel foglio non vengano visualizzati
    -> menù file
    ->opzioni
    ->impostazioni avanzate
    ->opzioni di visualizzazione per il foglio di lavoro
    -togli la spunta a: "visualizza zero nelle celle con valore zero"

    La formula invece è questa


     
    E(Foglio1!E15="";"";Foglio1!E15)



  • di Zer0Kelvin data: 13/11/2014 14:41:25

    **EDIT**
    scusa, mi snon "mangiato" un carattere col copia/incolla; la formula è
     
    SE(Foglio1!E15="";"";Foglio1!E15)



  • di Zer0Kelvin data: 13/11/2014 14:48:01


    Presumendo che tu abbia già impostato il corretto layout (orientamento e area di stampa) per ogni foglio della tua cartella, il codice per avviare la stampa di tutti i fogli della cartella è questo:


     
    ActiveWorkbook.PrintOut Copies:=1



  • di GQ (utente non iscritto) data: 14/11/2014 08:49:56

    Grazie per le dritte ma sono un po in confusione.

    Pe la non visualizzazione dell 0 è OK.

    Non mi è chiare come predisporre il codice.
    se io faccio nuovo modulo e copi il codice sotto e salvo...poi come avviene l'aggiornamento?
    Ho privato ma non succede niente.
    Cosa mi manca?



     
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        With Workbooks("Foglio1")
            .Range("I10") = .Range("I10") + 1
        End With
    End Sub



  • di GQ (utente non iscritto) data: 14/11/2014 10:14:02

    ..ti allego il file



  • di Zer0Kelvin (utente non iscritto) data: 14/11/2014 10:46:21

    Ciao.
    In questo momento non posso nè scaricare nè allegare files.
    Comunque ti avevo spiegato come fare; il codice non và in un nuovo modulo, ma

    ______________________________________________________________________________________________
    La sub va inserita nel modulo di codice della cartella di lavoro.
    -Accedi all'editor VBA
    -Nell'elenco a sinistra, fai doppio click su "Questa_cartella_di_lavoro" o "ThisWorkbook", a seconda della versione Excel.
    -Nel modulo di codice che si aprirà a destra incolli il codice qui sotto:
    ______________________________________________________________________________________________

    Ogni volta che lanci una stampa, il codice verrà eseguito automaticamente ed il valore della cella I10 verrà incrementato.
     
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        With Workbooks("Foglio1")
            .Range("I10") = .Range("I10") + 1
        End With
    End Sub



  • di GQ (utente non iscritto) data: 14/11/2014 11:16:54

    Credo di aver fatto come mi hai detto, ma non mi pare funzioni.
    Ti metto il file e vedrai che se provi , stampa sempre un solo numero..
    Considera che le pagine saranno in tutto 5 ( tutte uguali alla 1 ) e che vorrei che una volta stampate uscissero tutte assieme.

    Non sarebbe male se nel codice che tu mi hai dato si possa includere anche quello relativo alla stampa visto che i layout saranno tutti preimpostati, ovvero
    ActiveWorkbook.PrintOut Copies:=1

    Prova a dare un'occhiata e fammi capire dove sbaglio.



  • di Zer0Kelvin (utente non iscritto) data: 14/11/2014 11:42:44

    Come ho detto prima, ora non posso scaricare (sono sulla rete aziendale); provvedo appena mi è possibile.



  • di GQ (utente non iscritto) data: 14/11/2014 11:55:57

    ...ci mancherebbe...grazie per la tua disponibilità



  • di Zer0Kelvin data: 14/11/2014 15:23:22

    Ho allegato il file; ho inserito tutto il codice nella macro collegata al pulsante [STAMPA].
    Il file è esempio.rar.

    Mi chiedevo: ma i cinque fogli sono identici? perchè in tal caso potresti usare un solo foglio ed eseguire
     
    Worksheets("Foglio1").PrintOut Copies:=5



  • di GQ (utente non iscritto) data: 14/11/2014 18:04:49

    Ora provo...comunque differiscono solo nella prima riga



  • di GQ (utente non iscritto) data: 14/11/2014 18:09:56

    qui ora ho solo excel2000 quando vado in stampa mi dà errore di runtime 9..indice non incluso nell'intervallo.

    A te funziona? Dopo ogni stampa la cella I9 si incrementa di 1?



  • di Zer0Kelvin data: 14/11/2014 22:55:33

    Sì, funziona.
    Hai copiato il codice che c'era nel file allegato in un nuovo file?
    Il foglio che contiene la cella da incrementare si chiama Foglio1 ?



  • di GQ (utente non iscritto) data: 17/11/2014 08:39:06

    ti allego l'errore e il file
    non capisco, ma sembra che non riconosca il nome del foglio



  • di Zer0Kelvin data: 17/11/2014 09:16:13

    Ciao.
    Pensavo avessi copiato il codice che c'era nel file che ho allegato...
    Il codice che ho scritto nel post è errato (scusa); bisogna sostituire
    Workbooks("1-mittente")
    con
    WorkSheets("1-mittente")



  • di Zer0Kelvin data: 17/11/2014 09:20:26

    PS: il file che ho allegato invece, viene visualizzato come "ESEMPIO.xlsm di Textomb".



  • di Zer0Kelvin data: 17/11/2014 09:26:47

    C'è anche il file rar indicato come "ESEMPIO.rar di GQ", entrambi contengono l'esempio col codice per la stampa inserito nella macro di un pulsante invece che nell'evento WorkSheet_BeforePrint.



  • di GQ (utente non iscritto) data: 17/11/2014 09:52:01

    Ora ci siamo, stampo ed il numero si incrementa.
    E' perfetto. Grazie