You are here:Home-Domande su Excel VBA e MACRO-impostare una zona di stampa che si adatti
impostare una zona di stampa che si adatti2020-10-14T09:30:50+02:00

Home Forum Domande su Excel VBA e MACRO impostare una zona di stampa che si adatti

Visualizzazione 11 filoni di risposte
  • Autore
    Post
    • AvatarStefano
      Partecipante
        Post totali: 3

        buon giorno,

        sto tentando di produrre una macro ( col registratore macro) che imposti una zona di stampa che di volta in volta vada a stampare i dati contenuti nelle colonne a1:g, il numero da mettere accanto al g può variare da 40 a 62 in base al fatto che le righe contengano più o meno dati.

        io riesco tramite una serie di fine giu e su a selezionare correttamente l’area, ma quando poi seleziono il tasto imposta stampa nella macro viene visualizzata la riga active sheet page setup print area=a$1:g$54 e questa impostazione poi non cambia più,
        cosa posso tentare?

        grazie

        stefano

        • Questo topic è stato modificato 2 settimane, 2 giorni fa da AvatarStefano. Motivo: avevo copiato il codice vba da me fatto ma ho visto che nel post sono apparsi una marea di segni
      • BySalvBySalv
        Amministratore del forum
          Post totali: 783

          Ciao Stefano, l’area di stampa una volta impostata non cambia, avviene qualcosa che la fa cambiare.

          qualcosa preimpostato, l’unica e suggerirti una macro che varia l’area di stampa al variare di tuoi dati, ma avrei bisogno di vedere il tuo file, anche con dati fittizi per capire il problema più a fondo, inserisci un file anche con il risultato fatto manualmente.

          Ciao By Sal (8-D

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

        • Avatartreno58
          Partecipante
            Post totali: 7

            https://www.dropbox.com/s/w52glvjabev0pd6/PROGRAMMA%20VACCINALE%20GENERICO.xlsm?dl=0

            ecco il link al foglio originale, problemi zero non c’è nulla di fiscale.

            il funzionamento è questo:

            il file si apre sul foglio “programma lavoro” (questa è una macro di archiforum), io imposto il programma interventi tramite il tasto “menù” (anche qui centra molto archiforum) e quando ho finito col tasto “crea foglio” (ebbene si, c’è archiforum anche qui) la macro chiede il nome, crea il nuovo foglio e vi trasporta la parte di deati che mi interessano dal foglio master; fino a qui tutto bene

            poi sempre la stessa macro mi dovrebbe selezionare la zona da stampare e adattarla ad un unico foglio, il problema è che sempre la zona parte dalla cella a1, prende le colonne fiono alla g compresa ma il numero di righe varia al variare degli interventi programmati da una quarantina a una sessantina, è questa variazione che non riesco a far fare in automatico alla macro.

            grazie

            • Questa risposta è stata modificata 2 settimane, 1 giorno fa da Avatartreno58.
          • BySalvBySalv
            Amministratore del forum
              Post totali: 783

              Ciao treno, credo che tu voglia stampare ogni nuovo foglio che crei, oppure scegli il foglio da stampare.

              dimmelo perche altrimenti devo variare la macro, cioè se stampi solo alla creazione oppure scegli il foglio e lanci la stampa

              inoltre dici che alcuni fogli hanno 61 righe, il nuovo foglio creato ne porta 47, com’è che ne vengono 61, le aggiungi tu prima della stampa?

              comunque ti ho fatto alcune simulazioni prova29 e la normale 47 righe, prova30 credo che sia 61 righe non le ho contate prova40 invece la stampa è divisa su 2 fogli riportando l’intestazione

              dimmi tu su quale devo attenermi, ti allego il link delle stampe fatte
              http://www.filedropper.com/desktop_145

              Ciao By Sal (8-D

              Ciao By Sal (8-)
              se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            • Avatartreno58
              Partecipante
                Post totali: 7

                io vorrei impostare la zona di stampa quando creo il nuovo foglio, poi la zona per quel foglio li rimane quella per sempre, ma se scorri i fogli dei programmi vaccinali precedenti vedrai che le zone non sono tutte uguali, perchè se programmo più o meno interventi le zone saranno formate da più o meno righe, quindi devo trovare il modo di far controllare alla macro di creazione del foglio da quante righe è composta la zona del foglio che è in creazione e da fargliela impostare come zona di stampa. le 61 righe sono solo la massima estensione raggiungibile dalla zona, in pratica però le righe saranno sempre più o meno una cinquantina quindi ci dovrebbero poter stare in un unico foglio

                 

                grazie

                 

                • Questa risposta è stata modificata 2 settimane fa da Avatartreno58.
              • AvatarKris_9951
                Partecipante
                  Post totali: 178

                  Ciao Treno58!

                  Prova questo.
                  L’area di stampa si adatta di volta in volta in base a come crei il nuovo foglio

                  Fai sapere (se vuoi)

                  https://www.dropbox.com/s/nrbtcsp7z0qxapf/PROGRAMMA%20VACCINALE%20GENERICO2.xlsm?dl=0

                • BySalvBySalv
                  Amministratore del forum
                    Post totali: 783

                    Ciao Prova cosi e vedi se va bene, ti ho messo un icona per la stampa nel foglio “programma lavoro” ci clicchi sopra e si apre il form per la stampa, scegli il foglio da stampare e poi scegli il tipo di stampa, tutto qui.

                    logicamente non devi scegliere fogli dove non ci sono i dati che ti servono, altrimenti dovrei sapere quali sono i fogli e non farli vedere nel menu a tendina.

                    Ciao By Sal (8-D

                    http://www.filedropper.com/programmavaccinalegenerico

                    Ciao By Sal (8-)
                    se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                  • AvatarStefano
                    Partecipante
                      Post totali: 3

                      krys 9951 mi ha dato la soluzione che cercavo, finalmente ho capito come usare il codice:

                      ActiveSheet.PageSetup.PrintArea = “$A$1:$G$” & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

                      Application.PrintCommunication = False

                      With ActiveSheet.PageSetup

                      .PrintTitleRows = “”

                      .PrintTitleColumns = “”

                      End With

                      ora vorrei sapere se le righe che lo precedono (una serie di fine giu e fine su) devo mantenerle o sono diventate superflue.

                       

                      per quanto riguarda invece la soluzione di bysalv, potrebbe essere uno step successivo perchè in effetti a me interessa dimensionare la zona da stampare in modo da farcela stare su una sola pagina, poi potrei continuare con il codice in modo da far tornare la visualizzazione alla prima pagina e usare il tasto dedicato alla stampa di bysalv che mi piace molto perchè dato che i fogli sono destinati ad aumentare di numero nel tempo potrebbe essere più facile andarli a trovare

                       

                      grazie

                       

                    • AvatarStefano
                      Partecipante
                        Post totali: 3

                        comunque non so perchè ma nella soluzione di bysal anche se lui pure ha usato il codice (più o meno) che ho scritto sopra l’impaginazione non mi sembra corretta, a volte stampa in 2 a volte anche in 4 pagine

                         

                      • Avatartreno58
                        Partecipante
                          Post totali: 7

                          Buon giorno,

                          hopaciugato tutto ieri ed ho ottenuto una versione definitiva del file, in realtà mi sono solo limitato ad accoppiare i suggerimenti di kris per dimensionare correttamente la zona di stampa e ad aggiungere il pulsante di bysalv per avere la possibilità di cercare la pagina creata da una casella a discesa invece che andando avanti ed indietro fra i vari fogli, ora per finire,  orrii fare in modo da non far apparire i fogli

                          istruzioni

                          programma lavoro

                          Costi vaccini

                          temperature

                          luce

                          distribuzione vaccini

                          nella casella a discesa, lo aveva già immaginato bysalv quindi spero non sia troppo difficile

                           

                          grazie

                           

                        • BySalvBySalv
                          Amministratore del forum
                            Post totali: 783

                            Ciao Treno, quando si apre il form riempie il combobox con i nomi dei fogli con un ciclo for.

                            in questo ciclo for fai controllare il nome del foglio nel caso corrisponde a quello che non serve salta la scrittura nella combobox
                            faccio prima a scriverla

                            Private Sub UserForm_Activate()
                            Dim d, x
                            For x = 1 To Sheets.Count
                                d = Sheets(x).Name
                                If d = "Istruzioni" Or d = "programma lavoro" Or d = "costo vaccini" Or _
                                    d = "Temperature" Or d = "luce" Or d = "Distribuzione vaccini" Then GoTo 1
                                ComboBox1.AddItem Sheets(x).Name
                            1 Next x
                            ComboBox1.SetFocus
                            End Sub

                            io l’ho scritta cosi, ma devi controllare la scrittura esatta dei fogli con maiuscole o minuscole altrimenti non riconosce il nome del foglio.

                            se non dovesse andare sostituisci “Or” con “And”

                            Ciao By Sal (8-D

                            Ciao By Sal (8-)
                            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                          • Avatartreno58
                            Partecipante
                              Post totali: 7

                              perfetto, ora tutto funziona a dovere!

                              questo post lo metterei chiuso perchè ora voglio tentare di rendere possibile l’inserimento dei nuovi prodotti nella tabella “vaccini” automatica ma penso sia meglio aprire un post più specifico

                               

                              grazie ancora!

                               

                              ho seguito le istruzioni per mettere il risolto, spero di aver capito bene

                               

                              • Questa risposta è stata modificata 1 settimana, 5 giorni fa da Avatartreno58.
                              • Questa risposta è stata modificata 1 settimana, 5 giorni fa da Avatartreno58.
                          Visualizzazione 11 filoni di risposte
                          • Devi essere connesso per rispondere a questo topic.