Figer la Date ou Heure dans une cellule

Bonjour,

Dans ce fil --> https://forum.excel-pratique.com/excel/bloquer-la-fonction-maintenant-132418, Baboutz demandait de créer une astuces sur le sujet. Voici quelques méthodes pour bloquer ou figer une date et/ou heure dans une cellule.

Exemple : La cellule B2 affiche l'heure de modification (ou Date) en fonction d'une information est entrée en cellule A.

1. METHODE PAR FORMULE (astuce fournie par le membre DRE en 2008 --> https://forum.excel-pratique.com/excel/fonction-date-4929)

- Aller dans le menu FICHIER -> AUTRES -> FORMULES
- Dans la rubrique MODE DE CALCUL, cocher la case ITERATION
- Dans la feuille, sélectionner la cellule B2
- Mettre la formule --> =SI(A2<>0;SI(B2=0;MAINTENANT();B2);)
- Aller ensuite dans FORMAT / CELLULE et choisir le format "Heure" ou "Date" souhaité
- Recopier éventuellement la formule vers le bas pour appliquer à d'autres cellules.

Si vous changez la valeur en colonne A, l'heure ou la date en colonne B restera figée.
Par contre si vous voulez tout de même modifier la donnée, effacez d'abord l'information en colonne A puis remettez-la.

A noter que si aucune donnée n'est en colonne A, l'heure ou la date sera indiquée à 00…
Si vous ne voulez toutefois pas voir les 00… en B2 lorsqu'il n'y a pas de valeur en A2, procéder comme suit :
- Sélectionner la cellule B2
- Aller dans le menu ACCUEIL
- Dans la liste déroulante "Format de nombre", choisissez l'option "Personnalisé".
- Dans la rubrique "Type", derrière le format actif, ajouter --> ;; --> puis Ok (Exemple : "jj-mm-aa;;")

NB : La fonction MAINTENANT utilisée dans la formule peut être remplacée par AUJOURDHUI(). Dans ce cas, il faut éventuellement adapter le format de la cellule.

2. METHODE PAR CODE VBA
- Sélectionner l'onglet concerné
- Dans le menu excel, aller dans l'outil "Developpeur" puis cliquer sur l'icone "Visualiser le code"
- Coller le code ci-dessous selon le résultat attendu

2.1 Résultat en Heures minutes seconde

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A2")) Is Nothing Then
    If Target.Value <> "" Then Target.Offset(0, 1) = Format(Time, "hh:mm:ss:")
End If
End Sub

La méthode Time ne fonctionne qu'avec les heures minutes secondes. Time correspond à l'heure de l'OS de l'ordinateur

2.2 Résultat avec Date et/ou heures minutes secondes

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A2")) Is Nothing Then
    If Target.Value <> "" Then Target.Offset(0, 1) = Now 'Date et heure
    'If Target.Value <> "" Then Target.Offset(0, 1) = format(Now, "dd/mm/yyyy") 'Date seule
    'If Target.Value <> "" Then Target.Offset(0, 1) = format(Now, "hh:mm:ss") 'Heures, minutes, seconde
End If
End Sub

3. METHODE PAR RACCOURCI CLAVIER (Sous excel Windows)
- Sélectionne la cellule B2
- Pour afficher l'heure : appuyer les touches --> CTRL + :
- Pour afficher la date : Appuyer sur les touches -> CTRL et ;

Pour changer l'heure ou la date en B2, se repositionner sur B2 et réutiliser les touches -> CTRL + : (Heure) ou CTRL + ; (Date)

NB : Par défaut le format est sur "hh:mm", ce raccourci ne vous donne toutefois pas les secondes. Si vous voulez les secondes, mettez le bon format dans la cellule via le menu ACCUEIL puis choisir dans la liste déroulante "Format des nombres"

Cordialement

Salut Dan,
je viens de lire mais je ne trouve pas le mode iteration :(
je pnese donc que je vais partir sur un macro du coup

Bonjour

C'est expliqué dans les deux premières lignes.

--> case à cocher "Activer le calcul itératif"

Cordialement

Merci très instructif

Rechercher des sujets similaires à "figer date heure"