macro VBA



  • macro VBA
    di itdfabe data: 12/10/2015 17:49:23

    Ciao A tutti,
    sono un neofita di VBA ed ho bisogno di una mano per gestire questa problematica.
    Un foglio di lavoro contiene n colonne e (variabile mensilmente) oltre 16.000 righe di dati estratte dal gestionale aziendale. Il file deve essere inviato ad un cliente, formattato diversamente da come si presenta durante l'estrazione.
    ESEMPIO DI FILE ESTRATTO
    ndocum CodDealerSocEst NumAutorizzaz codintgy totaleimpon iva qta
    5114798644 011098717 MG170807CHS 000009719 18 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798645 011098717 MG189463DIJ 000009719 18 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1

    ESEMPIO FILE DA INVIARE AL CLIENTE:
    ndocum CodDealerSocEst NumAutorizzaz codintgy totaleimpon iva qta
    5114798644 011098717 TST 70,76 00
    5114798644 011098717 MG170807CHS 000009719 18,00 22 1
    5114798644 011098717 MG170807CHS 000009732 8,50 22 4
    5114798644 011098717 MG170807CHS 000009734 1,50 22 4
    5114798645 011098717 TST 63,44 00
    5114798645 011098717 MG189463DIJ 000009719 18,00 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,50 22 4

    Ovvero, per ogni documento indicato nella prima colonna, ci sono una serie di lavorazioni indicate dal codice CODINTGY. Il cliente vuole per ogni fattura, una prima linea di riepilogo, con ripetizione del numero di fattura e del codice società, la descrizione TST (TESTATA) e la somma dell'imponibile di ogni riga * IVA al 22%.
    Le righe successive per la stessa fattura devono essere la sintesi per tipologia di CODINTGY, e la colonna QTA la somma delle singole righe con lo stesso codice.
    Il tutto poi deve essere esportato in formato CSV.

    Qualcuno ha già affrontato problematiche simili e ha una soluzione VBA disponibile ?

    Grazie



  • di Raffaele_53 data: 12/10/2015 20:40:29

    Da provare.
    Crea nella stessa directory, un file csv con data odierna



  • di itdfabe data: 13/10/2015 09:00:15

    Scusami Raffaele_53
    ma non ho capito la tua risposta ...



  • di Raffaele_53 data: 13/10/2015 11:05:37

    In alto a destra c'è l'allegato, salvalo dove desideri.
    Premendo il bottone crea nello stesso posto un file 2015_10_13.csv



  • di itdfabe data: 13/10/2015 11:37:31

    Grazie 1000.
    Scusa ma non avevo visto l'allegato.
    Mi sembra perfetto ...
    Copio e ti ringrazio tantissimo



  • di itdfabe data: 14/10/2015 12:04:59

    Ciao,
    ho notato che con l'aumentare delle linee, il totale delle qtà aggregate viene riportato in modo errato (ad esempio 5 al posto di 4).
    Ecco un elenco maggiore di dati.

    ndocum CodDealerSocEst NumAutorizzaz codintgy totaleimpon iva qta
    5114798644 011098717 MG170807CHS 000009719 18 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798644 011098717 MG170807CHS 000009734 1,5 22 1
    5114798645 011098717 MG189463DIJ 000009719 18 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 1
    5114798646 011098717 MG214454DHZ 000009732 8,5 22 1
    5114798646 011098717 MG214454DHZ 000009732 8,5 22 1
    5114798646 011098717 MG214454DHZ 000009732 8,5 22 1
    5114798646 011098717 MG214454DHZ 000009732 8,5 22 1
    5114798647 011098717 MG116865DHZ 000009627 72,68 22 1
    5114798647 011098717 MG116865DHZ 000009628 72,68 22 1
    5114798647 011098717 MG116865DHZ 000009629 72,68 22 1
    5114798647 011098717 MG116865DHZ 000009630 72,68 22 1
    5114798647 011098717 MG116865DHZ 000009719 18 22 1
    5114798647 011098717 MG116865DHZ 000009722 5 22 1
    5114798647 011098717 MG116865DHZ 000009722 5 22 1
    5114798647 011098717 MG116865DHZ 000009722 5 22 1
    5114798647 011098717 MG116865DHZ 000009722 5 22 1
    5114798647 011098717 MG116865DHZ 000010852 2,5 22 1
    5114798647 011098717 MG116865DHZ 000010852 2,5 22 1
    5114798647 011098717 MG116865DHZ 000010852 2 22 4
    5114798647 011098717 MG116865DHZ 000010852 2,5 22 1
    5114798647 011098717 MG116865DHZ 000010852 2,5 22 1
    5114798648 011098717 MG111095CPX 000009719 18 22 1
    5114798648 011098717 MG111095CPX 000009732 8,5 22 1
    5114798648 011098717 MG111095CPX 000009732 8,5 22 1
    5114798648 011098717 MG111095CPX 000009732 8,5 22 1
    5114798648 011098717 MG111095CPX 000009732 8,5 22 1
    5114798649 011098717 MG126678WPN 000009732 8,5 22 1
    5114798649 011098717 MG126678WPN 000009732 8,5 22 1
    5114798649 011098717 MG126678WPN 000009732 8,5 22 1
    5114798649 011098717 MG126678WPN 000009732 8,5 22 1
    5114798649 011098717 MG126678WPN 000010852 2,5 22 1
    5114798649 011098717 MG126678WPN 000010852 2,5 22 1
    5114798649 011098717 MG126678WPN 000010852 2,5 22 1
    5114798649 011098717 MG126678WPN 000010852 2,5 22 1
    5114798650 011098717 MG119193EAT 000009719 18 22 1
    5114798650 011098717 MG119193EAT 000009732 8,5 22 1
    5114798650 011098717 MG119193EAT 000009732 8,5 22 1
    5114798650 011098717 MG119193EAT 000009732 8,5 22 1
    5114798650 011098717 MG119193EAT 000009732 8,5 22 1
    5114798650 011098717 MG119193EAT 000010852 2,5 22 1
    5114798650 011098717 MG119193EAT 000010852 2,5 22 1

    Se applico il tuo codice VBA ottengo:

    ndocum CodDealerSocEst NumAutorizzaz codintgy totaleimpon iva qta
    5114798644 011098717 TST 70,76 0
    5114798644 011098717 MG170807CHS 000009719 18 22 EM736TH 1
    5114798644 011098717 MG170807CHS 000009732 8,5 22 EM736TH 4
    5114798644 011098717 MG170807CHS 000009734 1,5 22 EM736TH 4
    5114798645 011098717 TST 63,44 0
    5114798645 011098717 MG189463DIJ 000009719 18 22 EM513TJ 1
    5114798645 011098717 MG189463DIJ 000009732 8,5 22 EM513TJ 5
    5114798646 011098717 TST 41,48 0
    5114798646 011098717 MG214454DHZ 000009732 8,5 22 EP909MF 5
    5114798647 011098717 TST 415,6784 0
    5114798647 011098717 MG116865DHZ 000009627 72,68 22 ER111LJ 1
    5114798647 011098717 MG116865DHZ 000009628 72,68 22 ER111LJ 1
    5114798647 011098717 MG116865DHZ 000009629 72,68 22 ER111LJ 1
    5114798647 011098717 MG116865DHZ 000009630 72,68 22 ER111LJ 1
    5114798647 011098717 MG116865DHZ 000009719 18 22 ER111LJ 1
    5114798647 011098717 MG116865DHZ 000009722 5 22 ER111LJ 4
    5114798647 011098717 MG116865DHZ 000010852 2,5 22 ER111LJ 5
    5114798648 011098717 TST 63,44 0
    5114798648 011098717 MG111095CPX 000009719 18 22 EA304ZJ 1
    5114798648 011098717 MG111095CPX 000009732 8,5 22 EA304ZJ 5
    5114798649 011098717 TST 53,68 0
    5114798649 011098717 MG126678WPN 000009732 8,5 22 EX529EE 5
    5114798649 011098717 MG126678WPN 000010852 2,5 22 EX529EE 4
    5114798650 011098717 TST 69,54 0
    5114798650 011098717 MG119193EAT 000009719 18 22 EH231GA 1
    5114798650 011098717 MG119193EAT 000009732 8,5 22 EH231GA 4
    5114798650 011098717 MG119193EAT 000010852 2,5 22 EH231GA 1

    in molte linee la quantità aggregata dovrebbe essere 4 ma il risultato è 5.



  • di Raffaele_53 data: 14/10/2015 12:34:24

    Per non farmi ricreare il tutto, puoi spostare un allegato?
    Evidenzia in giallo i valori errati.



  • di itdfabe data: 14/10/2015 12:37:14

    ok
    trovi il file con la VBA inclusa



  • di Raffaele_53 data: 14/10/2015 16:06:08

    Non sò come hai fatto, però mi hai sovrascritto il mio allegato? (io lo sò)
    Prima finiva in colonna G con "QTA"

    Adesso in colonna "G" c'è una sigla? e finisce in "H" con "QTA"
    Non ricordo bene, mi sembrava che il mio codice prevedeva di contare la colonna "G" e non "H".
    Fammi sapere cosa devo fare/modificare.

    Ps. Evidenzia in giallo i valori errati. Grazie



  • di itdfabe data: 14/10/2015 17:21:30

    Ok
    ho rimesso il file che mi hai mandato ...
    Nello sheet2 c'è il risultato dell'esecuzione VBA, ed in giallo ho inserito i numeri che dovrebbero essere conteggiati come 4 e non come 5.
    Ho provato a rivedere le variabili e facendo un debug ho seguito passo passo quello che fanno, ma tutto sembra corretto, (vedi i primi record) e poi il risultato è errato in altri.

    Grazie



  • di Raffaele_53 data: 14/10/2015 20:50:47

    In effetti c'èra un errore,
    il tutto dovuto che in colonna A cambiava il codice, invece in D era il medesimo
    Se guardi queste 5 righe, la Qta sarà 8 oppure 5? Modifica il codice che puoi scegliere tra le due opzioni.

    5114798647-011098717-MG116865DHZ-000010852-2-22-4
    5114798647-011098717-MG116865DHZ-000010852-2,5-22-1
    5114798647-011098717-MG116865DHZ-000010852-2,5-22-1
    5114798647-011098717-MG116865DHZ-000010852-2,5-22-1
    5114798647-011098717-MG116865DHZ-000010852-2,5-22-1
    Allegato



  • di itadfabe (utente non iscritto) data: 15/10/2015 07:39:35

    Grazie Raffaele,
    in questo caso specifico la somma dovrebbe essere 8, ovvero la somma delle qtà ad 1 per il codice 000010852 + quella di 4 sempre per lo stesso codice.
    La prima colonna rappresenta il numero di fattura, la colonna con il codice (vedi 000010852) rappresenta le lavorazioni effettuate ed inserite in fattura (nel nostro gestionale tutte le righe devono essere riportate, mentre il cliente vuole poi un summary per lavorazione).