[Excel] date automatique sans mise à jour [Fermé]

Signaler
-
 tito -
Bonjour,

Je cherche à marquer la date du jour dans B1 dès que A1 est remplie. La formule =si(A1=""; ""; AUJOURDHUI() ) dans B1 fonctionne très bien, mais quand je réouvre le fichier le lendemain, la date se met à jour, et ce n'est pas ce que je souhaite.
Comment faire pour que cette info soit figée d'un jour sur l'autre.
Quand j'utilise Ctrl ; à la place de la formule, ça marche très bien et ça reste figé dans le temps, mais j'aimerais une solution plus "automatique" que Ctrl ; .

Merci
Cordialement
Bob
A voir également:

6 réponses

Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
842
Bonjour,

une macro évènementielle te conviendrait-elle?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then If Not (IsEmpty(Target.Value)) Then Range("B1").Value = Now Else Range("B1").ClearContents
End Sub
à mettre derrière ta feuille de calcul

cordialement
11
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Merci,

ça répond à la moitié de ma question. :-D
En fait, je voudrais propager cette règle sur les colonnes A et B.
Je m'explique :
Si je saisie une valeur dans A1, alors B1 prend la date du jour.
Si je saisie une valeur dans A2, alors B2 prend la date du jour.
...
Si je saisie une valeur dans An, alors Bn prend la date du jour.

Comment modifier ta macro évenementielle en ce sens?

Cordialement
Bob
je souhaite mettre juste l'année toute seule sans jour mois
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
842
bonjour,

comme ça :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then If Not (IsEmpty(Target.Value)) Then Range("B" & Target.Row).Value = Now Else Range("B" & Target.Row).ClearContents
End Sub


A+
Bonjour,

Il est très bien ce script, mais je l’ai testé et il ne fonctionne toujours pas très bien parce qu’à chaque fois que je reviens sur la cellule, et bien elle se met à jour.

Je suis en train de réaliser un document de fiche d’incident.
Dans une première partie j’utilise la date pour générer un numéro, c’est-à-dire :
Ex : 14/02/2007 15 :00
Dans ma cellule je voudrais avoir ceci 20070214-1500.
Pour cela j’ai utilisé la formule classique sous Excel : =MAINTENANT()

Ce que je cherche à faire avec cette cellule et de créer un numéro unique lors de la première ouverture du fichier et qu’elle ne se mette plus a jour, quel soit statique. Surtout impossible de changer le numéro.

Dans la deuxième partie, j’ai ceci :
......| A | B | C | D
13 | N° | Date | Heure | Intervenant
14 | 1 | 14/02/2007 | 14H26 | Toto
15 | 2 | 14/02/2007 | 14H26 | Titi
16 | 3 | 14/02/2007 | 14H26 | Tutu

Ce que je voudrais faire est :
- Dès qu’un non est entré dans la colonne E (Intervenant)
- La date et l’heure se met à jour automatiquement mais une seul fois, sans possibilité de changer, sauf si le nom est supprimer.

Ce que j’ai fait : dans la colonne Date j’ai mis cette formule : =SI(ESTVIDE(D14);"";AUJOURDHUI())
dans la colonne Heure j’ai mis cette formule : =SI(ESTVIDE(D14);"";MAINTENANT())

Il faut savoir que ces deux formules ne sont pas du tout fonctionnelles. Les cellules se mettent à jour systématiquement dès que je rentre un nouvel utilisateur et en plus met à jours celles des autres utilisateurs. Et aussi par la même occasion le numéro d’incident qui est basé sur la date.

Je ne suis pas du tout une personne qui maitrise cet outil, mais j’essai de le faire pour simplifier mon quotidien.

Merci pour la personne qui pourra m’aider a trouvé une solution à mon problème.
> TotoL
YES, je suis assez content de moi, depuis le temps que je cherchais à insérer une date sans qu'elle soit mise à jour.

C'est même d'une facilité déconcertante, mais comme souvent, il fallait y penser.

La Solution:

Vous enregistrez une macro qui insert l'heure ou la date du jour, "maintenant()" par exemple.

Puis vous copier la cellule (plus facile à faire en macro relative) et vous faite "collage spécial" coller la valeur.

C'est tout simple non????

James

Ps: faire coller les valeurs à Excel peut être utile dans de nombreux cas, par exemple lorsqu'on veut récupérer le résultat d'un calcule dans un programme externe.
Messages postés
34
Date d'inscription
mardi 23 février 2010
Statut
Membre
Dernière intervention
24 juillet 2011
1
Bonjour JvDo,

