Numeri progressivi nei documenti fiscali come ad esempio DDT e fatture

Anonimo
2012-01-20T06:09:03+00:00

Buongiorno, muy temprano hoy, è proprio il caso di dire!! Prima di tutto buon anno a tutti e adesso veniamo al sodo:

Foglio di lavoro contenete diverse colonne (nel file allegato ho semplificato) tra cui anche il numero d'ordine e rel data associato al cliente ed ad una numerazione univoca annuale; il num DDT e Fattura e rel date associati invece ad una numerazione univoca annuale.

Devo far in modo che una volta inserita la data ordine, la data ddt e d infine la data fattura (possono anche esser inserite in momenti differenti) una macro, nel momento in cui "esco/sposto" dalla cella data trovi il numero progressivo successivo a quello già inserito.

Condizioni: la numerazione dovrà sempre essere di 4 cifre, a esempio per la prima fattura dell'anno 0001; se è la prima data dell'anno dovrà mettere 0001; se inserisco una data antecedente ad una già inserita con il suo numero progressivo dovrà avvisarmi: "attenzione stai inserendo una data precedente ad un num già assegnato"; i numeri una volta trovati dalla macro dovranno esser "martellati" e cioè non potranno esser modificati.

Spero di essermi fatto capire anche così presto di mattina!

Grazie come sempre mi inchino in modo sincero alla Vostra disponibilità

Allego link al file

https://skydrive.live.com/redir.aspx?cid=5e856af67a873b3e&resid=5E856AF67A873B3E!202&parid=5E856AF67A873B3E!164&authkey=!ABiCxWlLrMtvuSM

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

16 risposte

