Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Manniaque des raccourcis

16 réponses
Avatar
milloche
Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer
NOW value dans certaines cellules (le résultat n'est pas volatile et c'est bien comme çà).
Très pratique, cela marche même si la cellule était formatée autrement qu'en date (elle
accueille parfois temporairement des %ages avant de devenir date et heures). Elle s'adapte
toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et dans
ce cas que Excel fasse ce travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.

10 réponses

1 2
Avatar
garnote
Bonjour,

Un exemple :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target.Value = "x" Then Target.Value = Now
End Sub

Ceci te convient-il ?

Serge

"milloche" a écrit dans le message de news:
Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer NOW value dans certaines cellules
(le résultat n'est pas volatile et c'est bien comme çà). Très pratique, cela marche même si la cellule était formatée
autrement qu'en date (elle accueille parfois temporairement des %ages avant de devenir date et heures). Elle s'adapte toute
seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et dans ce cas que Excel fasse ce
travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.



Avatar
michdenis
Un aperçu de ce qui est possible de faire :

Si tu tapes X dans n'importe quelle cellule de la feuille
elle se transformera en Date & heure...
Tu peux décider du format de la date que tu désires...

Tu places cette procédure dans le module feuille où l'action se déroule
Tu remplaces Range("a:A") par la plage de cellules que tu veux affecter
par la procédure.
'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Intersect(Range("A:A"), Target)
If UCase(C) = "X" Then
Application.EnableEvents = False
C = "": C = Now
C.NumberFormat = "DD/MM/YYYY HH:MM:SS"
Application.EnableEvents = True
ElseIf C = "" Then
C.NumberFormat = "General"
End If
Next

End Sub
'------------------------------




"milloche" a écrit dans le message de groupe de discussion :

Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer
NOW value dans certaines cellules (le résultat n'est pas volatile et c'est bien comme çà).
Très pratique, cela marche même si la cellule était formatée autrement qu'en date (elle
accueille parfois temporairement des %ages avant de devenir date et heures). Elle s'adapte
toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et dans
ce cas que Excel fasse ce travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.
Avatar
garnote
Mauvaise réponse, toutes mes excuses.

Serge

"garnote" a écrit dans le message de news:
Bonjour,

Un exemple :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target.Value = "x" Then Target.Value = Now
End Sub

Ceci te convient-il ?

Serge

"milloche" a écrit dans le message de news:
Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer NOW value dans certaines cellules
(le résultat n'est pas volatile et c'est bien comme çà). Très pratique, cela marche même si la cellule était formatée
autrement qu'en date (elle accueille parfois temporairement des %ages avant de devenir date et heures). Elle s'adapte
toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et dans ce cas que Excel fasse ce
travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.







Avatar
garnote
En m'inspirant du maître, je te propose plutôt celle-ci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
Set inter = Intersect(Range("A:A"), Target)
If Not inter Is Nothing Then
For Each C In inter
If UCase(C) = "X" Then
Application.EnableEvents = False
C = Now
Application.EnableEvents = True
Else
C.NumberFormat = "General"
End If
Next C
End If
End Sub

Serge



"garnote" a écrit dans le message de news:
Mauvaise réponse, toutes mes excuses.

Serge

"garnote" a écrit dans le message de news:
Bonjour,

Un exemple :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target.Value = "x" Then Target.Value = Now
End Sub

Ceci te convient-il ?

Serge

"milloche" a écrit dans le message de news:
Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer NOW value dans certaines cellules
(le résultat n'est pas volatile et c'est bien comme çà). Très pratique, cela marche même si la cellule était formatée
autrement qu'en date (elle accueille parfois temporairement des %ages avant de devenir date et heures). Elle s'adapte
toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et dans ce cas que Excel fasse ce
travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.











Avatar
Jacky
Bonjour,
'---------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Or Target.Column = 5 Then
If UCase(Target) = "X" Then Target = Now
End If
End Sub
'----------------

--
Salutations
JJ


