Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

Comment remplir automatiquement la date dans la cellule lorsque la cellule adjacente est mise à jour dans Excel?

Parfois, lorsque vous mettez à jour une cellule dans une certaine colonne, vous pouvez marquer la dernière date de mise à jour. Cet article recommandera une méthode VBA pour résoudre ce problème. Lorsque la cellule est mise à jour, la cellule adjacente sera automatiquement remplie avec la date actuelle immédiatement.

Renseigne automatiquement la date actuelle dans la cellule lorsque la cellule adjacente est mise à jour avec le code VBA


Combiner plusieurs feuilles de calcul / classeurs dans une seule feuille de calcul / classeur:

Combiner plusieurs feuilles de calcul ou classeurs dans une seule feuille de calcul ou classeur peut être une tâche énorme dans votre travail quotidien. Mais, si vous avez Kutools for Excel, son utilité puissante - Combiner peut vous aider à combiner rapidement plusieurs feuilles de calcul, classeurs dans une feuille de calcul ou un classeur

Kutools for Excel: avec plus que 200 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60. Téléchargez l'essai gratuit maintenant!


Renseigne automatiquement la date actuelle dans la cellule lorsque la cellule adjacente est mise à jour avec le code VBA

Supposons que les données à mettre à jour se trouvent dans la colonne B et que la cellule de la colonne B soit mise à jour, la date actuelle sera renseignée dans la cellule adjacente de la colonne A. Voir la capture d'écran:

Vous pouvez exécuter le code VBA suivant pour résoudre ce problème.

1. Cliquez avec le bouton droit sur l'onglet de feuille dont vous avez besoin pour remplir automatiquement la date en fonction de la cellule mise à jour adjacente, puis cliquez sur Voir le code dans le menu contextuel.

2. Dans la fenêtre Microsoft Visual Basic pour Applications, copiez et collez le code VBA ci-dessous dans la fenêtre Code.

Code VBA: remplir automatiquement la date actuelle dans une cellule lorsque la cellule adjacente est mise à jour

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updated by Extendoffice 2017/10/12
    Dim xRg As Range, xCell As Range
    On Error Resume Next
    If (Target.Count = 1) Then
        If (Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing) Then _
            Target.Offset(0, -1) = Date
        Application.EnableEvents = False
        Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
        If (Not xRg Is Nothing) Then
            For Each xCell In xRg
                xCell.Offset(0, -1) = Date
            Next
        End If
        Application.EnableEvents = True
    End If
End Sub

Remarques:

1. Dans le code, B: B signifie que les données mises à jour se trouvent dans la colonne B.

2. -1 indique que la date actuelle sera renseignée dans la colonne de gauche de la colonne B. Si vous voulez que la date actuelle apparaisse dans la colonne C, remplacez -1 par 1.

3. presse autre + Q touches en même temps pour fermer le Microsoft Visual Basic pour applications fenêtre.

Dorénavant, lors de la mise à jour des cellules dans la colonne B, la cellule adjacente dans la colonne A sera remplie avec la date actuelle immédiatement. Voir la capture d'écran:


Articles Liés:


Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe Créer une liste de diffusion et envoyer des emails ...
  • Super Formula Bar (éditez facilement plusieurs lignes de texte et de formule); Disposition de lecture (facilement lire et éditer un grand nombre de cellules); Coller à la gamme filtrée...
  • Fusionner les cellules / rangées / colonnes sans perdre de données; Contenu des cellules divisées; Combiner les lignes / colonnes en double... Prévenir les cellules en double; Comparer les plages...
  • Sélectionnez Dupliquer ou Unique Des rangées; Sélectionnez les lignes vierges (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux cahiers d'exercices; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de la formule; Créer automatiquement des références à plusieurs feuilles; Insérer des balles, Cases à cocher et plus ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre contenu de cellules et commentaires...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial en gras, en italique ...
  • Combinaison de classeurs et de feuilles de calcul; Fusionner les tables en fonction des colonnes clés; Fractionner les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus que de puissantes fonctionnalités 300. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit du jour 30.
kte tab 201905

Office Tab apporte une interface à onglets à Office et simplifie grandement votre travail

  • Activer l'édition par onglets et la lecture dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit le nombre de clics de souris pour vous chaque jour!
fond officetab
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Ryan · 1 months ago
    i think a change is needed to line 7 as well...
  • To post as a guest, your comment is unpublished.
    Harry · 1 months ago
    Hello, is there a way to make column (A) automatically populated with a date when entering a value into any cell in the same row?
    • To post as a guest, your comment is unpublished.
      crystal · 29 days ago
      Hi Harry,
      The below VBA code can help you solve the problem. Please specify the range as much as possible in the code. Thank you for your comment.

      Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      'Updated by Extendoffice 20191017
      Dim xRg As Range, xCell As Range
      Dim xInt As Integer
      On Error Resume Next
      If (Target.Count = 1) Then
      If (Not Application.Intersect(Target, Me.Range("B:BP")) Is Nothing) Then
      Application.EnableEvents = False
      xInt = Target.Row
      Me.Range("A" & xInt).Value = Date
      Application.EnableEvents = True
      End If
      End If
      End Sub
  • To post as a guest, your comment is unpublished.
    Abbey · 2 months ago
    Hello, Can I set the date and the time to populate?
    • To post as a guest, your comment is unpublished.
      crystal · 1 months ago
      Hi Abbey,
      In the above code, please replace this line
      "xCell.Offset(0, -1) = Date"
      with
      "xCell.Offset(0, -1) = Format(Now(), "yyyy-MM-dd hh:mm:ss")".
      Hope I can help. Thank you for your comment.
      • To post as a guest, your comment is unpublished.
        Ryan · 1 months ago
        this didnt add the time in... is there another way?
  • To post as a guest, your comment is unpublished.
    Joe · 5 months ago
    Hello, I need some help. I am trying to populate the current date into column A if any cells B through N are modified. The offset is throwing me off. Can this code be written to auto populate the date in Column A specifically?
    • To post as a guest, your comment is unpublished.
      crystal · 1 months ago
      Hi Joe,
      The below VBA code can help you solve the problem. Please have a try and thank you for your comment.

      Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      'Updated by Extendoffice 20190924
      Dim xRg As Range, xCell As Range
      Dim xInt As Integer
      On Error Resume Next
      If (Target.Count = 1) Then
      If (Not Application.Intersect(Target, Me.Range("B:N")) Is Nothing) Then
      Application.EnableEvents = False
      xInt = Target.Row
      Me.Range("A" & xInt).Value = Date
      Application.EnableEvents = True
      End If
      End If
      End Sub
  • To post as a guest, your comment is unpublished.
    Gwen · 8 months ago
    Hi. I'm trying to use the "Auto Populate Current Date In Cell When Adjacent Cell Is Updated With VBA Code". This works on Sheet 1, but I have 11 other sheets I need the code to work on. Please advise. I'm not VBA saavy at all so I appreciate any help I can get!

    Thanks.
    • To post as a guest, your comment is unpublished.
      crystal · 8 months ago
      Hi Gwen,
      Please repeat the steps to copy the code to other sheets. It may be tedious, but it works.
  • To post as a guest, your comment is unpublished.
    Tracey · 9 months ago
    I used this code to auto populate a column and now wish to auto populate more columns based on date entered into column H. In other words, once a date is entered can I auto populate columns to add date 90, 60, and 30 days out?
    • To post as a guest, your comment is unpublished.
      crystal · 8 months ago
      Hi Tracey,
      The following VBA code can help you solve the probem. Please have a try.

      Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      Dim xRg As Range, xCell As Range
      Dim xRgAddress As String
      xRgAddress = "H:H"
      On Error Resume Next
      If (Target.count = 1) Then
      If (Not Application.Intersect(Target, Me.Range(xRgAddress)) Is Nothing) Then
      Target.Offset(0, 1) = Date + 90
      Target.Offset(0, 2) = Date + 60
      Target.Offset(0, 3) = Date + 30
      End If
      Application.EnableEvents = False
      Set xRg = Application.Intersect(Target.Dependents, Me.Range(xRgAddress))
      If (Not xRg Is Nothing) Then
      For Each xCell In xRg
      xCell.Offset(0, 1) = Date + 90
      xCell.Offset(0, 2) = Date + 60
      xCell.Offset(0, 3) = Date + 30
      Next
      End If
      Application.EnableEvents = True
      End If
      End Sub
  • To post as a guest, your comment is unpublished.
    Jen · 1 years ago
    Nevermind...I tried John's response below and it works - thank you!
  • To post as a guest, your comment is unpublished.
    Jen · 1 years ago
    HI - new to VBA - I want to loop the code - VBA code: auto populate current date in a cell when the adjacent cell is updated so that after a cell is updated with a date, then move on to say "J:J" and update K with date and then do 2 more times. Not sure if it is a loop or for? Thank you
  • To post as a guest, your comment is unpublished.
    sri laqshya · 1 years ago
    Hi,

    Can anyone one suggest a code for when I input number in column A and Column B and in Column C I kept a formula like Column A + Column B. Now I need a vba code that can give time and date in Column D whenever Column C changes not when inserting numbers in Column A and B.
  • To post as a guest, your comment is unpublished.
    Sarah · 1 years ago
    Are you able to use this function twice on the same sheet? i.e. if I would like to make entries in column B to time stamp column A AND put entries in column D to timestamp column C. Thanks!
    • To post as a guest, your comment is unpublished.
      John · 1 years ago
      I got this to work by doing the following:


      Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      'Updated by Extendoffice 2017/10/12
      Dim xRg As Range, xCell As Range
      On Error Resume Next
      If (Target.Count = 1) Then
      If (Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing) Then _
      Target.Offset(0, -1) = Date
      Application.EnableEvents = False
      Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
      If (Not xRg Is Nothing) Then
      For Each xCell In xRg
      xCell.Offset(0, -1) = Date
      Next
      End If
      Application.EnableEvents = True
      End If


      On Error Resume Next
      If (Target.Count = 1) Then
      If (Not Application.Intersect(Target, Me.Range("D:D")) Is Nothing) Then _
      Target.Offset(0, -1) = Date
      Application.EnableEvents = False
      Set xRg = Application.Intersect(Target.Dependents, Me.Range("D:D"))
      If (Not xRg Is Nothing) Then
      For Each xCell In xRg
      xCell.Offset(0, -1) = Date
      Next
      End If
      Application.EnableEvents = True
      End If
      End Sub
  • To post as a guest, your comment is unpublished.
    Michael · 1 years ago
    Thanks it works fine, but when it comes to close and save I'm getting a error that the feature "VB project" cannot be saved in a macro-free workbook. Please advise
    • To post as a guest, your comment is unpublished.
      Jay · 1 years ago
      You just need to "save as" a excel macro-enabled workbook....
  • To post as a guest, your comment is unpublished.
    Michael · 1 years ago
    Thanks it works fine, but when it comes to close and save I'm getting a error that the feature "VB project" cannot be saved in a macro-free workbook. Please advise
  • To post as a guest, your comment is unpublished.
    Tammy · 2 years ago
    Can this be accomplished on a cell that contains a formula?
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Dear Tammy,
      The code has been updated. It can be accomplished on a cell that contains a formula now. Thank you for your comment.
  • To post as a guest, your comment is unpublished.
    leah · 2 years ago
    I have a set of excel worksheets titled monday, tuesday, wednesday, etc. I need to put the beginning date on Monday in cell a1, and have it fill in the subsequent dates for tuesday through Friday in cell a1 on each of those sheets. I am not code literate at all, so I just need to know what the simple formula I can put in there is. :) thank you!
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Dear leah,
      You just have to use the formula =monday!A1+1 on sheet tuesday, =tuesday!A1+1 on sheet wednesday and so on...
  • To post as a guest, your comment is unpublished.
    Jishnu · 2 years ago
    Thank You. This helped a lot.
    But when I am deleting a row or adding a row this gives an Run-time error 13 Type mismatch.

    How to tackle this issue.

    Expecting a revert ASAP.
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Dear Jishnu,
      The problem you mentioned does not appear in my case. Would you please provide your Office version?