Ordina per: Più utili
  1. Anonimo
    2012-01-20T09:20:35+00:00

    Buongiorno, muy temprano hoy, è proprio il caso di dire!! Prima di tutto buon anno a tutti e adesso veniamo al sodo:

    Foglio di lavoro contenete diverse colonne (nel file allegato ho semplificato) tra cui anche il numero d'ordine e rel data associato al cliente ed ad una numerazione univoca annuale; il num DDT e Fattura e rel date associati invece ad una numerazione univoca annuale.

    Devo far in modo che una volta inserita la data ordine, la data ddt e d infine la data fattura (possono anche esser inserite in momenti differenti) una macro, nel momento in cui "esco/sposto" dalla cella data trovi il numero progressivo successivo a quello già inserito.

    Condizioni: la numerazione dovrà sempre essere di 4 cifre, a esempio per la prima fattura dell'anno 0001; se è la prima data dell'anno dovrà mettere 0001; se inserisco una data antecedente ad una già inserita con il suo numero progressivo dovrà avvisarmi: "attenzione stai inserendo una data precedente ad un num già assegnato"; i numeri una volta trovati dalla macro dovranno esser "martellati" e cioè non potranno esser modificati.

    Spero di essermi fatto capire anche così presto di mattina!

    Grazie come sempre mi inchino in modo sincero alla Vostra disponibilità

    Allego link al file

    https://skydrive.live.com/redir.aspx?cid=5e856af67a873b3e&resid=5E856AF67A873B3E!202&parid=5E856AF67A873B3E!164&authkey=!ABiCxWlLrMtvuSM

    Un foglio(nascosto) con l'ultima data inserita in una cella e nella cella a fianco l'ultimo numero.

    Semplicemente la macro andrà a leggere la data e se la data odierna è = o > di quella nella cella(anche uguale se pensi di inserire più fatture lo stesso giorno), aumenti di uno la cella a fianco e sostituisci la data. O metodi simili.

    Normalmente però, si fa tutto con un pulsante tipo: Nuova fattura o nuovo DDT o nuovo quello che vuoi. Vengono creati i documenti e alla fine quando si confermano viene creato in automatico quanto vedo nel file che hai linkato.

    File che sinceramente, così com'è non capisco. Puoi spiegare meglio, grazie.

    P.S. Hai risolto con il post sull'apertura del file di PowerPoint? Grazie.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2012-01-20T15:03:35+00:00

    Fortissimo funziona!!

    ho provato a farlo anche con il ddt che ha le stesse caratteristiche ma non funziona; ho cambiato la lettera qui

    sMax = "=MAX(e2:e" & Target.Row & ")"

    inserendo la E

    Sei troppo forte.

    Grazie per ora

    Questo dovrebbe risolvere(poi siamo quasi sempre qui):

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim sMax As String

        Dim sCol As String

    On Error GoTo RigaErrore

        Me.Unprotect Password:=""

        If Target.Cells.Count > 1 Then

            Me.Protect Password:=""

            Exit Sub

        End If

        sCol = f(Target.Address)

        sMax = "=MAX(" & sCol & "2:" & sCol & Target.Row & ")"

        Select Case Target.Column

            Case 1, 3, 7

                If IsDate(Target.Value) Then

                    If CDate(Evaluate(sMax)) <= CDate(Target.Value) Then

                        If Target.Row = 2 Then

                            Target.Offset(0, 1).Value = 1

                        ElseIf Year(CDate(Target.Value)) > _

                            Year(CDate(Target.Offset(-1, 0).Value)) Then

                            Target.Offset(0, 1).Value = 1

                        Else

                        Target.Offset(0, 1).Value = _

                            Target.Offset(-1, 1).Value + 1

                        End If

                    Else

                        MsgBox "Data non corretta"

                        Target.Value = ""

                        Exit Sub

                    End If

                End If

        End Select

    RigaChiusura:

        Me.Protect Password:=""

        Exit Sub

    RigaErrore:

        MsgBox Err.Number & vbNewLine & Err.Description

        Resume RigaChiusura

    End Sub

    Private Function f(ByVal s As String) As String

        f = Split(s, "$")(0)

    End Function

    NOTA. Ricorda di formattare le colonne dei numeri con 0000.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-01-20T14:22:25+00:00

    Fortissimo funziona!!

    ho provato a farlo anche con il ddt che ha le stesse caratteristiche ma non funziona; ho cambiato la lettera qui

    sMax = "=MAX(e2:e" & Target.Row & ")"

    inserendo la E

    Sei troppo forte.

    Grazie per ora

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-01-20T11:20:33+00:00

    Buongiorno Mauro!

    Non devo aprire nessun foglio di nuove fatture o altro devo semplicemente inserire dei dati senza creare nessuna fattura.

    Perciò se alla riga 2 ho inserito come numero fattura 12; la riga sotto mi deve proporre 13 dopo aver inserito la cella contenente la data.

    Per i ddt e fattura numerazione progressiva annuale

    Mentre per l'ordine numerazione progressiva annuale in base ad ogni diverso cliente!

    Per l'apertura no; in 2007 funziona alla grande in 2010 no

    Merci e buona giornata

    Sarà una lunga giornata....;-)

    Metti questo codice nel modulo del foglio:

    Private Sub Worksheet_Change(ByVal Target As Range)

        On Error GoTo RigaErrore

        Me.Unprotect Password:=""

        If Target.Cells.Count > 1 Then

            Me.Protect Password:=""

            Exit Sub

        End If

        Dim sMax As String

        sMax = "=MAX(G2:G" & Target.Row & ")"

        Select Case Target.Column

            Case 7

                If IsDate(Target.Value) Then

                    If CDate(Evaluate(sMax)) <= CDate(Target.Value) Then

                        If Target.Row = 2 Then

                            Target.Offset(0, 1).Value = 1

                        ElseIf Year(CDate(Target.Value)) > _

                            Year(CDate(Target.Offset(-1, 0).Value)) Then

                            Target.Offset(0, 1).Value = 1

                        Else

                        Target.Offset(0, 1).Value = _

                            Target.Offset(-1, 1).Value + 1

                        End If

                    Else

                        MsgBox "Data non corretta"

                        Target.Value = ""

                        Exit Sub

                    End If

                End If

        End Select

    RigaChiusura:

        Me.Protect Password:=""

        Exit Sub

    RigaErrore:

        MsgBox Err.Number & vbNewLine & Err.Description

        Resume RigaChiusura

    End Sub

    • Elimina tutti i dati dalla riga 2 nel foglio
    • Seleziona la colonna H
    • Formato
    • Formato celle
    • Numero
    • Personalizzato
    • Come tipo scrivi: 0000
    • Ok
    • Seleziona le colonne A, B, C, E, G
    • Formato
    • Formato celle
    • Protezione
    • Togli la spunta da: Bloccata
    • Ok
    • Proteggi il foglio(lascia stare la password per ora)  e togli la spunta da: Seleziona celle bloccate

    Per ora il codice lavora solo se inserisci una data da G2 in poi. Prova un po'(cambia anno, inserisci date precedenti, ecc), poi continuiamo. L'ho scritto, sarà lunga...;-)

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2012-01-20T10:05:41+00:00

    Buongiorno Mauro!

    Non devo aprire nessun foglio di nuove fatture o altro devo semplicemente inserire dei dati senza creare nessuna fattura.

    Perciò se alla riga 2 ho inserito come numero fattura 12; la riga sotto mi deve proporre 13 dopo aver inserito la cella contenente la data.

    Per i ddt e fattura numerazione progressiva annuale

    Mentre per l'ordine numerazione progressiva annuale in base ad ogni diverso cliente!

    Per l'apertura no; in 2007 funziona alla grande in 2010 no

    Merci e buona giornata

    La risposta è stata utile?

    0 commenti Nessun commento