Note: The other languages of the website are Google-translated. Back to English

Comment insérer l'horodatage actuel lorsque les données d'une autre cellule changent dans Excel?

Supposons que vous receviez une feuille de calcul qui nécessite que vous modifiiez les données dans une certaine colonne. Et après avoir modifié la feuille de calcul, vous devez insérer l'horodatage modifié pour indiquer aux autres quelles cellules ont été modifiées. Comment y faire face? Cet article vous montrera la méthode d'insertion de l'horodatage actuel lorsque les données d'une autre cellule changent dans Excel, comme illustré ci-dessous.

Insérer l'horodatage actuel lorsque les données d'une autre cellule changent avec le code VBA


Insérer l'horodatage actuel lorsque les données d'une autre cellule changent avec le code VBA

Comme illustré ci-dessous, vous devez renseigner l'horodatage dans la colonne E si les cellules correspondantes de la colonne C sont modifiées. Veuillez faire comme suit.

1. Dans la feuille de calcul, vous devez modifier et marquer avec horodatage, cliquez avec le bouton droit sur l'onglet de la feuille, puis cliquez sur Voir le code dans le menu contextuel.

2. Ensuite, copiez et collez le code VBA ci-dessous dans le Code fenêtre de la Microsoft Visual Basic pour applications la fenêtre. Voir la capture d'écran:

Code VBA: insérer l'horodatage actuel lorsque les données d'une autre cellule changent

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180830
Dim xCellColumn As Integer
Dim xTimeColumn As Integer
Dim xRow, xCol As Integer
Dim xDPRg, xRg As Range
xCellColumn = 3
xTimeColumn = 5
xRow = Target.Row
xCol = Target.Column
If Target.Text <> "" Then
    If xCol = xCellColumn Then
       Cells(xRow, xTimeColumn) = Now()
    Else
        On Error Resume Next
        Set xDPRg = Target.Dependents
        For Each xRg In xDPRg
            If xRg.Column = xCellColumn Then
                Cells(xRg.Row, xTimeColumn) = Now()
            End If
        Next
    End If
End If
End Sub

Notes: Dans le code, le numéro 3 signifie que vous allez modifier les données de la colonne C, et 5 indique que l'horodatage sera renseigné dans la colonne E. Veuillez les modifier en fonction de vos besoins.

3. appuie sur le autre + Q touches pour fermer le Microsoft Visual Basic pour applications fenêtre.

À partir de maintenant, lors de la modification des données dans la colonne C, l'horodatage sera renseigné dans les cellules correspondantes de la colonne E, comme illustré ci-dessous.

Pointe. Sélecteur de dateL’ Insérer la date utilité de Kutools pour Excel vous aide à insérer rapidement la date avec le format de date spécifié dans une cellule sélectionnée.
Téléchargez et essayez-le maintenant! (Parcours gratuit de 30 jours)


Articles connexes:


Les meilleurs outils de productivité de bureau

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 e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • 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 par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets 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 des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (56)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Salut, La formule ci-dessus sera utile pour la mise à jour de l'horodatage d'une seule cellule. Ex : si nous entrons des données dans la 3e cellule, l'horodatage est automatiquement mis à jour dans la 5e cellule. S'il vous plaît des conseils pour la mise à jour de plusieurs cellules. Ex : Si nous entrons des données dans la 3e cellule, l'horodatage est automatiquement mis à jour dans la 5e cellule et si nous entrons dans la 4e cellule, il sera mis à jour dans la 6e cellule.
Ce commentaire a été minimisé par le modérateur sur le site
Je suis moi aussi intéressé par cette question précise. Avez-vous trouvé une réponse? Mes commentaires à ce sujet attireront-ils l'attention de quelqu'un d'autre sur la question ? !
Ce commentaire a été minimisé par le modérateur sur le site
Je colle plusieurs lignes et colonnes de données (en même temps et toujours en même temps). Je voudrais seulement que l'horodatage s'affiche dans une cellule. en d'autres termes, chaque fois que la cellule C9 change (le coin supérieur gauche de mes données), affichez l'heure dans la cellule A1. Toute aide serait très appréciée!
Ce commentaire a été minimisé par le modérateur sur le site
comment pouvons-nous verrouiller le format de l'heure .. parce qu'il se met à jour à chaque fois et insère la date et l'heure.
Ce commentaire a été minimisé par le modérateur sur le site
Je crée une feuille de travail dans Excel dans laquelle je souhaite suivre l'heure de début et de fin d'une transaction particulière à l'aide d'un horodatage. Une colonne affichera également la durée. Veuillez voir l'image ci-dessous. Est-ce que quelqu'un peut m'aider? Image ci-dessous.

