Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Registrare la data di una modifica di una cella

151 views
Skip to first unread message

edoardom...@gmail.com

unread,
Jan 15, 2016, 6:04:37 AM1/15/16
to
Ciao ragazzi ho un problema con un file excell che non penso sia difficile ma non riesco prorio a risolverlo:

2 colonne:
COLONNA DATA MODIFICA
COLONNA PREZZO


A B

1 DATA PREZZO
2 05/01/16 1
3 05/01/16 2
4 05/01/16 3
5 05/01/16 4
6 05/01/16 5
7 08/01/16 6


Se modifico per esempio la cella B7 vorrei che in automatico la data nella colonna A7 si aggiornasse con la data e ora attuale in automatico.

Spero che riusciate ad aiutarmi :(

Grazie

Edoardo

Norman Jones

unread,
Jan 15, 2016, 9:49:58 AM1/15/16
to
Ciao Edoardo,

> Ciao ragazzi ho un problema con un file excell che non penso sia
difficile ma non riesco prorio a risolverlo:
>
> 2 colonne:
> COLONNA DATA MODIFICA
> COLONNA PREZZO
>
>
> A B
>
> 1 DATA PREZZO
> 2 05/01/16 1
> 3 05/01/16 2
> 4 05/01/16 3
> 5 05/01/16 4
> 6 05/01/16 5
> 7 08/01/16 6
>
>
> Se modifico per esempio la cella B7 vorrei che in automatico la data nella colonna A7 si aggiornasse con la data e ora attuale in automatico.


• Fai clic dx sulla linguetta del foglio
• Seleziona l'opzione Visualizza Codice
• Incolla il seguente codice:

'=========>>
Option Explicit

'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range

Set Rng = Intersect(Me.Range("B:B"), Target)

If Not Rng Is Nothing Then
On Error GoTo XIT
Application.EnableEvents = False
With Rng.Offset(0, -1)
.Value = Now
.NumberFormat = "dd/mm/yyyy hh:mm"
End With
End If
XIT:
Application.EnableEvents = True
End Sub
'<<=========
• Alt+Q per chiudere l'editor di VBA e tornare a Excel.
• Salva il file con l'estensione xlsm







===
Regards,
Norman

edoardom...@gmail.com

unread,
Jan 15, 2016, 10:44:07 AM1/15/16
to
Grazie Norman,
funziona benissimo. Ti chiedo un'ulteriore cortesia per non dovermi creare un sacco di fogli. Se volessi usare la stessa formula in più colonne di una stesso foglio? Mi spiego meglio:

A B C D F

1 DATA PREZZO DATA PREZZO
2 05/01/16 1 05/01/16 1
3 05/01/16 2 05/01/16 2
2 05/01/16 1 05/01/16 1
3 05/01/16 2 05/01/16 2
2 05/01/16 1 05/01/16 1
3 08/01/16 2 10/01/16 2

Grazie mille per la disponibilità.
Edoardo

Norman Jones

unread,
Jan 15, 2016, 12:02:17 PM1/15/16
to
Ciao Eduardo.

> Grazie Norman,> funziona benissimo. Ti chiedo un'ulteriore cortesia
> per non dovermi
> creare un sacco di fogli. Se volessi usare la stessa formula in più
> colonne di una stesso foglio? Mi spiego meglio:
>
> A B C D
F
>
> 1 DATA PREZZO DATA PREZZO
> 2 05/01/16 1 05/01/16 1
> 3 05/01/16 2 05/01/16 2
> 2 05/01/16 1 05/01/16 1
> 3 05/01/16 2 05/01/16 2
> 2 05/01/16 1 05/01/16 1
> 3 08/01/16 2 10/01/16 2
>
> Grazie mille per la disponibilità.
> Edoardo

Prova qualcosa del genere:
'=========>>
Option Explicit

'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Rng2 As Range
Const sColonnePrezzi As String = _
"B:B,D:D,G:G,J:J" '<<=== Modifica

Set Rng = Intersect(Me.Range(sColonnePrezzi), Target)

If Not Rng Is Nothing Then
On Error GoTo XIT
Application.EnableEvents = False
With Rng.Offset(0, -1)
.Value = Now
.NumberFormat = "dd/mm/yyyy hh:mm"
End With
End If
XIT:
Application.EnableEvents = True
End Sub
'<<=========

Se volessi anche limitare l'azione della macro ad un determonato
intervallo di righe, potresti provare la seguente versione:

'=========>>
Option Explicit

'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Rng2 As Range
Const sColonnePrezzi As String = _
"B:B,D:D,G:G,J:J" '<<=== Modifica
Const sRighe As String = "2:14" '<<=== Modifica

Set Rng = Intersect(Me.Range(sColonnePrezzi), Target)

If Not Rng Is Nothing Then
Set Rng2 = Intersect(Rng, Me.Rows(sRighe))
End If

If Not Rng2 Is Nothing Then
On Error GoTo XIT
Application.EnableEvents = False
With Rng2.Offset(0, -1)
.Value = Now
.NumberFormat = "dd/mm/yyyy hh:mm"
End With
End If
XIT:
Application.EnableEvents = True
End Sub
'<<=========





===
Regards,
Norman

edoardom...@gmail.com

unread,
Jan 16, 2016, 2:52:03 AM1/16/16
to
Il giorno venerdì 15 gennaio 2016 12:04:37 UTC+1, edoardom...@gmail.com ha scritto:
Grazie Norman sei gentilissimo. Funfiona tutto. A me va bene già così me se è possibile ti chiedo un ultima cosa: è possibile una cosa del genere?

A B C D E F G H
1 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
2 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
3 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
4
5 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
6 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
7
8 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
9 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
10 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO


Usare il codice non solo su determinate gruppi di colonne ma ancche su gruppi di righe?

Ho provato ha modificare il tuo codice ma non ci sono riuscito.

Grazie

Edoardo



Norman Jones

unread,
Jan 16, 2016, 4:41:03 AM1/16/16
to
Ciao Edoardo,


> Grazie Norman sei gentilissimo. Funfiona tutto. A me va bene già così me se
> è possibile ti chiedo un ultima cosa: è possibile una cosa del genere?
>
> A B C D E F G H
> 1 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
> 2 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
> 3 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
> 4
> 5 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
> 6 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
> 7
> 8 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
> 9 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
> 10 DATA PRODOTTO DATA PRODOTTO DATA PRODOTTO
>
>
> Usare il codice non solo su determinate gruppi di colonne ma ancche su gruppi
> di righe?

> Ho provato ha modificare il tuo codice ma non ci sono riuscito.

Prova la seguente versione del codice la quale limita l'operazione del
codice alle righe 2:4,6:7,9:11,15:17,20:23 delle colonne B:B,E:E ,H:H
del foglio di interesse. Per modificare le righe o le colonne da
considerare, modifica i vlori assegnati alle costante sRigheDaIncludere
e sColonneDaIncludere:

'=========>>
Option Explicit

'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Rng2 As Range
Const sColonneDaIncludere As String = _
"B:B,E:E ,H:H" '<<=== Modifica
Const sRigheDaIncludere As String = _
"2:4,6:7,9:11,15:17,20:23" '<<=== Modifica

Set Rng = Intersect(Me.Range(sColonneDaIncludere), Target)

If Not Rng Is Nothing Then
Set Rng2 = Intersect(Rng, Me.Range(sRigheDaIncludere))
End If

If Not Rng2 Is Nothing Then
On Error GoTo XIT
Application.EnableEvents = False
With Rng2.Offset(0, -1)
.Value = Now
.NumberFormat = "dd/mm/yyyy hh:mm"
End With
End If
XIT:
Application.EnableEvents = True
End Sub
'<<=========

Potresti scaricare il mio file di prova
Edoardo20160116.xlsm a: http://1drv.ms/1RVnYHS





===
Regards,
Norman

casanmaner

unread,
Jan 16, 2016, 5:41:26 AM1/16/16
to
Ciao Norman toglimi una curiosità.
Perché non impostare direttamente Set Rng = Intersect(Me.Range(sRigheDaIncludere), Me.Range(sColonneDaIncludere), Target)?

Norman Jones

unread,
Jan 16, 2016, 6:19:42 AM1/16/16
to
Ciao Casanmaner,
La risposta più semplice è che questa versione del codice è un
adattamento di due versioni precedenti; se io dovessi scrivere il codice
da zero, con l'obbligo di limitare sia righe e colonne, potrei anche
includere entrambe le condizioni nella stessa istruzione di assegnazione
all'oggetto Range.

Tuttavia, stile di codifica individuale e la leggibilità sono fattori da
considerare e, in termini di tempo di esecuzione del codice, non posso
trovare alcuna differenza discernibile tra le versioni.

Saluti.



===
Regards,
Norman

casanmaner

unread,
Jan 16, 2016, 6:54:33 AM1/16/16
to
Ah ok, più per una questione di successione di modifiche che per una questione di funzionamento del comando intersect.

Norman Jones

unread,
Jan 16, 2016, 7:01:23 AM1/16/16
to
Ciao Casanmaner,

> Ah ok, più per una questione di successione di modifiche che per una
> questione di funzionamento del comando intersect.

Precisamente! Il metodo Intersect può tranquillemente gestire più
intervalli.



===
Regards,
Norman

edoardom...@gmail.com

unread,
Jan 17, 2016, 2:40:49 AM1/17/16
to
Grazie Norman,
sei stato gentilissimo.
Il codice funziona alla grande!.

In futuro se avrò ancora problemi so dove dovrò scrivere ;)

Grazie ancora

Edoardo

edoardom...@gmail.com

unread,
Jan 18, 2016, 2:36:06 AM1/18/16
to
Ciao Norman,
purtroppo ti devo chiedere di nuovo aiuto.
Non riguarda la registrazione della modifica (che funziona benissimo) ma il formato della data; è possibile avere una cosa del genere?

GIORNO ORA PREZZO
MERC 16 08:47 5000
MAR 15 08:12 4500
LUN 14 12:45 12000
VEN 18 03:45 14562
SAB 19 09:16 700
DOM 20 13:12 120

Penso che devo modificare questa linea di codice: .NumberFormat = "dd/mm/yyyy hh:mm"
Ma non so il formato "giorno della settimana" e come devo modificare la divisione in 2 colonne GIORNO e ORA.

Grazie ancora

EDOARDO

Norman Jones

unread,
Jan 19, 2016, 4:53:17 AM1/19/16
to
Ciao Edoardo,
Nel modulo di codice del foglio, sostituisci il codice prec edente con
la seguente versione:
'=========>>
Option Explicit

'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Rng2 As Range
Const sColonneDaIncludere As String = _
"C:C,G:G,K:K" '<<=== Modifica
Const sRigheDaIncludere As String = _
"2:4,6:7,9:11,15:17,20:23" '<<=== Modifica

