Vinay utilise une feuille de calcul Excel pour la saisie des données. Les informations sont entrées dans la colonne A et Vinay aimerait avoir un moyen d’ajouter automatiquement une heure dans la colonne B, adjacente à la valeur entrée dans la colonne A, qui indique quand la valeur a été entrée.

Il existe plusieurs façons d’accomplir cette tâche. La première consiste à entrer manuellement une heure en sélectionnant la cellule adjacente dans la colonne B et en appuyant sur Ctrl + Maj +; (c’est le point-virgule). Ce raccourci entre l’heure actuelle dans la cellule. Le problème avec cette approche, bien sûr, est qu’elle n’est pas automatique et que la mise en œuvre nécessite des mouvements et des frappes supplémentaires.

Une meilleure approche serait d’utiliser une formule pour saisir l’heure. La fonction MAINTENANT renvoie la date et l’heure actuelles, et vous pouvez l’utiliser dans une cellule de cette manière:

=NOW()

Bien sûr, cette formule simple est mise à jour chaque fois que la feuille de calcul recalcule. Cela signifie que la fonction renvoie l’heure actuelle chaque fois que vous entrez une valeur dans la colonne A. Cela n’est pas souhaitable car vous ne voulez pas que les heures précédentes se mettent à jour. Vous pouvez essayer d’utiliser une formule pour vérifier si quelque chose se trouve dans la colonne A, comme de cette manière:

=IF(A3="","",IF(B3="",NOW(),B3))

Le problème est qu’une formule comme celle-ci introduit une référence circulaire dans la feuille de calcul, ce qui présente toute une série de défis à relever. Une meilleure approche consiste à créer une macro qui s’exécute automatiquement chaque fois que quelque chose est entré dans la colonne A. Cliquez avec le bouton droit sur l’onglet de la feuille de calcul utilisée pour la saisie des données et choisissez Afficher le code dans le menu contextuel. Vous verrez la fenêtre Code pour la feuille de calcul dans Visual Basic Editor, puis entrez-la dans la fenêtre:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rCell As Range     Dim rChange As Range          On Error GoTo ErrHandler     Set rChange = Intersect(Target, Range("A:A"))

If Not rChange Is Nothing Then         Application.EnableEvents = False         For Each rCell In rChange             If rCell > "" Then                 With rCell.Offset(0, 1)

.Value = Now                     .NumberFormat = "hh:mm:ss"

End With             Else                 rCell.Offset(0, 1).Clear             End If         Next     End If

ExitHandler:

Set rCell = Nothing     Set rChange = Nothing     Application.EnableEvents = True     Exit Sub ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

Avec la macro en place, chaque fois que vous entrez quelque chose dans une cellule de la colonne A, la cellule adjacente de la colonne B contiendra la date et l’heure (formatée pour n’afficher que l’heure). Si vous supprimez quelque chose dans la colonne A, la cellule adjacente de la colonne B est également effacée.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (12811) s’applique à Microsoft Excel 2007, 2010 et 2013. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Recording_a_Data_Entry_Time [Enregistrement d’une heure d’entrée de données].