Excel fournit un certain nombre de fonctions qui renvoient Vrai ou Faux en fonction du contenu d’une cellule. Par exemple, ISBLANK renvoie True si une cellule est vide, ISERR renvoie True si une cellule contient une valeur d’erreur et ISTEXT renvoie True si une cellule contient du texte. Vous vous demandez peut-être s’il est possible de déterminer si une cellule contient une heure.

La réponse courte est non, vous ne pouvez pas – Excel ne contient aucune fonction pour indiquer si une cellule contient une heure. La raison est assez simple: les heures et les dates dans Excel ne sont techniquement que des chiffres. Une date est un nombre compris entre 1 et 2958465, qui représentent les dates du 01/01/1900 au 31/12/9999. Si vous ajoutez une partie décimale au nombre, cela représente une heure (0 correspond à minuit, 0,25 correspond à 6h00, 0,5 correspond à midi, etc.).

Connaissant la plage de valeurs pouvant être utilisée pour les dates et les heures, ainsi que le fait qu’une cellule contenant une heure doit être formatée correctement pour afficher une heure, vous pouvez créer une formule qui indiquera si une cellule contient une heure:

=IF(AND(CELL("format",B2)>="D6",CELL("format",B2)<="D9"), "Time Format","Not Time Format")

Cette formule vérifie la mise en forme appliquée à la cellule B2. Si le formatage est l’un des formats couramment utilisés pour les heures, il renvoie le texte «Format de l’heure». Si une mise en forme différente est utilisée, la formule renvoie «Format non horaire».

Une approche différente consiste à vérifier si la valeur de la cellule B2 est une valeur de temps valide. Vous pouvez le faire en utilisant une formule telle que la suivante:

=IF(TIMEVALUE(TEXT(B2,"hh:mm:ss"))=B2, "Time Entry", "Not a Time Entry")

La fonction fonctionne correctement tant que la cellule B2 ne contient qu’une heure. Si la cellule contient à la fois une date et une heure, la fonction renvoie toujours «Pas une entrée d’heure».

Pour tirer le meilleur parti des deux mondes – vérification des formats et de la valeur dans la cellule – envisagez de créer une fonction définie par l’utilisateur dans VBA. La raison est simple: VBA inclut la fonction IsDate qui non seulement regarde la plage actuelle du nombre, mais vérifie également que la cellule est formatée en tant que date. La macro suivante fournit un exemple de la façon dont vous pourriez créer une telle fonction:

Function IsTime(rng As Range) As Boolean     Dim sValue As String     sValue = rng.Cells(1).Text     On Error Resume Next     IsTime = IsDate(TimeValue(sValue))

On Error GoTo 0 End Function

Pour utiliser la fonction, utilisez la formule suivante dans une cellule:

=IsTime(B2)

La fonction lit comment la valeur est affichée (à l’aide de la propriété text de l’objet cellule), puis tente de la convertir avec la fonction TIMEVALUE. S’il s’agit d’une date (déterminée par la fonction IsDate), l’affichage est une heure valide. S’il ne s’agit pas d’une date, VBA génère une erreur, que le code est programmé pour ignorer.

_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 (3292) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Checking_for_Time_Input [Vérification de l’entrée de temps].