Salva a tutti, avrei bisogno di aiuto per semplificare una cosa se possibile, vado a spiegare:
nel mio programma gestionale,oltre alle schede funzionali e di informazioni, ho +o- 350 fogli tutti con identica struttura dove è presente schema fattura e scheda cliente, la fatturazione è fondamentalmente trimestrale quindi ogni trimestre ho parecchie fatture
da fare, la particolarità che non tutti devono essere fatturati, alcuni clienti hanno fatturazione tipo semestrale annuale oppure posticipata o anticipata rispetto ad un trimestre, quindi ho fatto praticamente 5 macro che mi coprono tutte le eventualità ,
4 trimestri normali , in cui sono presenti anche le altre eccezioni ( es. fatturazione annuale anticipata sul 1° trimestre) ed un trimestre per le posticipate, con questo schema in base alle mie esigenze:
Sub Macro9()
'
' Macro9 Macro
'
Dim Risp As Integer
Risp = MsgBox("Stampa fatturazione 1° trimestre", 1 + 32, "Stampa")
If Risp = 1 Then
Application.ScreenUpdating = False
Sheets("1").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("2").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("3").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("4").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("5").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("6").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("7").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("8").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Sheets("10").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
...
...
...
Sheets("410").Select
Application.Run "'Fatturazione completa.xlsm'!Macro2"
Application.ScreenUpdating = True
MsgBox "Hai stampato la fatturazione del 1° trimestre", 0 + 64, "Stampa"
Else
Exit Sub
End If
End Su
Utilizzo tutti i select proprio per selezionare manualmente quelle che voglio effettivamente stampare appartenenti a quel periodo.
La macro2 , stampa 1 pagina dell'area di stampa
Sub Macro2()
'
' Macro2 Macro
' stampa fattura
'
' Scelta rapida da tastiera: CTRL+s
'
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True, IgnorePrintAreas:=False
End Sub
Ci tengo a precisare che le schede vanno si da 1 a 410 , ma non sono consecutivi, per intenderci ci sono dei "buchi", schede che sono state eliminate per via di disdette o sospensioni. es .... 7 - 8 - 10 - 12 ...etc
Chiaramente con questo metodo mi funziona, metto le schede che voglio che siano stampate, però devo farlo manualmente dalla macro, e se devo cancellare un cliente , mi devo ricordare di cancellare quella scheda in tutte le macro.
La mia domanda è , sarebbe possibile invece fare una macro che mi prenda la condizione se stampare o meno da un foglio?!? spiego:
faccio un foglio "stampa" e lo strutturo così per esempio
A | B | C | D | E | F |
Cod cliente | Stampa 1° trim | Stampa 2° trim | Stampa 3° trim | Stampa 4° trim | Stampapost |
1 | SI | SI | SI | SI | NO
2 | SI | SI | SI | SI | NO
3 | NO | SI | NO | SI | NO
4 | SI | SI | SI | SI | NO
5 | NO | NO | NO | NO | SI
...
Magari con una inputbox che mi chieda quale periodo voglio stampare, attraverso l'immisione dei valori di riferimento. esempio 1 - 2 - 3 - 4 o post
Così da racchiudere tutto in una macro e fare una cosa più rapida in caso di modifiche.
Il numero del codice cliente corrisponde sempre al foglio del cliente, esempio cod 1 corrisponde al foglio "1"
Grazie mille per l'attenzione e l'eventuale aiuto!
Paolo