Data aggiornamento celle



  • Data aggiornamento celle
    di M4RR7 (utente non iscritto) data: 13/02/2013 14:46:36

    Buongiorno a tutti,
    Ho un quesito da esporre, ho cercato in tutte le discussioni precedenti ma non ho trovato nulla che possa aiutarmi.

    Ho una tabella con tre colonne, una colonna A con una lista di elementi (campi di testo), una colonna B in cui sono inseriti dei valori in percentuale e un'altra colonna C contenente delle date. Vorrei che ad ogni modifica di una percentuale nella colonna B, alla riga corrispondente nella colonna C venisse registrata la data corrente, in maniera tale da poter tenere sotto controllo tutti gli aggiornamenti delle percentuali inserite nella settimana o nel mese.

    Se qualcuno sa come aiutarmi lo ringrazio di cuore, sto impazzendo.




  • di HarryBosch data: 13/02/2013 15:10:44

    Con il vba si risolverebbe abbastanza velocemente, intercettando le modifiche lungo la colonna B e inserendo nella relativa riga della colonna C la data odierna.

    Hai una riga di intestazione, suppongo... se la percentuale viene cancellata, il campo deve rimanere vuoto oppure sempre con la data odierna?

    Hai mai utilizzato una macro?



  • di M4RR7 (utente non iscritto) data: 13/02/2013 15:31:16

    Ciao, ti ringrazio molto per l'attenzione.

    Dunque ho utilizzato delle macro ma solo all'interno dei moduli, non saprei quindi distinguere cosa va scritto nel codice relativo ai fogli o a tutta la cartella.

    Ritornando al problema, generalmente non mi succederà mai di cancellare una percentuale nella colonna B ma solo di incrementare quella esistente fino a che questa non arriva al 100%, ma se ciò avvenisse sì, dovrebbe aggiornarsi anche il campo data. Insomma ad ogni modifica lungo la colonna B.

    Inoltre avrei anche necessità che la macro funzioni in caso si dovessero aggiungere delle righe.



  • di HarryBosch data: 13/02/2013 15:47:24

    Bene, una base di partenza è già buona cosa.
    Questa routine va inserita all'interno del modulo del foglio dove hai la tabella.

    Ogni modifica lungo la colonna B riporterà la data attuale; se sostituisci "Date" con "Now" puoi anche salvare l'orario in cui è stata modificata.

    Target rappresenta l'intervallo da intercettare (se è nullo, quindi non la colonna B, usciamo), e con Offset ci spostiamo a destra di 1 cella per inserire la data.
     
    'da inserire nel modulo del foglio specifico:
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Columns("B")) Is Nothing Then Exit Sub
        On Error Resume Next
        Target.Offset(, 1) = Date 'Now
    End Sub
    



  • di M4RR7 (utente non iscritto) data: 13/02/2013 16:19:01

    Ti ringrazio, funziona alla grande!



  • di Vecchio Frac data: 13/02/2013 17:23:11

    @Harry
    Io però al posto di On Error avrei scritto
    Application.EnableEvents = False
    riportandolo a True all'uscita dalla sub.
    Per evitare le note ricorsioni con questo genere di procedure.





  • di M4RR7 (utente non iscritto) data: 13/02/2013 19:29:51

    Così dici?
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Columns("B")) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        Target.Offset(, 1) = Date 'Now
        Application.EnableEvents = True
    End Sub



  • di Vecchio Frac data: 13/02/2013 21:01:47

    Esattamente, bravo/a.
    Vero che stiamo parlando di precisione oltre il necessario, però è utile non sprecare risorse di sistema, quando è possibile.