"milloche" a écrit dans le message de news:

Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis
ctrl+deux-points pour entrer NOW value dans certaines cellules (le
résultat n'est pas volatile et c'est bien comme çà). Très pratique, cela
marche même si la cellule était formatée autrement qu'en date (elle
accueille parfois temporairement des %ages avant de devenir date et
heures). Elle s'adapte toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette
cellule et dans ce cas que Excel fasse ce travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.



Avatar
milloche
La première solution de garnote me plaisait bien (1 ligne) mais elle ne formatait pas la
cellule, contrairement au clavier.
J'ai rajouté une ligne pour le formatage et impecable donc 2 lignes.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "x" Then Target.Value = Now
Target.NumberFormat = "m/d/yyyy"
End Sub

Les autres solutions sont bonnes aussi, mais plus grosses.
Mais si je comprends bien évitent de faire des bêtises dans d'autres cellules que celles
prévues.
Mon dilemme : je ne sais plus que choisir.
Je me retrouve comme un enfant au pied du sapin devant plein de cadeaux. Je vais tester
tout cà.
Merci à tous deux.
JMM

"michdenis" a écrit dans le message de news:

Un aperçu de ce qui est possible de faire :

Si tu tapes X dans n'importe quelle cellule de la feuille
elle se transformera en Date & heure...
Tu peux décider du format de la date que tu désires...

Tu places cette procédure dans le module feuille où l'action se déroule
Tu remplaces Range("a:A") par la plage de cellules que tu veux affecter
par la procédure.
'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Intersect(Range("A:A"), Target)
If UCase(C) = "X" Then
Application.EnableEvents = False
C = "": C = Now
C.NumberFormat = "DD/MM/YYYY HH:MM:SS"
Application.EnableEvents = True
ElseIf C = "" Then
C.NumberFormat = "General"
End If
Next

End Sub
'------------------------------




"milloche" a écrit dans le message de groupe de discussion
:

Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer
NOW value dans certaines cellules (le résultat n'est pas volatile et c'est bien comme
çà).
Très pratique, cela marche même si la cellule était formatée autrement qu'en date (elle
accueille parfois temporairement des %ages avant de devenir date et heures). Elle
s'adapte
toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et
dans
ce cas que Excel fasse ce travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.



Avatar
milloche
Bon alors maintenant merci à tous trois

"Jacky" a écrit dans le message de news:

Bonjour,
'---------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Or Target.Column = 5 Then
If UCase(Target) = "X" Then Target = Now
End If
End Sub
'----------------

--
Salutations
JJ


"milloche" a écrit dans le message de news:

Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer
NOW value dans certaines cellules (le résultat n'est pas volatile et c'est bien comme
çà). Très pratique, cela marche même si la cellule était formatée autrement qu'en date
(elle accueille parfois temporairement des %ages avant de devenir date et heures). Elle
s'adapte toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et
dans ce cas que Excel fasse ce travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.







Avatar
garnote
Salut Milloche,

Mon adaptation de la macro de Denis me semble éviter
toute forme d'erreur. Entre autre, si tu décides par exemple
d'entrer un nombre par-dessus une date obtenue par la macro,
il sera formaté correctement.
Et si tu veux obtenir ton résultat en entrant un x ou un X
dans une cellule quelconque de ta feuille, il y aurait ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Target
If UCase(C) = "X" Then
Application.EnableEvents = False
C.NumberFormat = "m/d/yyyy"
C = Now
Application.EnableEvents = True
Else
C.NumberFormat = "General"
End If
Next C
End Sub

Serge





"milloche" a écrit dans le message de news: e%
La première solution de garnote me plaisait bien (1 ligne) mais elle ne formatait pas la cellule, contrairement au clavier.
J'ai rajouté une ligne pour le formatage et impecable donc 2 lignes.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "x" Then Target.Value = Now
Target.NumberFormat = "m/d/yyyy"
End Sub

Les autres solutions sont bonnes aussi, mais plus grosses.
Mais si je comprends bien évitent de faire des bêtises dans d'autres cellules que celles prévues.
Mon dilemme : je ne sais plus que choisir.
Je me retrouve comme un enfant au pied du sapin devant plein de cadeaux. Je vais tester tout cà.
Merci à tous deux.
JMM

"michdenis" a écrit dans le message de news:
Un aperçu de ce qui est possible de faire :

Si tu tapes X dans n'importe quelle cellule de la feuille
elle se transformera en Date & heure...
Tu peux décider du format de la date que tu désires...

Tu places cette procédure dans le module feuille où l'action se déroule
Tu remplaces Range("a:A") par la plage de cellules que tu veux affecter
par la procédure.
'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
For Each C In Intersect(Range("A:A"), Target)
If UCase(C) = "X" Then
Application.EnableEvents = False
C = "": C = Now
C.NumberFormat = "DD/MM/YYYY HH:MM:SS"
Application.EnableEvents = True
ElseIf C = "" Then
C.NumberFormat = "General"
End If
Next

End Sub
'------------------------------




"milloche" a écrit dans le message de groupe de discussion :

Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour entrer
NOW value dans certaines cellules (le résultat n'est pas volatile et c'est bien comme çà).
Très pratique, cela marche même si la cellule était formatée autrement qu'en date (elle
accueille parfois temporairement des %ages avant de devenir date et heures). Elle s'adapte
toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et dans
ce cas que Excel fasse ce travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.







Avatar
milloche
Pour Michdenis
C'est la suite de mon post du 18/01 "Format pointu" et fonctionne dans le même fichier. Tu
m'avais déjà donné une solution pour une autre amélioration.
Que ferais-je sans toi qui vint à ma rencontre.
[;o ))

J'ai bien avancé quand même grâce à ce forum.
"milloche" a écrit dans le message de news:

Bon alors maintenant merci à tous trois

"Jacky" a écrit dans le message de news:

Bonjour,
'---------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Or Target.Column = 5 Then
If UCase(Target) = "X" Then Target = Now
End If
End Sub
'----------------

--
Salutations
JJ


"milloche" a écrit dans le message de news:

Bonjour
J'utilise très souvent ctrl+point-virgule puis espace puis ctrl+deux-points pour
entrer NOW value dans certaines cellules (le résultat n'est pas volatile et c'est bien
comme çà). Très pratique, cela marche même si la cellule était formatée autrement
qu'en date (elle accueille parfois temporairement des %ages avant de devenir date et
heures). Elle s'adapte toute seule.
Je voudrais encore simplifier, c'est à dire ne taper qu' un "x" dans cette cellule et
dans ce cas que Excel fasse ce travail à ma place.
Comme toujours, l'idée mais ne sais pas faire pratiquement.
Évènementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.











Avatar
gmlsteph
Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range
Set iSect = Intersect(Target, Union(Range("b:b"), Range("e:e")))
Application.EnableEvents = False
For Each c In iSect
If LCase(c) = "x" Then c = Format(Now, "dd-mmm-yyyy hh:nn:ss")
Next
Application.EnableEvents = True
End Sub

'lSteph

milloche a écrit :
Bonjour
J'utilise tr�s souvent ctrl+point-virgule puis espace puis ctrl+d eux-points pour entrer
NOW value dans certaines cellules (le r�sultat n'est pas volatile et c'est bien comme ��).
Tr�s pratique, cela marche m�me si la cellule �ta it format�e autrement qu'en date (elle
accueille parfois temporairement des %ages avant de devenir date et heure s). Elle s'adapte
toute seule.
Je voudrais encore simplifier, c'est � dire ne taper qu' un "x" d ans cette cellule et dans
ce cas que Excel fasse ce travail � ma place.
Comme toujours, l'id�e mais ne sais pas faire pratiquement.
�v�nementielle, je pense, mais je plane encore.
Et ceci ne doit pouvoir se faire que en colonne B ou E.
Bon courage.


1 2