With Me
Set Rng = Intersect(.Range(sRigheDaIncludere), _
.Range(sColonneDaIncludere), Target)
End With
If Not Rng Is Nothing Then
On Error GoTo XIT
Application.EnableEvents = False
With Rng.Offset(0, -2)
.Value = Now
.NumberFormat = "ddd dd"
End With
With Rng.Offset(0, -1)
.Value = Now
.NumberFormat = "hh:mm"
End With
End If
XIT:
Application.EnableEvents = True
End Sub
'<<=========

Potresti scaricare il file di prova Edoardo20160119.xlsm a:
http://1drv.ms/1PnGdkk




===
Regards,
Norman

edoardom...@gmail.com

unread,
Jan 22, 2016, 9:50:11 AM1/22/16
to
CIAO Norman,
il codice funziona alla grande!

Come sempre gentilissimo.

Grazie

Edoardo

Norman Jones

unread,
Jan 22, 2016, 10:22:04 AM1/22/16
to
Ciao Edoardo,

> il codice funziona alla grande!
>
> Come sempre gentilissimo.

Ti ringrazio per il cortese riscontro.



===
Regards,
Norman

Cristian Cris

unread,
Dec 2, 2021, 5:04:33 AM12/2/21
to
Bipmgiorno domanda, ma un formula messa in una cella che da la dat di modifica in un altra cella con foglia google è possibile? senza usare app script? grazie
0 new messages