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.

6 réponses

1 2
Avatar
milloche
Garnote
Serais tu encore plus maniaque que moi ?
Là, tu prévois tout ou presque, sauf l'imprévisible.
Mais toi tu sais et moi pas beaucoup.
Comme je dis toujours, j'ai beaucoup d'idées mais rarement de solutions.
Je dois commencer à être repéré avec mes questions.
Mais à la lecture des réponses, je m'apercois que vous vous intéressez de plus en plus
rapidement à mon cas.
Bon signe.
Cordialement.

"milloche" a écrit dans le message de news:
%
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
michdenis
Si tu permets une remarque ...

Situation A )
Que se passe-t-il si tu as une date émanant de ta macro
et que tu utilises la poignée de recopie dans le coins
inférieur droit de la cellule?

Situation B )
Que se passe-t-il si tu as une colonne avec des dates
émanant de cette procédure et que tu décides d'en effacer
4 ou 5 d'un seul coup ? Saisie par la suite une valeur
numérique dans ces cellules et observe le résultat !

'-----------------------------------
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
Bonjour tous, Oulala
Plus j'avance et plus je recule.J'essaie de résumer clairement.Car tout bloque
ou rien ne se passe plus.

Mon fichier est un suivi de la bourse.
En B la date d'achat, en E la date de vente, en S la durée de détention de
l'action. Mais tant que je n'ai pas vendu, donc E vide, S me donne (devrait)
le temps de détention entre B et maintenant().Mais en hh:mm Si moins d'un jour
complet et en chiffre sans virgule si 1 jour ou plus.
C'est le format mixte (ou double format) qui semble fonctionner.Mais pas toujours.
Il pourrait aussi être changé en format simple grâce à l'événementielle.
Toutes les cases entre E et S sont des formules et ça marche.

La formule en S260 donc temps de détention est:
=SI(ABS(E260-B260)<30000;ABS(E260-B260);ABS(MAINTENANT()-B260))
Le 30000 est une ruse car E contient à la création de ligne le %age de
perte que je m'autorise, puis que j'efface aussitôt.J'ai donc mis <30000 au
lieu de "n'est pas une date" car je pense que ça n'existe pas.Je n'ai ainsi
pas d'erreur dans la formule si E contient provisoirement 3% par exemple.

B et E sont sous la forme 21/01/2009 14:01:26 (dans la barre de formule) mais
sont formatées pour n'afficher que la date dans la cellule comme 21/01/09
Le format est donc par macro "m/d/yyyy" pour obtenir aujourd'hui le 21/01/09
dans la cellule.Si je mets "dd/mm/yyyy" dans la macro, ça ne fonctionne pas.
Le format de S devrait être "hh:mm" si moins de 1 jour et "0" si plusieurs jours
entre E et B
Cette macro m'entre automatiquement la valeur de"NOW()" en B à la création
de la ligne et E reste vide quand j'ai supprimé le %age provisoire autorisé.

Je voudrais qu'une autre macro fasse la même chose soit NOW() en E si je tape
un " x" dans cette case.C'est l'événementielle,au moment ou je vends l'action.
Cette manip sera toujours faite ligne par ligne.Pas de sélection multiple.
Pas de recopie verticale non plus.
Suis-je transparent maintenant ? Je vois des perles de sueur apparaître.
Cordialement.


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

Si tu permets une remarque ...

Situation A )
Que se passe-t-il si tu as une date émanant de ta macro
et que tu utilises la poignée de recopie dans le coins
inférieur droit de la cellule?

Situation B )
Que se passe-t-il si tu as une colonne avec des dates
émanant de cette procédure et que tu décides d'en effacer
4 ou 5 d'un seul coup ? Saisie par la suite une valeur
numérique dans ces cellules et observe le résultat !

'-----------------------------------
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
Ce ti truc inspiré de vos réponses semble fonctionner à merveille.
Merci de vos conseils.
Cordialement
JMM
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Row < 3 Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value = "x" Then
Target.Value = Now
If Target - Target.Offset(0, -3) > 1 Then
Target.Offset(0, 14).NumberFormat = "0"
Else
Target.Offset(0, 14).NumberFormat = "hh:mm"
End If
Else
Exit Sub
End If
End Sub


"milloche" a écrit dans le message de news:
u67d%
Garnote
Serais tu encore plus maniaque que moi ?
Là, tu prévois tout ou presque, sauf l'imprévisible.
Mais toi tu sais et moi pas beaucoup.
Comme je dis toujours, j'ai beaucoup d'idées mais rarement de solutions.
Je dois commencer à être repéré avec mes questions.
Mais à la lecture des réponses, je m'apercois que vous vous intéressez de plus en plus
rapidement à mon cas.
Bon signe.
Cordialement.

"milloche" a écrit dans le message de news:
%
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
garnote
Salut Denis,

Tes remarques sont toujours les bienvenues.

Situation B )
Que se passe-t-il si tu as une colonne avec des dates
émanant de cette procédure et que tu décides d'en effacer
4 ou 5 d'un seul coup ? Saisie par la suite une valeur
numérique dans ces cellules et observe le résultat !


Rien de spécial. La valeur saisie est en format Standard.

Situation A )
Que se passe-t-il si tu as une date émanant de ta macro
et que tu utilises la poignée de recopie dans le coins
inférieur droit de la cellule?


Là ça chie ;-)

Je reprends donc ta macro comme 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
If C = "" Then C.NumberFormat = "General"
End If
Next C
End Sub

Est-ce que ça suffit pour éviter toute catastrophe ? ;-)

Serge
Avatar
michdenis
C'est mieux ... ;-)

Mais ne pas inclure Intersect() signifie que la procédure s'exécutera
peu importe où l'action se déroule dans la feuille et habituellement
c'est habituellement requis pour une plage de cellules déterminées.
(laissons au demandeur d'évaluer son besoin)



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

Salut Denis,

Tes remarques sont toujours les bienvenues.

Situation B )
Que se passe-t-il si tu as une colonne avec des dates
émanant de cette procédure et que tu décides d'en effacer
4 ou 5 d'un seul coup ? Saisie par la suite une valeur
numérique dans ces cellules et observe le résultat !


Rien de spécial. La valeur saisie est en format Standard.

Situation A )
Que se passe-t-il si tu as une date émanant de ta macro
et que tu utilises la poignée de recopie dans le coins
inférieur droit de la cellule?


Là ça chie ;-)

Je reprends donc ta macro comme 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
If C = "" Then C.NumberFormat = "General"
End If
Next C
End Sub

Est-ce que ça suffit pour éviter toute catastrophe ? ;-)

Serge
1 2