Donna doit tenir un journal des activités qui ont eu lieu tout au long de la journée à son centre de répartition. Lorsqu’un appel arrive par radio, elle a besoin de documenter qui, quoi, pourquoi, etc. Elle doit également documenter l’heure (au format 24 heures) à laquelle l’appel est arrivé. Donna fait actuellement tout cela sur papier. Elle souhaite créer une feuille de calcul dans laquelle elle peut taper et que l’horodatage est automatiquement renseigné dès qu’elle entre du texte dans la cellule à côté de cette ligne. Lorsque la cellule à côté est vide, elle souhaite que sa cellule d’horodatage soit vide. De cette façon, elle peut gagner du temps en vérifiant l’horloge pour écrire l’heure.

En abordant ce problème, supposons que vous souhaitiez que l’horodatage aille dans la colonne A et que vous entrerez votre « qui, quoi, pourquoi » et d’autres informations à partir de la colonne B. La façon la plus simple de procéder est de utilisez le raccourci intégré d’Excel pour entrer l’heure actuelle: appuyez sur Maj + Ctrl +; (c’est un point-virgule). À condition que la cellule soit formatée pour afficher les heures au format 24 heures, vous verrez l’heure actuelle comme vous le souhaitez.

Si vous voulez une approche plus automatique, vous pourriez penser que vous pourriez utiliser une formule simple dans la colonne A, comme celle-ci:

=IF(B2<>"", NOW(), "")

Bien que cela entre une heure dans la colonne A si la cellule correspondante dans la colonne B contient quelque chose, cela ne donnera pas de résultats satisfaisants en raison du fonctionnement de la fonction MAINTENANT. N’oubliez pas que la fonction renvoie toujours l’heure actuelle. Ainsi, à chaque fois que la feuille de calcul est recalculée, le contenu de la cellule B2 est vérifié. S’il y a quelque chose là, alors la fonction MAINTENANT est appelée, renvoyant l’heure actuelle du recalcul.

Cela signifie que l’heure indiquée dans la colonne Une cellule contenant cette formule changera toujours; ce ne sera pas un véritable horodatage.

Vous pouvez cependant rendre la formule de la colonne A un peu plus complexe, de cette manière:

=IF(B2<>"", IF(A2="",NOW(),A2), "")

La toute première fois que vous saisissez ceci, vous obtiendrez probablement une erreur car la formule est circulaire. En d’autres termes, la formule fait référence à la cellule dans laquelle la formule est placée. (Dans ce cas, la formule entre dans la cellule A2 et fait également référence à la cellule A2.) Pour que cette formule fonctionne correctement, vous devez suivre les étapes suivantes:

  1. Affichez la boîte de dialogue Options Excel. (Dans Excel 2007, cliquez sur le bouton Office, puis sur Options Excel. Dans Excel 2010 ou les versions ultérieures, affichez l’onglet Fichier du ruban, puis cliquez sur Options.)

  2. Cliquez sur Formules sur le côté gauche de l’écran. (Voir la figure 1.)

  3. Assurez-vous que la case à cocher Activer le calcul itératif est activée.

  4. Cliquez sur OK.

Désormais, chaque fois que vous mettez quelque chose dans la cellule B2, l’heure est entrée automatiquement dans la cellule A2. Cependant, l’heure n’y est indiquée que si la cellule A2 était auparavant vide. Si ce n’était pas le cas (c’est-à-dire qu’il contenait déjà une heure), le contenu actuel de la cellule A2 reste en place.

Si vous ne souhaitez pas autoriser les références circulaires (en activant les calculs itératifs), la meilleure approche consiste à utiliser une macro.

Vous pouvez utiliser l’événement Worksheet_Change pour entrer automatiquement une heure dans la colonne A chaque fois que quelque chose est entré dans la colonne B.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rInt As Range     Dim rCell As Range     Dim tCell As Range

Set rInt = Intersect(Target, Range("B:B"))

If Not rInt Is Nothing Then         For Each rCell In rInt             Set tCell = rCell.Offset(0, -1)

If IsEmpty(tCell) Then                 tCell = Now                 tCell.NumberFormat = "mmm d, yyyy hh:mm"

End If         Next     End If End Sub

Pour configurer la macro, cliquez avec le bouton droit sur l’onglet de la feuille de calcul et choisissez Afficher le code. Vous pouvez ensuite placer la macro dans la fenêtre de code qui s’affiche. (Cela place la macro dans le module ThisWorksheet, qui est requis car il s’agit d’un gestionnaire d’événements qui est exécuté chaque fois que quelque chose dans la feuille de calcul change.)

La macro vérifie que quelque chose est réellement entré dans la colonne B. Si tel est le cas, la variable tCell est définie sur la cellule correspondante de la colonne A. Si rien ne se trouve déjà dans cette cellule, la date et l’heure actuelles y sont placées. . Si vous voulez juste l’heure, changez la partie la plus interne de la macro en ceci:

tCell = Time                 tCell.NumberFormat = "hh:mm"

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13233) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.