Domanda.

nome=Fausto
cognome=Brancaccio
versione=2002
conosco1=poco
macro=SI
email=fbrancio@virgilio.it
chri=129
problema=Salve, io ho un quesito, ogni mese devo fare una rendicontazione di merce venduta,ogni pezzo di questa merce ha un codice, io nelle righe dove c'è questo codice devo riferire la quantità venduta e poi fare una stampa, siccome i codici sono circa 1200, e quindi ogni volta stampo e non vendo tutta la merce quindi alcune righe sono senza valore tranne il codice della merce, io vorrei stampare solo le righe dove ho inserito il valore o meglio la quantità di merce venduta, magari con un pulsante che filtra e poi me li copia su un altro foglio di sintesi, naturalmente dopo bisognerebbe annullare l'operazione, mi hanno detto di usare la proprietà scenario.change, ma non riesco a capire come inserirla in una routine, mi potreste dare una mano, almeno risparmio un bel pò di carta, grazie anticipatamente, anche se non potete rispondermi, già fate molto con questo sito.
 

Risposta.

senti Fausto, visto che dici di conoscere poco Excel, diventa per te un problema seguire qualunque strada.
Anche se usi un filtro, dovresti usarlo sulla colonna valori, ma se il filtro trova celle vuote, il filtro si ferma e non prosegue, quindi non ti filtrerebbe, e non è possibile filtrare celle vuote.
L'unica maniera che conosco, e usare il vba: dovresti creare un ciclo che legga la colonna dove hai i valori, e se trova una cella vuota, nasconda l'intera riga ; a questo punto ti trovi con un foglio dove solo le righe con valori sono visibili. Se andrai in stampa, ti vengono stampate solo le righe visibili.
Poi dovrai dopo la stampa, che comunque puoi automatizzare, rendere di nuovo visibili tutte le righe. Ti mando due routine, dove simulo che la colonna da controllare valori sia la B, e io metto per farti capire, fino alla riga 10, tu metterai i tuoi riferimenti:

Sub NascondiVuote()
For Each c In Range("B1:B10")
If c.Value = "" Then
c.EntireRow.Hidden = True
End If
Next
End Sub


e questa la routine per scoprire le righe nascoste:

Sub ScopriVuote()
For Each c In Range("B1:B10")
If c.Rows.Hidden = True Then
c.Rows.Hidden = False
End If
Next
End Sub


ciao, fammi sapere, ennius