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

Comment enregistrer automatiquement la date et l'heure lorsque la cellule change?

Il est facile pour nous d'insérer manuellement une date et une heure statiques ou d'insérer une date dynamique changeant avec l'heure système avec une formule. Si vous souhaitez enregistrer automatiquement la date et l'heure lorsque vous modifiez ou entrez des valeurs, ce problème peut être quelque peu différent à traiter. Mais, dans cet article, vous pouvez résoudre cette tâche avec les étapes suivantes.

Enregistrez automatiquement la date et l'heure lorsque la cellule change avec le code VBA

Onglet Office Activez la modification et la navigation par onglets dans Office et simplifiez considérablement votre travail ...
Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%
  • Réutiliser n'importe quoi: Ajoutez les formules, les graphiques et tout autre élément les plus utilisés ou les plus complexes à vos favoris et réutilisez-les rapidement à l'avenir.
  • Plus de 20 fonctionnalités de texte: Extraire le numéro de la chaîne de texte; Extraire ou supprimer une partie des textes; Convertissez les nombres et les devises en mots anglais.
  • Outils de fusion: Plusieurs classeurs et feuilles en un seul; Fusionner plusieurs cellules / lignes / colonnes sans perdre de données; Fusionner les lignes en double et la somme.
  • Outils de fractionnement: Diviser les données en plusieurs feuilles en fonction de la valeur; Un classeur vers plusieurs fichiers Excel, PDF ou CSV; Une colonne à plusieurs colonnes.
  • Coller sauter Lignes cachées / filtrées; Compte et somme par couleur d'arrière-plan; Envoyez des e-mails personnalisés à plusieurs destinataires en masse.
  • Super filtre: Créez des schémas de filtres avancés et appliquez-les à toutes les feuilles; Sort par semaine, jour, fréquence et plus encore; Filtre par gras, formules, commentaire ...
  • Plus de 300 fonctionnalités puissantes; Fonctionne avec Office 2007-2021 et 365 ; Prend en charge toutes les langues; Déploiement facile dans votre entreprise ou organisation.

flèche bleue bulle droite Enregistrez automatiquement la date et l'heure lorsque la cellule change avec le code VBA

Par exemple, j'ai une plage de valeurs, et maintenant, lorsque je change ou saisis de nouvelles valeurs dans la colonne B, je veux qu'il enregistre automatiquement la date et l'heure actuelles dans la colonne C comme la capture d'écran suivante:

doc-update-time-value-changes-1

Vous pouvez terminer cette tâche avec le code VBA suivant. Veuillez faire comme ceci:

1. Maintenez le ALT + F11 clés pour ouvrir le Fenêtre Microsoft Visual Basic pour Applications.

2. Ensuite, choisissez votre feuille de calcul utilisée à gauche Explorateur de projets, double-cliquez dessus pour ouvrir le Module, puis copiez et collez le code VBA suivant dans le module vide:

Code VBA: enregistrez automatiquement la date et l'heure lorsque la cellule change

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

doc-update-time-value-changes-1

3. Ensuite, enregistrez et fermez ce code pour revenir à la feuille de calcul, maintenant lorsque vous modifiez la valeur de la cellule ou tapez de nouvelles données dans la colonne B, la date et l'heure seront automatiquement enregistrées dans la colonne C.

Notes:

1. Dans le code ci-dessus, vous pouvez modifier le "B: B»Vers toute autre colonne dont vous souhaitez modifier les valeurs de cellule dans ce script: Définissez WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. Avec cela xColonne de décalage = 1 script, vous pouvez insérer et mettre à jour la date et l'heure dans la première colonne à côté de votre colonne de valeur changeante, vous pouvez changer le numéro 1 en d'autres nombres, tels que 2,3,4,5… cela signifie que la date sera insérée le deuxième, troisième, quatrième ou cinquième colonne en plus de la colonne des valeurs modifiées.

