J'ai un tableur, où les gens peuvent entrer les mises à jour du projet, puis la date de la mise à jour. Ce qui se passe, c’est que les gens oublient de dater leurs notes. Existe-t-il un moyen de faire en sorte que la cellule de date remplisse automatiquement le courant/la date d'entrée?
Je suppose qu'une fonction si le ferait?
Cette macro d'événement place la date dans la colonneBsi une valeur est entrée dans la colonne A. La macro doit être installée dans la zone de code de la feuille de calcul:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, B As Range, Inte As Range, r As Range
Set A = Range("A:A")
Set Inte = Intersect(A, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
r.Offset(0, 1).Value = Date
Next r
Application.EnableEvents = True
End Sub
Comme il s’agit d’un code de feuille de travail, il est très facile à installer et à utiliser automatiquement:
Si vous avez des inquiétudes, essayez d’abord sur une feuille de travail d’essai.
Si vous enregistrez le classeur, la macro sera également enregistrée. Si vous utilisez une version d'Excel ultérieure à 2003, vous devez enregistrer le fichier au format .xlsm au lieu de .xlsx.
Pour supprimer la macro:
Pour en savoir plus sur les macros en général, voir:
http://www.mvps.org/dmcritchie/Excel/getstarted.htm
et
http://msdn.Microsoft.com/en-us/library/ee814735(v=office.14).aspx
Pour en savoir plus sur les macros d'événements (code de feuille de calcul), voir:
http://www.mvps.org/dmcritchie/Excel/event.htm
Les macros doivent être activées pour que cela fonctionne!
Modifiez le code pour utiliser différentes colonnes.
EDIT # 1:
Cette version ne remplacera pas le matériel déjà présent dans la colonneB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, B As Range, Inte As Range, r As Range
Set A = Range("A:A")
Set Inte = Intersect(A, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
If r.Offset(0, 1).Value = "" Then
r.Offset(0, 1).Value = Date
End If
Next r
Application.EnableEvents = True
End Sub
La réponse de ZAT a fonctionné pour moi ... APRÈS avoir changé les ";" s en "," s.
=IF(AND(D52<>"",D52<>0),NOW(),"")
J'ai utilisé "MAINTENANT" au lieu de "AUJOURD'HUI" pour me donner l'heure.
Essayez cette formule dans la cellule souhaitée (par exemple C13) pour renseigner la date du jour lorsque la cellule d'entrée correspondante (par exemple D13) n'est pas vide et n'est pas renseignée avec 0:
=IF(AND(D13<>"";D13<>0);TODAY();"")
Et ensuite, vous pouvez copier cette formule dans les cellules suivantes pour remplir les formules de cette colonne (par exemple, col C)
Entrez la date et l’heure dans les colonnes A et B avec les données saisies dans la colonne D
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, B As Range, Inte As Range, r As Range
Set A = Range("D:D")
Set Inte = Intersect(A, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
If r.Value > 0 Then
r.Offset(0, -3).Value = Date
r.Offset(0, -3).NumberFormat = "dd-mm-yyyy"
r.Offset(0, -2).Value = Time
r.Offset(0, -2).NumberFormat = "hh:mm:ss AM/PM"
Else
r.Offset(0, -3).Value = ""
r.Offset(0, -2).Value = ""
End If
Next r
Application.EnableEvents = True
End Sub