smistare dati



  • smistare dati
    di robybarc data: 27/10/2015 17:14:14

    Ciao a tutti,
    ho elaborato una macro che mi smista in una tabella tutti i clienti ai quali assegna per ogni fattura emessa il mese di competenza andandolo a cercare nelle righe delle descrizioni.
    Per esempio, al cliente ALFA verranno assegnati i mesi che si trovano in tutte le fatture emesse nell'anno che si sta elaborando oltre che la data e nr. fattura.
    in questo modo posso controllare se ad ogni cliente durante l'anno sono stati contabilizzati tutti i mesi.
    Nel caso di inserimento di un mese doppio nella tabella di controllo verra evidenziato l'evento.

    Allego un file con inseriti dati NON SENSIBILI in modo che possiate vedere quello che non è semplice da spiegare.

    Questa macro mi è utile per evitare di conteggiare erroneamente doppie prestazioni ma anche per verificare che non ne siano state dimenticate.

    La macro funziona perfettamente, ma l'ho elaborata usando banali e ripetitive istruzioni in quanto sono ai primi approcci con il linguaggio VBA.

    Chiedevo soltanto di dare un'occhiata e dirmi se e dove posso migliorarla.

    Grazie
    Roberto



  • di patel data: 27/10/2015 18:43:01

    ci sono tutti i select da eliminare, vedi esempio 
     
         Range("N7").Copy
         Sheets("SS1SS1").Select
         Range("B15").Select
         Selection.PasteSpecial Paste:=xlPasteValues
    diventa
         Range("N7").Copy  
        Sheets("SS1SS1").Range("B15").PasteSpecial Paste:=xlPasteValues






  • di robybarc data: 28/10/2015 11:04:25

    Ciao Patel,
    grazie per il consiglio, almeno cosi recupero alcune righe di codice,
    piuttosto volevo sapere se c'era la possibilità di semplificare il pezzo di macro dove su ogni riga prendo in considerazione una cella per volta nominandola "StrisciaDescrizione" e non tutta la sua area per cercare i vari mesi per poi attribuirli alla giusta casella nel foglio FM1FM1.
    Grazie
    Roberto



  • di patel data: 28/10/2015 15:58:47

    non è necessario attribuire un nome ad ogni range, basta assegnare una variabile, inoltre evita l'uso smodato di activecell, porta facilmente ad errori, per es. 
     
    ' ELIMINO GRUPPI DIVERSI DA QUELLO RICHIESTO
    set AreaGruppo = Sheets("SS1SS1").Range("F21")
    ContinuaEliminaCodiceDiversoDa:
    If AreaGruppo = "" Then
          GoTo FineEliminaCodiceDiversoDa
      ElseIf AreaGruppo = [B15] Then
        set AreaGruppo = AreaGruppo.Offset(1, 0)
         GoTo ContinuaEliminaCodiceDiversoDa
      ElseIf AreaGruppo <> [B15] Then
        set AreaGruppo = AreaGruppo.Offset(1, 0)
        AreaGruppo.Offset(-1, 0).EntireRow.Delete
          GoTo ContinuaEliminaCodiceDiversoDa
    End If






  • di robybarc data: 29/10/2015 09:17:35

    Ciao Patel,
    ottima osservazione, non sapevo di poter semplificare cosi queste istruzioni,
    le ho messe in pratica anche sul resto del programma snellendo tutte le procedure.
    Grazie ancora,
    Roberto



  • di mb data: 29/10/2015 14:39:32

    buongiorno

    scusate il disturbo stavo leggendo questo fantastico argomento, non ho capito però una cosa (o forse ho copiato male la modifica da apportare al file originale ...)

    selezionando il codice C

    al cliente BORGH

    nella cella R31 mi compare la scritta Mag che è il mese di riferimento ed inoltre evidenziata in giallo

    siccome non conosco bene la necessità, c'è un motivo voluto per cui questa cella dovrebbe essere evidenziata in giallo? ci sono poi altre celle che si presentano nello stesso modo

    Grazie e scusate




  • di robybarc data: 29/10/2015 16:35:57

    Ciao MB,
    il motivo della cella in giallo è perché è stato trovato lo stesso mese in un singolo codice cliente,
    questo programma lo uso per un'impresa di pulizie e ogni mese vengono stampate le fatture riferite ai lavori eseguiti di quel mese, ma puo capitare che erroneamente oppure per lavori extra si debba fatturare le stesso mese più di una volta, la cella gialla lo evidenzia e verifico se è un errore oppure no, d'altro canto avrai notato che alcune celle rimangono verdi, anche qui o si è dimenticato di fatturare oppure quel mese il cliente era chiuso e il mese non è contabilizzato.
    Lo scopo di questa macro è soprattutto di verificare errori di fatturazione o assegnazione dei lavori, in qualsiasi progetto ritengo necessario inserire più controlli possibili.
    Grazie per l'interessamento
    Roberto



  • di mb data: 29/10/2015 17:44:31

    Grazie per la preziosa spiegazione e complimenti per il lavoro

    vado a studiare !!!

    buona serata alla prossima