3. Lorsque vous supprimez une valeur dans la colonne modifiée, la date et l'heure seront également supprimées.


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-2021 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes 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 (108)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Comment écrivez-vous le code pour le faire plusieurs fois sur une page Ex. texte en colonne B, date en C et texte en D, date en E ?
Ce commentaire a été minimisé par le modérateur sur le site
[quote]Comment écrivez-vous le code pour le faire plusieurs fois sur une seule page Ex. texte en colonne B, date en C et texte en D, date en E ?Par Hilary[/quote] Je sais que c'est ancien, mais le moyen le plus long mais le plus simple consiste à copier les déclarations de variables et à créer de nouvelles variables (c'est-à-dire WorkRng1 et Rng1). Vous devez également copier l'instruction "if" et remplacer les variables par les nouveaux noms de variables.
Ce commentaire a été minimisé par le modérateur sur le site
[quote]Comment écrivez-vous le code pour le faire plusieurs fois sur une seule page Ex. texte en colonne B, date en C et texte en D, date en E ?Par Hilary[/quote] Voici le code : Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Modifiez la plage pour sélectionner la colonne que vous mettez à jour, c'est-à-dire ("A : A") ou ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'Pour le deuxième horodatage 'Créer de nouveaux noms de variables, tels que WorkRng1, Rng1, etc. Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 'Pour le premier horodatage If Not WorkRng Is Nothing Alors Application.EnableEvents = False pour chaque Rng dans WorkRng sinon VBA.IsEmpty(Rng.Value) puis Rng.Offset(0, xOffsetColumn).Value = maintenant Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/ yyyy" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If 'Pour le deuxième horodatage If Not WorkRng1 Is Nothing Then Application.EnableEve nts = False For Each Rng1 In WorkRng1 If Not VBA.IsEmpty(Rng1.Value) Then Rng1.Offset(0, xOffsetColumn1).Value = Now Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/yyyy" Else Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Et si je veux faire cela pour une plage de colonnes ?
Ce commentaire a été minimisé par le modérateur sur le site
changez la plage (B:B) comme ceci : (10:20) pour les colonnes 10 à 20 (D5:D40) pour les colonnes 5 à 40 sur la ligne D J'espère que cela vous aidera.
Ce commentaire a été minimisé par le modérateur sur le site
Désolé, j'échange des colonnes avec des lignes, mais cela fonctionne toujours. (D:P) De la colonne D à P (D5:D5) de la colonne D à P sur la ligne 5
Ce commentaire a été minimisé par le modérateur sur le site
quand je l'enregistre ça marche mais quand je rouvre ça ne marche pas
Ce commentaire a été minimisé par le modérateur sur le site
[citation] quand je l'enregistre, ça marche mais quand je rouvre, ça ne marche pasPar Arif[/quote] Même problème qu'Aarif... Cela a fonctionné il y a une demi-heure, et maintenant ça ne marche plus... aussi, je voulais seulement l'heure pas la date ET l'heure, alors j'ai modifié le ".NumberFormat" pour qu'il soit juste hh:mm:ss, enregistré, testé... pas différent... mettant toujours la date et l'heure... ? j'ai rouvert le VB et tapé du texte délimité, enregistré à nouveau, toujours rien de bon, puis je l'ai fait une troisième fois, et le format a fait comme il a été dit et tout à coup j'ai eu juste le temps. TRÈS bizarre J'ai longtemps pensé qu'Excell était hanté, depuis que j'ai utilisé la fonction RECHERCHE pour la première fois, cherchant une valeur dans une cellule que je pouvais voir de mes propres yeux, mais Excel a insisté sur le fait qu'il n'existait pas ! ? Des gourous Excel ou des exorcistes qui peuvent aider ? pourquoi ignore-t-il mon VB et PAS l'horodatage comme il l'a fait... ? merci :cry:
Ce commentaire a été minimisé par le modérateur sur le site
[quote]Comment écrivez-vous le code pour le faire plusieurs fois sur une seule page Ex. texte en colonne B, date en C et texte en D, date en E ?Par Hilary[/quote] quelle est la réponse à la citation
Ce commentaire a été minimisé par le modérateur sur le site
Que se passe-t-il si je veux que cela s'exécute mais que je ne suis pas sur une feuille active, alors exécutez-le en arrière-plan et mettez-le à jour chaque fois qu'il y a une entrée dans la colonne B ?
Ce commentaire a été minimisé par le modérateur sur le site
Que se passe-t-il si la colonne qui affecte la colonne d'horodatage est la somme de plusieurs autres colonnes ? Par exemple ... La colonne H est = Somme (E + F + G) et je voudrais qu'un horodatage soit fait dans la colonne I chaque fois que la colonne H a été modifiée, ou essentiellement lorsque les colonnes E, F ou G ont été modifiées . Peux-tu aider s'il te plait??
Ce commentaire a été minimisé par le modérateur sur le site
J'ai besoin d'aide s'il vous plait! J'essaie de faire un horodatage à chaque fois que l'une des trois cellules est modifiée. J'aimerais idéalement le faire lorsque la somme de ces cellules a été modifiée. Par example. Les cellules E, F, G seront modifiées et la cellule H sera la somme de ces trois cellules. Lorsque la cellule H a été modifiée, j'aimerais que la cellule I soit horodatée. Est-ce possible?? Merci beaucoup
Ce commentaire a été minimisé par le modérateur sur le site
J'essaie d'exécuter le code ci-dessus ; cependant, la cellule dont je veux enregistrer le changement est liée à une case à cocher et est donc soit "VRAI" soit "FAUX". Pour une raison quelconque, le code ne fonctionnera pas lorsque la cellule change. Cependant, si j'insère dire "oui" manuellement, le code fonctionne correctement. Une solution de contournement pour ce problème que vous connaissez? Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Est-il possible de faire cela pour les données historiques ? Si j'ai apporté des modifications à une cellule hier ou il y a un mois, puis-je utiliser une forme de ce code pour récupérer ces dates ?
Ce commentaire a été minimisé par le modérateur sur le site
Existe-t-il un moyen d'horodater en fonction d'un changement spécifique ? Par exemple, j'ai une feuille de calcul avec une colonne d'options déroulantes, notamment être vide, "Ok" et "Act". Lorsque la tâche est terminée, la liste déroulante est utilisée manuellement pour sélectionner 'Ok'. J'aimerais que l'horodatage soit lié au moment où 'Ok' est sélectionné, mais pas au moment où 'Act' est sélectionné. L'option "Act" dans la liste déroulante est utilisée lorsqu'une tâche est en retard, mais j'essaie vraiment de savoir quand un élément est terminé. Existe-t-il un moyen d'accomplir cela avec le code ci-dessus? Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Avez-vous pu résoudre cela ?
Ce commentaire a été minimisé par le modérateur sur le site
c'est une très bonne question. avez-vous trié, pourriez-vous s'il vous plaît partager le chemin?
à
Ce commentaire a été minimisé par le modérateur sur le site
Je peux changer la plage en ("A:Q") mais j'ai besoin de la date et de l'heure pour passer en "S" si les données d'une cellule AQ sont modifiées/supprimées. Je suis VBA contesté. Toute aide est grandement appréciée!
Ce commentaire a été minimisé par le modérateur sur le site
Désolé, je viens de poster une question et j'ai besoin de la réponse à cela... J'ai dû manquer ce commentaire... j'espère que quelqu'un pourra m'aider !
Ce commentaire a été minimisé par le modérateur sur le site
Comment puis-je le changer pour que seule la date de la cellule adjacente change ?
Ce commentaire a été minimisé par le modérateur sur le site
Comment puis-je obtenir l'horodatage pour enregistrer dans une cellule spécifique, au lieu de la cellule à côté de celle qui a été modifiée. J'essaie d'horodater une rangée de cellules lorsqu'un changement se produit dans l'une de ces cellules, j'aimerais que l'horodatage soit enregistré dans une cellule spécifique ... quelqu'un peut-il m'aider? Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Salut, merci pour cela car c'est excellent pour la vérifiabilité de la Banque mondiale. Existe-t-il un moyen de modifier cela pour que la date/heure soit enregistrée quelque part sur le WB chaque fois qu'un commentaire est ajouté ou modifié ? Je sais que c'est une question générale, mais je ne sais pas si c'est possible (malheureusement pour MS 2010, la propriété .comment ne contient pas de propriété de date pour identifier quand elle a été saisie. Mike
Ce commentaire a été minimisé par le modérateur sur le site
Comment puis-je configurer pour lire la colonne A:A et donner l'horodatage dans B:B uniquement lorsqu'un nombre à 14 chiffres y est entré ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut, j'ai besoin d'aide pour le codage VBA. Je crée une feuille de calcul avec des cas qui seront attribués à des personnes et qui auront un statut de cas. Le destinataire sera dans le Col H et j'ai besoin d'un horodatage dans le Col I lorsque la cellule du Col H sera mise à jour ou modifiée avec un nom. De même, j'aurai le statut du dossier dans le Col J et j'aurai besoin d'un horodatage dans le Col K lorsqu'un statut sera saisi ou modifié. également lorsqu'il n'y a pas de nom ou de statut de cessionnaire, j'ai besoin que le timbre à date dans les colonnes I et K soit vide. Toute aide serait appréciée. Merci
Ce commentaire a été minimisé par le modérateur sur le site
J'ai trouvé ce code ailleurs et je l'ai modifié pour mon usage. Si cela est fait correctement, vous n'avez pas à vous soucier d'entrer une fonction dans une cellule ou le fichier changeant les dates à la date de ce jour à chaque fois qu'il est ouvert. - ouvrez Excel - appuyez sur "Alt+F11" - Double-cliquez sur la feuille de calcul à laquelle vous souhaitez appliquer la modification (listée à gauche) - copiez/collez le code ci-dessous - ajustez l'entrée Range(_:_) pour qu'elle corresponde à la colonne que vous allez mettre à jour - ajustez l'entrée Offset(0,_) pour qu'elle corresponde à la colonne où vous souhaitez afficher la date (dans la version ci-dessous, je fais des mises à jour de la colonne D et je veux que la date soit affichée dans la colonne F, d'où l'entrée d'entrée de "2" pour 2 colonnes à partir de la colonne D) - appuyez sur Enregistrer - répétez les étapes ci-dessus s'il y a d'autres feuilles de calcul dans votre classeur qui ont besoin du même code - vous devrez peut-être changer le format numérique de la colonne affichant le date à "Général" et augmentez la largeur de la colonne si elle affiche "####" après avoir fait une entrée mise à jour D:D")) N'est rien alors Quitter Sub Target.Offset(0, 2) = Date End Sub ___ _________________________________________________________ Bonne chance...
Ce commentaire a été minimisé par le modérateur sur le site
ce code affichera la date au clic, il apparaît, est-il possible d'afficher la date uniquement lorsque le contenu de la cellule est modifié, si seulement cliqué et rien n'a changé, la date ne s'affiche pas ou la date précédemment saisie reste?
Ce commentaire a été minimisé par le modérateur sur le site
Lorsque j'enregistre dans une macro une formule vloocup, comment puis-je faire en sorte que cette date soit automatiquement modifiée à 1 jour comme le 21/07/2017, puis le lendemain, elle a été modifiée en 22/07/2017. Veuillez partager automatiquement s'il existe un code vba.
Ce commentaire a été minimisé par le modérateur sur le site
remplacer cette ligne
Rng.Offset(0, xOffsetColumn).Value = Maintenant

à
Rng.Offset(0, xOffsetColumn).Value = Now+1
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup pour le code ! Exactement ce que je cherchais !!
Ce commentaire a été minimisé par le modérateur sur le site
Merci de votre aide :-)
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

Nous suivre

Copyright © 2009 - www.extendoffice.com. | Tous les droits sont réservés. Alimenté par ExtendOffice. | | Plan du site
Microsoft et le logo Office sont des marques commerciales ou des marques déposées de Microsoft Corporation aux États-Unis et / ou dans d'autres pays.
Protégé par Sectigo SSL