j'ai testé ton programme VBA sur une feuille vierge et elle fonctionne très bien pour l'application que je souhaite mettre en place.
Cependant pour moi les cellules concernées ne sont pas dans les colonnes A et B.
Pour moi la colonne A est en B et la colonne B est en F !!!
Quelles termes je dois changer dans la programmation VBA pour que cela fonctionne ?
Cordialement
Messages postés
1
Date d'inscription
mercredi 6 juin 2012
Statut
Membre
Dernière intervention
6 juin 2012

Je vais creer un programme de controle de dates d'esprirations de Produits a ma disposition.
Par exemple, j'ai le produit A que j'ai recu a trois reprises par des fournisseurs differents qui evidement aient differentes dates de Production et d'expirations. Je vais une aide pour creer un fichier de la moyenne de detection de la date d'expiration.
Merci pour ton aide JvDo.

Cordialement.
merci ca ma beaucoup aider !!!!!!!!!!! :)
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
842
Bonsoir,
tu remplaces le 1 par 2 et le "B" par "F"
cordialement
Messages postés
26064
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
4 juin 2021
5 954
bonjour
juste mettre le N° de colonne (N) voulu à la place (2)
dans la ligne:
Set vtarget = Intersect(Target, Columns(2))
et bien sur remplacer ("F") par le nom de la colonne où vous voulez afficher le résultat;
crdlmnt
Merci,
Mais ce n'est pas là le problème, ca ca marche c'est juste que je voudrais que cette mise en forme ne s'applique que a partir de la ligne N (16 en l'occurrence).
Sinon quand je modifie mon entête j'ai des dates qui arrivent de partout :-/

Je pense bien ajouter un If pour écrire si la ligne est supérieur a 16 alors, et la le reste de la macro.

Mais il me manque la syntaxe ...
Ok j'ai finis par trouver,
Voici le code pour ceux que ca intéresse :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Set vtarget = Intersect(Target, Columns(2))
If Not (vtarget Is Nothing) Then
For Each varea In vtarget
For Each vcell In varea
If Not (IsEmpty(vcell.Value)) Then
If vcell.Row > 16 Then
Range("A" & vcell.Row).Value = Now
End If
Else
Range("A" & vcell.Row).ClearContents
End If
Next
Next
End If
Application.EnableEvents = True
End Sub

Ca renvois la date dans la colonne 1 si on écris dans la colonne 2 et ceux seulement a partir de la ligne 17.
Bonsoir,

cette macro m'intéresse, mais étant novice, je n'arrive pas à l'installer correctement sur mon classeur excel et je ne la retrouve pas.

Je m'explique, j'ai relifté notre planning horaire hebdomadaire en créant un classeur mensuel avec un onglet par semaine (soit 4 ou 5 onglets par mois).
Afin de comptabiliser le nombre hebdomadaire d'heures par poste de travail, j'ai déjà inséré une autre macro qui s'appelle SumByColor.
et votre macro me permettrait de dater automatiquement la validation des différents médecins.
Pourriez-vous m'aider?
j'avais déjà trouver la même solution que Bob, mais je souhaite également que la date ne se mette pas à jour automatique à chaque ouverture du classeur.
Question n°1: est-ce que je ne trouve pas votre macro car j'en ai déjà une autre?
sinon que faire?

Merci d'avance

Cachaflo
Bonjour Elea,

je viens un peu tard sur le formu mais j'ai un petit soucis.
Voilà ta dernière macro est exactement celle qui me faut cependant je n'arrive pas à l'exécuter, oui je ne suis qu'un novice :)
Faut-il faire un simple copier coller dans VBA ?

Kévin
Messages postés
54040
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
16 050
Je ne vois qu'une solution : utiliser la fonction MAINTENANT() pour définir la date et l'heure, faire Copier puis Collage spécial Valeur, le tout sans changer de cellule.
avec un macro excel !
Bonjour,

Je suis en train de réaliser une application sur excel pour un agriculteur qui gère des silos de stockage
Lors de l'élaboration du contrat, je souhaiterai que la date et l'heure se mettent automatiquement sans ajouter crtl + ":" ou crtl + "; pour faciliter l'utilisation de ce programme par l'agriculteur De plus, il faudrait qu'il n'y ait pas de mises à jour sur ces données. Pouvez vous m'aider?