J'ai trouvé 2 codes VBA qui enregistrent les horodatages. Cependant, je ne sais pas comment les fusionner pour qu'ils fonctionnent dans cette feuille :


Code 1 . Il affiche l'horodatage dans la colonne "Heure de début" (B4) lorsque vous entrez un numéro de transaction dans la colonne "ID de cas" (A4).


Private Sub Worksheet_Change (Cible ByVal en tant que plage)
En cas d'erreur GoTo Handler
Si Target.Column = 1 And Target.Value <> "" Alors
Application.EnableEvents = False
Target.Offset(0, 1) = Format(Now(), "mm/dd/yyyy HH:mm:ss")
Application.EnableEvents = True
Si fin
Gestionnaire:
End Sub


Code 2. Il affiche l'horodatage dans la colonne « Heure de fin » (D4) si une sélection dans une liste déroulante de la colonne « État » (C4) est sélectionnée.


Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xCellColumn As Integer
Dim xTimeColumn en tant qu'entier
Dim xRow, xCol As Integer
xCellColonne = 3
xHeureColonne = 4
xRow = Cible.Ligne
xCol = Cible.Colonne
Si Cible.Texte <> "" Alors
Si xCol = xCellColumn Alors
Cellules(xRow, xTimeColumn) = Maintenant()
Si fin
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Chère Chia,
Je n'ai pas vu votre image. Veuillez cliquer sur le bouton Télécharger des fichiers ci-dessous pour télécharger votre photo.
Ce commentaire a été minimisé par le modérateur sur le site
Quel est le code si je veux horodater plusieurs cellules individuellement dans la même feuille de calcul ?
Exemple : Modification dans la colonne 3, horodatage dans la colonne 5. Modification dans la colonne 10, horodatage dans la colonne 11. Modification dans la colonne 13, horodatage dans la colonne 14.
xCellColonne = 3
xHeureColonne = 5
Ce commentaire a été minimisé par le modérateur sur le site
Chère Mary,
Le code VBA suivant peut vous aider. Merci pour votre commentaire.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim I As Long
Dim J aussi longtemps
Dim xCols As Long
Dim xSRg As Range
Dim xRgEx As Range
Dim xSRgArea As Range
Dim xNextArea As Range
On Error Resume Next
Application.EnableEvents = False
Définir xSRg = Union(Range("C:C"), Range("E:E"), Range("J:K"), Range("M:N"))
Définir xRgEx = Intersection(xSRg, Cible)
Si xRgEx n'est rien, alors GoTo ExitSub
Pour I = 1 Vers xSRg.Areas.Count
J = je
Définir xSRgArea = xSRg.Areas.Item(I)
Si xRgEx.Colonne = xSRgArea(1).Colonne Alors
xCols = xSRgArea.Columns.Count
Si xCols = 1 Alors
Définir xNextArea = xSRg.Areas.Item(J + 1)
Si xNextArea n'est rien alors
GoTo ExitSub
SinonSi xNextArea.Columns.Count = 1 Alors
xNextArea(xRgEx.Row).Value = Now()
Sortie pour
Si fin
SinonSi xCols = 2 Alors
xSRgArea.Columns(2).Rows(xRgEx.Row).Value = Now()
Sortie pour
Si fin
Si fin
Suivant
ExitSub :
Application.EnableEvents = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Pouvez-vous partager ce qui doit être mis à jour pour le rendre spécifique à une autre feuille de calcul ? Par exemple, les modifications de l'horodatage C dans E, les modifications de l'horodatage G dans I, les modifications de l'horodatage O dans Q.
Ce commentaire a été minimisé par le modérateur sur le site
J'ai simplement enchaîné le premier code mentionné ci-dessus, en changeant toutes les variables de VAR à VAR1/VAR2/VAR3 etc.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, peut être fait si des valeurs sont modifiées et que l'horodatage est mis à jour uniquement dans une cellule particulière comme A1
Ce commentaire a été minimisé par le modérateur sur le site
Good Day,
Si vous souhaitez toujours afficher l'horodatage dans la cellule A1 si des valeurs sont modifiées dans une certaine plage. Le code VBA suivant peut vous aider.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRg As Range
On Error Resume Next
Définir xRg = Intersection(Cible, Plage("B1:D4"))
Si xRg n'est rien, quittez Sub
Plage("A1").Valeur = Maintenant()
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
salut Crystal, c'est vraiment bien, comment puis-je obtenir le changement d'horodatage dans chaque ligne correspondante lorsqu'une cellule de la plage de cellules de la ligne respective change. Comme A2 devrait être mis à jour avec l'horodatage lorsque des modifications sont apportées entre B2 et H2 et ainsi de suite avec A3, A4, etc.
Ce commentaire a été minimisé par le modérateur sur le site
J'ai une base de données Excel dont j'ai besoin pour garder une trace de ce qui a été changé.
Est-il possible de modifier le code de sorte que si des modifications sont apportées à la feuille 1, il dupliquera la cellule modifiée dans la feuille 2 et fournira un horodatage à côté?
Ce commentaire a été minimisé par le modérateur sur le site
Bonne journée,
Désolé, je ne peux pas aider avec ça. Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup pour ça! J'utilise les boutons de défilement pour ajouter 1 à mon total chaque fois que je termine une tâche, mais les macros n'enregistrent pas les modifications apportées aux boutons. Après avoir fait quelques recherches supplémentaires, j'ai compris comment attribuer une macro à mes boutons de contrôle et maintenant je peux suivre mes modifications !!!! Je rendais les choses plus compliquées que nécessaire, voici ce que j'ai fini par:


Sous-horodatage()
'
' Macro d'horodatage
' Horodatage sur les boutons de défilement
'
'
Plage("j2").Valeur = Maintenant()

End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Salut, Cela fonctionne parfaitement si je change manuellement la cellule, lorsque je copie et colle des informations ne fonctionne pas. J'essaie d'avoir cet horodatage chaque fois que quelqu'un colle de nouvelles informations. Plutôt que de modifier les informations de cellule une par une, le comportement que je souhaite capturer est lorsque les données sont collées en bloc pour plusieurs cellules. Est-ce que quelqu'un sait ce que je dois faire ?


Merci,
Ce commentaire a été minimisé par le modérateur sur le site
merci beaucoup pour cela, mais l'horodatage ne change que si la valeur de la cellule est modifiée "manuellement". S'il est modifié en raison d'un changement dans une autre cellule et que la valeur change dans le cadre d'une formule, il n'y a pas d'horodatage. Avez-vous une solution pour cela? Merci! Denis
Ce commentaire a été minimisé par le modérateur sur le site
Cher Denis,
Le code a été mis à jour avec le problème résolu. Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Hi,

Ceci est exactement ce que je cherchais! Cependant, je me demandais si vous pouviez m'aider à le faire fonctionner avec une feuille de calcul protégée. Cela ne semble fonctionner que sur un non protégé (lorsque l'horodatage est mis à jour en raison d'un changement de valeur dans le cadre d'une formule, similaire à la demande de Dennis).

Merci beaucoup! Bassel
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Cela peut également fonctionner sur une feuille de calcul protégée. Vous devez formater les cellules modifiées et les cellules d'horodatage au statut déverrouillé à l'avance avant de protéger la feuille de calcul. Veuillez réessayer. Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Hi,


Est-il possible de modifier le code afin que toute modification dans plusieurs colonnes génère un nouvel horodatage dans la même cellule ? C'est-à-dire que je fais une modification dans n'importe qui des cellules A3, B3 ou C3 et que l'horodatage est mis à jour uniquement dans C4 ?


De plus, est-il possible de faire en sorte que le code ne s'applique qu'à une plage spécifique d'une feuille ?


Merci
Ce commentaire a été minimisé par le modérateur sur le site
Salut Alec
Veuillez essayer le code VBA ci-dessous. Merci pour votre commentaire.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xRRg, xRg As Range
Dim xRgArray comme variante
Estomper xStrCell en tant que chaîne
Dim xSCRg As Range
Dim xStrResult As String
xRgTableau = Tableau("A1:C10")
xStrCell = "A3, B3, C3"
xStrRésultat = "C4"
On Error Resume Next

Si Target.Cells.count > 1 Alors Quitter le sous-marin
Pour xFNum = LBound(xRgArray) Vers UBound(xRgArray)
Si xRgTableau(xFNum) <> "" Alors
Définir xRg = Plage(xRgArray(xFNum))
Si non xRg n'est rien alors
Définir xSCRg = Null
Définir xSCRg = xRg.Range(xStrCell)
xSCRg.Select
Si non xSCRg n'est rien alors
Si ce n'est pas l'intersection (xSCRg, cible) n'est rien alors
Set xRRg = xRg.Range(xStrResult)
Si xRRg n'est rien, quittez Sub
xRRg.Valeur = Maintenant()
Sortie pour
Si fin
Si fin
Si fin
Si fin
XFNum suivant
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Hey, j'espère que vous voyez toujours ça !!! J'utilise le code ci-dessous pour une mise à jour de l'horodatage dans C6 chaque fois que C5 est mis à jour. Le problème est que lorsque je suis dans le reste de la feuille de calcul, chaque fois que j'appuie sur Entrée ou Tabulation, cela me ramène à C5. Des pensées?

Dim xRRg, xRg As Range
Dim xRgArray comme variante
Estomper xStrCell en tant que chaîne
Dim xSCRg As Range
Dim xStrResult As String
xRgTableau = Tableau("C5:C6")
xStrCell = "C5"
xStrRésultat = "C6"
On Error Resume Next

Si Target.Cells.Count > 1 Alors Quittez Sub
Pour xFNum = LBound(xRgArray) Vers UBound(xRgArray)
Si xRgTableau(xFNum) <> "" Alors
Définir xRg = Plage(xRgArray(xFNum))
Si non xRg n'est rien alors
Définir xSCRg = Null
Définir xSCRg = xRg.Range(xStrCell)
xSCRg.Select
Si non xSCRg n'est rien alors
Si ce n'est pas l'intersection (xSCRg, cible) n'est rien alors
Set xRRg = xRg.Range(xStrResult)
Si xRRg n'est rien, quittez Sub
xRRg.Valeur = Maintenant()
Sortie pour
Si fin
Si fin
Si fin
Si fin
XFNum suivant
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Hé, c'est un peu similaire à ce dont j'ai besoin, j'aimerais qu'un horodatage soit mis à jour dans la colonne AG lorsque les cellules entre A et AH sont mises à jour.
J'ai essayé le code ci-dessus mais je n'ai pas eu de chance.
Ce commentaire a été minimisé par le modérateur sur le site
J'ai un projet sur lequel je travaille que je mets à jour régulièrement. C'est principalement pour garder une trace des informations de mon employé comme les numéros de téléphone, l'expiration du permis de conduire, etc. Comme je le mets à jour si fréquemment, je veux un horodatage automatique qui se trouve en haut ou en bas de ma feuille de calcul qui sera mis à jour avec la date d'aujourd'hui à chaque fois que je mettre à jour les informations N'IMPORTE OÙ sur la feuille de calcul. J'utilise actuellement AN et 1-42 donc j'ai besoin d'un tampon autour de M40. À quoi ressemblerait ce code ?
Ce commentaire a été minimisé par le modérateur sur le site
Ouvrez Developer et sur votre classeur, sélectionnez le classeur et l'événement BeforeSave.


Dans le sous mettre le code : Range("M40").value = Now
Ce commentaire a été minimisé par le modérateur sur le site
L'ajout de l'horodatage fonctionne très bien et est très utile. Cependant, je reçois une erreur lorsque je supprime une ligne, car le script ne peut pas insérer l'horodatage dans la ligne qui n'existe plus.


Ce serait formidable si quelqu'un pouvait conseiller comment résoudre ce problème.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Sander,
Il n'y a pas d'erreur dans mon cas. Pouvez-vous me dire votre version d'Excel? Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Crystal, c'est vraiment bien, comment puis-je obtenir le changement d'horodatage dans chaque ligne correspondante lorsqu'une cellule de la plage de cellules de la ligne respective change. Par exemple, A2 doit être mis à jour avec l'horodatage lorsque des modifications sont effectuées sur la deuxième ligne entre B2 et H2 et, de la même manière, A3 obtient l'horodatage lorsque des modifications sont effectuées sur B3 à H3, et ainsi de suite jusqu'à la dernière ligne.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour à tous

Merci d'avance pour votre aide.

Quel devrait être le code pour mettre à jour l'heure actuelle sur la cellule de la colonne X s'il y a un changement dans une cellule de cette ligne ? Par exemple, tout changement de valeurs sur les cellules a2 à w2, alors le temps doit être mis à jour en x2.


Merci encore.
Ce commentaire a été minimisé par le modérateur sur le site
La fonctionnalité d'horodatage serait-elle contournée si le fichier Excel que vous utilisez est actualisable ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonne journée,
Le code ne prend pas en charge les données de connexion. Désolé pour le dérangement.
Ce commentaire a été minimisé par le modérateur sur le site
Gents,

Cela fait un mois que je cherche une solution similaire comme celle-ci. Bien que la solution ci-dessus semble être OTM, je l'utilise pour le marché boursier.
J'ai donc la colonne F où j'ai mis en place une stratégie d'achat/vente et la feuille continue de s'actualiser toutes les 1 minute. J'ai la colonne T où je veux l'horodatage basé sur les conditions suivantes :

(1) Colonne F - Signale un achat ou une vente
(2) Colonne F - Modifications d'un achat à une vente ou d'une vente à un achat
(3) Colonne F - Changements d'un achat/vente à vide

Bien que la solution générale disponible sur le net semble fonctionner (formule Excel), mais lorsque les données sont actualisées, l'heure actuelle est supérieure à l'heure du signal. Par exemple, si je reçois un achat à 9h15 et si l'heure actuelle est 10h30, je vois 10h30 dans la colonne T (heure du signal) et non 9h15.

Toute assistance sera grandement appréciée.

Meilleurs voeux
JT
Ce commentaire a été minimisé par le modérateur sur le site
5/15/19|1:41 PM|John Smith|125B-1|10000000|Equipment|Staff|5/15/19|2:43 PM|Staff

Le message ci-dessus montre les données entrées dans une ligne. Je cherchais de l'aide pour mettre à jour les 2 premières colonnes contenant un horodatage chaque fois que la colonne ID (10000000) est remplie. Si possible, les horodatages pourraient-ils également être supprimés si l'ID est également supprimé ? En ce qui concerne les 3 dernières colonnes (date|heure|personnel), ces horodatages peuvent-ils être mis à jour chaque fois que la dernière colonne est remplie avec un nom de personnel. J'ai essayé de jouer avec le code mais mon manque de connaissances avec VBA ne m'a permis de faire que beaucoup de choses.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Crystal,
J'essaie de créer une fonction où si je mets à jour une cellule dans H9: L9 dans la feuille 1, l'horodatage dans la cellule C2 de la feuille 2 doit être mis à jour.
Maintenant, je dois le faire sur environ 100 lignes dans la feuille 1 (H10: L10, H11: L11) et mettre à jour les C3, C4 correspondants... dans la feuille 2

Toute aide est grandement appréciée. Acclamations.!
Il n'y a pas encore de commentaires postés ici
TÉLÉCHARGER PLUS
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés