Buenos días...
Inicialmente la formula de la columna que te comentaba contenía la siguiente fórmula…
=SI(O(Y(Tabla13[[#Esta fila];[ Pedido]]=0;Tabla13[[#Esta fila];[Resta]]=0);Y(Tabla13[[#Esta fila];[ Pedido]]>0;Tabla13[[#Esta fila];[Resta]]>0);Y(Tabla13[[#Esta fila];[ Pedido]]<0;Tabla13[[#Esta fila];[Resta]]<0;Tabla13[[#Esta fila];[Estado]]="");Y(Tabla13[[#Esta fila];[**]]="U";Tabla13[[#Esta fila];[Modalidad]]="*"));"";SI(K2="";HOY();K2))
… evidentemente existía referencia circular porque no averigüé otra manera de hacerlo hasta ahora gracias a ti. La referencia circular me obligaba a activar el cálculo iterativo pero el trabajo con el libro se hizo muy pesado por los tiempos de espera.
Te paso a detallar las columnas afectadas por la fórmula…
- Columna K = Abonado (columna donde se debe insertar la fecha)
- Columna Q = Pedido
- Columna V = Resta
- Columna Y = Estado
- Columna J = **
- Columna AE = Modalidad
El funcionamiento es el siguiente… Buscamos que cuando un pedido esté cobrado o compensado se inserte la fecha en la columna K (Abonado). Para ello en la fórmula indiqué los casos en los que NO quería insertar fecha y en caso contrario que la insertara…
- Si importe pedido es nada Y la resta es 0… No queremos fecha
- …O Si importe pedido es >0 Y la resta es >0… No queremos fecha
- …O Si importe pedido es <0 Y la resta <0 Y el estado es nada… No queremos fecha
- …O Si en la columna ** indicamos la letra U Y la modalidad es *… No queremos fecha
… para el resto de casos si debe aparecer la fecha estática respetando el mismo comportamiento que me enseñaste en el código anterior, es decir, en caso de modificación de cualquiera de las columnas y siempre que se cumplan los requisitos para que se refleje la fecha ésta no se modificará, pero si se dejan de cumplir los requisitos dicha fecha dejará de mostrarse hasta que nuevamente se cumplan los requisitos, en cuyo caso la fecha se actualizará al momento de cumplirlos.
Te adjunto el código tal y como me pediste ya ajustado a mi tabla restando incluir únicamente el código para ésta última columna (K), aunque si ves que hay algo que es erróneo o mi explicación arroja dudas me comentas… y como siempre MUCHAS GRACIAS!!!!
Private Sub Worksheet_Change(ByVal Target As Range)
'Por Dante Amor
'Pone la fecha en D, si se escribe un valor en L
If Not Intersect(Target, Range("L:L")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then
Target.Offset(0, -8).Value = ""
Else
If Target.Offset(0, -8).Value = "" Then
Target.Offset(0, -8).Value = Date
End If
End If
End If
'Pone la fecha en E, si se escribe un valor en F
If Not Intersect(Target, Range("F:F")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then
Target.Offset(0, -1).Value = ""
Else
If Target.Offset(0, -1).Value = "" Then
Target.Offset(0, -1).Value = Date
End If
End If
End If
'Pone la fecha en AB, si se escribe un valor en Y
If Not Intersect(Target, Range("Y:Y")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then
Target.Offset(0, 3).Value = ""
Else
If Target.Offset(0, 3).Value = "" Then
Target.Offset(0, 3).Value = Date
End If
End If
End If
End Sub