Condividi tramite

Eliminare righe automaticamente

Anonimo
2018-04-13T11:00:01+00:00

Buongiorno

In un modello di fattura le righe dalla riga 29 alla 39 l’altezza delle righe è impostata a 32

Tramite macro queste stesse righe, se il contenuto dei dati è tale, posso aumentare automaticamente l’altezza.

Quando questo avviene, però, l’impaginazione della fattura aumenta e la stampa risulta su due pagine.

C’è un modo/macro che quando questo avviene, elimini automaticamente la riga 39, poi la 38 e così via?

Grazie

Rugantino

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

11 risposte

Ordina per: Più utili
  1. Anonimo
    2018-04-15T07:41:01+00:00

    Ciao Rugantino,

    Grazie innanzitutto per la tempestività.

    Prego!

    Riguardo alla prima domanda, è già prevista una seconda pagina della fattura nel caso (molto raro) avessi da inserire altri prodotti.

    Per quanto riguardo la seconda domanda, agendo sulle impostazioni di stampa (adattamento alla pagina – 1 pagina) che ho già provato, il risultato non è del tutto sodisfacente.

    Per cui ho optato sulla possibilità di eliminare, man mano che una cella aumenti in altezza, la riga 39 poi 38, 37, 36 e così via, per poi, se necessario, passare alla seconda pagina della fattura per inserire altri prodotti.

    Bene, sul presupposto che i pericoli previsti da me siano solo il frutto della mia immaginazione e, quindi, facendo precisamnente quello richiesto da te, nel modulo di codice del foglio FatturaSing, sostituisci il tuo codice con la seguente versione:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim NewRwHt As Double

        Dim cWdth As Double, MrgeWdth As Double

        Dim rCell As Range, cc As Range

        Dim ma As Range

        Dim Rng As Range

        Dim oldRowHeight As Double

        Set Rng = Intersect(Me.Columns("E"), Target)

        If Not Rng Is Nothing Then

            On Error GoTo XIT

            Me.Unprotect    'Password:="rugantino"

            With Application

                .ScreenUpdating = False

                .EnableEvents = False

            End With

            For Each rCell In Rng.Cells

                With rCell

                    If .MergeCells And .WrapText Then

                        cWdth = .ColumnWidth

                        Set ma = .MergeArea

                        With ma

                            For Each cc In .Cells

                                MrgeWdth = MrgeWdth + cc.ColumnWidth

                            Next ma

                            .MergeCells = False

                        End With

                        .ColumnWidth = MrgeWdth

                        oldRowHeight = .RowHeight

                        .EntireRow.AutoFit

                        NewRwHt = .RowHeight

                        .ColumnWidth = cWdth

                        If NewRwHt > oldRowHeight Then

                            If .EntireRow.Cells(2, "P") <> "TOTALI" Then

                                .Offset(1).EntireRow.Delete

                            End If

                        End If

                        With ma

                            .MergeCells = True

                            .RowHeight = NewRwHt

                        End With

                        cWdth = 0: MrgeWdth = 0

                    End If

                End With

            Next rCell

        End If

    XIT:

        Me.Protect    'Password:="rugantino"

        With Application

            .ScreenUpdating = True

            .EnableEvents = True

        End With

    End Sub

    '<<=========

    Potresti scaricare il mio file di prova Rugantino20180415.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2018-04-14T15:37:11+00:00

    Ciao Rugantino,

    Rugantino:

    In un modello di fattura le righe dalla riga 29 alla 39 l’altezza delle righe è impostata a 32

    Tramite macro queste stesse righe, se il contenuto dei dati è tale, posso aumentare automaticamente l’altezza.

    Quando questo avviene, però, l’impaginazione della fattura aumenta e la stampa risulta su due pagine.

    C’è un modo/macro che quando questo avviene, elimini automaticamente la riga 39, poi la 38 e così via?

    Norman:

    Per vedere sia la struttura della fattura che il codice della tua macro, ti chiederei gentilmente di caricare un file di esempio, dopo averlo depurato dei dati sensibili. Carica il file su un servizio di condivisione di file, per esempio Microsoft OneDrive o DropBox, e posta un link al file in una risposta qui.

    Rugantino:

    Forse così ci riesco

    https://www.dropbox.com/s/iu5ifano6mpp950/FATTURA_2018_Rugantino.xls?dl=01

    Ho scaricato il tuo file.

    Penso che ciò che chiedi possa essere tecnicamente fattibile, nonostante l'indesiderata, da parte mia, proliferazione di celle unite!

    Tuttavia, vorrei suggerire che la cancellazione di una o più righe della fattura potrebbe essere soggetta alla legge di conseguenze impreviste!

    Ad esempio, cosa accadrebbe se ci fossero più di otto articoli in fattura e le righe 38 e 39 fossero state cancellate? Inoltre, che cosa dovrebbe accadere se il testo problematico dovesse essere inserito nell'ultima riga della fattura? In quest'ultimo caso, presumibilmente non sarebbe possibile eliminare la riga incriminata!

    Vorrei quindi porre due domande:

    • In che modo gestiresti attualmente il problema di una fattura che includesse più prodotti rispetto alle 10 righe di articoli assegnate?
    • Anziché tentare di eliminare righe, non sarebbe preferibile assicurarsi che la fattura venga stampata su una singola pagina, utilizzando le impostazioni di stampa?

    Aggiungerei, anche se sia di poca importanza, che credo che l'altezza di riga di interese sia 23 anziche 32.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2018-04-14T09:33:49+00:00

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-04-14T09:19:33+00:00

    Ciao

    Ho allegato il file della fattura, ma sinceramente non ho capito se è andato tutto a buon fine...

    Rugantino

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2018-04-13T13:36:23+00:00

    Ciao RugantinoGio,

    In un modello di fattura le righe dalla riga 29 alla 39 l’altezza delle righe è impostata a 32

    Tramite macro queste stesse righe, se il contenuto dei dati è tale, posso aumentare automaticamente l’altezza.

    Quando questo avviene, però, l’impaginazione della fattura aumenta e la stampa risulta su due pagine.

    C’è un modo/macro che quando questo avviene, elimini automaticamente la riga 39, poi la 38 e così via?

    Per vedere sia la struttura della fattura che il codice della tua macro, ti chiederei gentilmente di caricare un file di esempio, dopo averlo depurato dei dati sensibili. Carica il file su un servizio di condivisione di file, per esempio Microsoft OneDrive o DropBox, e posta un link al file in una risposta qui.

    Per caricare il file su Microsoft OneDrive, vedi:

    https://support.office.com/it-it/article/Condividere-file-e-cartelle-di-OneDrive-9fcc2f7d-de0c-4cec-93b0-a82024800c07

    Nel caso di DropBox, vedi:

    https://www.dropbox.com/it/help/topics/sharing_files_and_folders

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento