Microsoft 365 Date du jour - sans mise à jour

Nathan027

XLDnaute Junior
Bonjour à tous

Je vous sollicite, car je cherche mais je ne trouve pas ..
Voici ma demande :
J'aimerai que lorsque dans le cellule H6 je note "x" .. dans la cellule J6 s'affiche la date du jour .. mais celle ci ne doit pas se mettre à jour le lendemain :)
Sauriez vous m'aider ?

Merci d'avance
 

job75

XLDnaute Barbatruc
Bonjour Nathan027, sylvanu,

Placez cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H6]) Is Nothing Then If LCase([H6]) = "x" Then [J6] = Date
End Sub
A+
 

Nathan027

XLDnaute Junior
Bonjour Nathan027, sylvanu,

Placez cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H6]) Is Nothing Then If LCase([H6]) = "x" Then [J6] = Date
End Sub
A+
Merci pour ta réponse
Je vais abuser maintenant 😅 .
Est ce possible que cela fonctionne sur toute la colonne H et J
En gros Si c'est dans H7 .. ca sera dans J7, si c'est dans H8 .. ca sera dans J8 .. ect ...
 

Modeste geedee

XLDnaute Barbatruc
Bonjour à tous

Je vous sollicite, car je cherche mais je ne trouve pas ..
Voici ma demande :
J'aimerai que lorsque dans le cellule H6 je note "x" .. dans la cellule J6 s'affiche la date du jour .. mais celle ci ne doit pas se mettre à jour le lendemain :)
Sauriez vous m'aider ?

Merci d'avance
Bonsour,
Sans VBA,
Taper directement en J6 simultanément les touches :

Alt ; " pour la date
Alt : " pour l'heure
 

Cousinhub

XLDnaute Barbatruc
Bonsoir,
Une version sans VBA, ni combinaison de touches, juste par formules (et autre subtilité)
Un Tableau structuré, une formule itérative, une option pour le calcul itératif et une option masquant la valeur 0
Bonne soirée
PS, à des fins d'essais, j'ai mis la fonction Maintenant() avec un format "hh:mm:ss"
On peut remplacer par la fonction Aujourdhui(), avec le format ad hoc
 

Pièces jointes

  • maintenir date.xlsx
    27.7 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour le forum,

Retour sur la macro du post #6.

Si l'on s'amuse à entrer "x" sur toutes les cellules de la colonne H la macro prend un temps fou.

Pour y remédier utilisez plutôt :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, i&
Set Target = Intersect(Target, [H:H], UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target.Areas 'si entrées multiples
    If Target.Count = 1 Then
        If LCase(Target) = "x" Then Target(1, 3) = Date
    Else
        a = Target 'matrice, plus rapide
        b = Target.Offset(, 2)
        For i = 1 To UBound(a)
            If LCase(a(i, 1)) = "x" Then b(i, 1) = Date
        Next i
        Target.Offset(, 2) = b
    End If
Next Target
End Sub
Sur les 1048576 cellules la macro s'exécute chez moi en 2,6 secondes.

A+
 

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
juste en passant
et là je m'adresse surtout à @job75
je pige pas le besoins de passer par une varible tableau
ni même tes boucles
comme ça l'event change fonctionne aussi bien sur 1 que tout une colonne
sans variable tableau
sans boucle
et même sur des areas non contiguës

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, i&
Set Target = Intersect(Target, [H:H], UsedRange)
If Target Is Nothing Then Exit Sub
t = Timer
Target.Offset(, 2).Value = Date
MsgBox Format(Timer - t, "#0.000 sec")
End Sub


Public Sub testx()
[h1:h1048576] = "x"
End Sub

Public Sub testx2()
Range("h1:h5000,h8000:h65000") = "x"
End Sub
test sur la colonne entière(testx)
demo.gif


test sur areas non contigues(testx2)

demo.gif
 

Discussions similaires

Réponses
4
Affichages
109

Statistiques des forums

Discussions
312 209
Messages
2 086 273
Membres
103 168
dernier inscrit
isidore33