web-dev-qa-db-fra.com

Remplir automatiquement la date dans une cellule, lorsque l'utilisateur entre des informations dans une cellule adjacente

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? 

3
Shelby Sauer

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:

  1. cliquez avec le bouton droit sur le nom de l'onglet situé au bas de la fenêtre Excel
  2. sélectionnez Afficher le code - une fenêtre VBE apparaît
  3. collez le contenu et fermez la fenêtre VBE

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:

  1. faire apparaître les fenêtres VBE comme ci-dessus
  2. effacer le code
  3. ferme la fenêtre VBE

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
5
Gary's Student

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. 

2
Ccoolest

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)

1
ZAT

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
1
Adnan Shahid