Sviluppare funzionalita su Microsoft Office con VBA Database Scaduti – verifica pagamenti attraverso due condizioni (nome e importo)

Login Registrati
Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
  • Autore
    Articoli
  • #5542 Score: 0 | Risposta

    lookap
    Partecipante

      Salve a tutti non sono molto pratico di VBA ma il sistema che uso per la verifica degli scaduti non mi permette di effettuare una ricerca precisa e pulita delle partite scadute dei fornitori che gestisco. Conoscendo bene excel (non VBA), mi sono detto se non ci fosse quale sintassi che sia capace di fare questo: da un db che scaturisce dal lancio di transazione Ms Dynamics, pulire le partite chiuse

      NOTA: oltre al nome fornitore ed agli importi non ci sono altre discriminanti per l'"accoppiamento" delle partite. Quello a cui sono addivvenuto lo trovate nel Word allegato

      #5866 Score: 0 | Risposta

      lookap
      Partecipante

        Il file

        Allegati:
        You must be logged in to view attached files.
        #5869 Score: 0 | Risposta

        lookap
        Partecipante

          Forse ho migliorato la sintassi ed iniziano a vedersi spiragli per il funzionamento ma il loop non funziona. Chi mi dà una mano?

          In sostanza ho inserito due condizioni:

          1.la prima attraverso ciclo For verifica che 2 righe consecutive nella colonna 2 siano uguali

          2-la seconda verifica che nella colonna 18 della stessa riga precedente ci sia importo uguale a quello successivo.

          grazie molte a chiunque mi dia una mano

          Allegati:
          You must be logged in to view attached files.
          #5870 Score: 0 | Risposta

          Marius44
          Moderatore
            51 pts

            Ciao

            credo sarebbe meglio allegare il file Excel (senza dati sensibili, anche poche righe(colonne) per capire la struttura e poterci lavorare sopra.

            Ciao,

            Mario

            #5872 Score: 0 | Risposta

            lookap
            Partecipante

              A te.

              la colonna 18 è diventata la 11.

              Grazie molte

               

              Allegati:
              You must be logged in to view attached files.
              #5874 Score: 0 | Risposta

              Marius44
              Moderatore
                51 pts

                Ciao Prova con questa macro. ATTENTO. La macro cancella i dati in col.20 perchè io non ho eliminato le righe (ho visto che non manca a te eventualmente farlo) ma ho scritto in detta colonna le righe che andrebbero eliminate.

                `Option Explicit
                
                Sub Cancella()
                Dim ur As Long, i As Long, j As Long
                Dim nm1 As String, nm2 As String, nr1 As String, nr2 As String
                ur = Cells(Rows.Count, 2).End(xlUp).Row
                Columns(20).ClearContents
                For i = 2 To ur - 1
                  nm1 = Cells(i, 2).Value
                  nr1 = Cells(i, 7).Value
                  For j = i + 1 To ur
                    nm2 = Cells(j, 2).Value
                    nr2 = Cells(j, 7).Value
                    If nm1 = nm2 And nr1 = nr2 Then
                      If Abs(Cells(i, 11).Value) - Abs(Cells(j, 11).Value) = 0 Then
                        Cells(i, 20) = "elimina"
                        Cells(j, 20) = "elimina"
                        Exit For
                      End If
                    End If
                  Next j
                Next i
                End Sub
                `Faccio fare un controllo fra il nominativo e il numero della fattura (col.7) e se sono uguali controllo che le due somme siano uguali.
                Vedi se va bene. Ciao,
                Mario
                #5876 Score: 0 | Risposta

                lookap
                Partecipante

                  Marius funziona, grazie mille!

                  Mi domando se non ci dovesse essere il numero di fattura nella colonna (la tesoreria non sempre lo inserisce), funzionerebbe lo stesso? In realtà non funziona ho già provato, ma credo sia una condizione che posso eliminare , al max inserisco che in colonna 7 si debbano avere "fattura" in una riga e "pagamento" nell'altra.

                  Ti ringrazio ancora

                  #5877 Score: 0 | Risposta

                  Marius44
                  Moderatore
                    51 pts

                    Ciao

                    Secondo le ultime richieste la macro diventa questa

                    Option Explicit
                    
                    Sub Cancella()
                    Dim ur As Long, i As Long, j As Long
                    Dim nm1 As String, nm2 As String
                    ur = Cells(Rows.Count, 2).End(xlUp).Row
                    Columns(20).ClearContents
                    For i = ur To 3 Step -1
                      nm1 = Cells(i, 2).Value
                      nm2 = Cells(i - 1, 2).Value
                      If nm1 = nm2 And Abs(Cells(i, 11).Value) - Abs(Cells(i - 1, 11).Value) = 0 Then
                        Rows(i).EntireRow.Delete
                        Rows(i - 1).EntireRow.Delete
                        i = i - 1
                      End If
                    Next i
                    End Sub

                    Ho invertito il procedimento (dal basso verso l'alto vista l'eliminazione delle righe).

                    Fa solo il controllo col nome e l'importo, non il numero fattura (attento se trovi due fatture con lo stesso importo, credo sballi tutto).

                    Fai sapere. Ciao,

                    Mario

                    #5878 Score: 0 | Risposta

                    lookap
                    Partecipante

                      Si funziona e mi rendo conto della possibiltà che vada in bug per eventuali fornitori con importi uguali (credo ce ne siano, affitti mensili ad es.).

                      Perdona, poi, l'ignoranza, ma potrebbe essermi utile concettualmente: perchè per cancellare le righe hai dovuto far partire dal basso ed inserire l'istruzione STEP -1?

                      Ultima cosa, consiglio: devo anche cancellare tutte le intercompany che nell'aging non devono comparire faccio altra, più semplice macro?

                      Grazie ancora e, di nuovo, perdona l'ignoranza di un contabile un pò geek.

                      #5879 Score: 0 | Risposta

                      Marius44
                      Moderatore
                        51 pts

                        Ciao

                        Tutti all'inizio abbiamo posto domande ... semplici, ma diventate tali dopo che hai imparato.

                        Quando si elimina una riga il contatore non può tenerne conto e rimarrebbe sulla stessa riga. Partendo dal basso, invece, il contatore non tiene più conto della riga che ha eliminato perchè ormai ha superato quel numero di riga.

                        Nel tuo caso, in particolare, poichè si eliminano DUE righe, ho detto al contatore di scaricarne una fittizia ( quel i = i - 1 che vedi dopo il codice di eliminazione ).

                        Ultima richiesta: si, puoi creare una macro similare (sempre dal basso verso l'alto se elimini righe).

                        Ciao,

                        Mario

                      Login Registrati
                      Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
                      Rispondi a: Database Scaduti – verifica pagamenti attraverso due condizioni (nome e importo)
                      Gli allegati sono permessi solo ad utenti REGISTRATI
                      Le tue informazioni: