Modification auto de formule

J'ai un tableau avec une colonne qui me renvoie AUJOURNHUI. Je voudrais que la cellule devienne une valeur nette lorsque j'ouvre le fichier pour garder la date, Est-ce possible avec une macro ou existe-t'il un différent moyen.

J'ai inclus une feuille pour expliquer.

=SI(CELLULE("type"; $C12) = "v";AUJOURDHUI(); "")

Je voudrais qu'en B12 la formule change automatiquement et que le résultat soit une date pure

Merci

Bonjour NormL,

je te retourne ton fichier modifié :

2classeur1.xlsm (15.25 Ko)

à l'ouverture du classeur, la macro a déjà été exécutée ; quand j'ai enregistré le classeur, B11 et A11 étaient vides, et c'est la macro qui a écrit le contenu actuel de B11 et A11 ; ces 2 données sont « en dur », sans aucune formule ; si aujourd'hui tu fermes ce classeur puis tu l'ouvres à nouveau : aucun changement, car ça n'écrit rien si la dernière date de la colonne B est déjà celle du jour ; donc : soit tu attends demain pour voir le prochain changement, soit tu supprimes B11 et tu fermes / ouvres le classeur ; falcutatif : tu peux aussi supprimer A11 pour vérifier que ça l'écrit bien à nouveau.

au tout début, quand les 2 colonnes A et B sont entièrement vides, ça écrit seulement B2 ; rien en A2 (normal, n'est-ce pas ? )


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour

voici un exemple où la date se mettra en dur lors de l'ouverture

Private Sub Workbook_Open()
Sheets(1).Range("B1") = Now
End Sub
4date-auto.xlsm (12.59 Ko)

Merci dhany

Çà semble super, elle fonctionne très bien. Je n'ai maintenant qu'à introduire ta macro dans mon propre fichier qui est plus complexe que celui envoyé avec ma demande. J'espère être capable tout seul de faire l'opération.

Merci encore

Normand

merci pour ton retour ! bonne chance pour l'adaptation à ton vrai fichier !

dhany

Bonjour

Msg pour dhany

J'ai essayé la macro mais ce n'est pas exactement ce que je voulais. je voudrais que la date s'affiche seulement si dans la cellule C12 il y ait une valeur sinon rien. Si j'ouvre le fichier il ne faut pas avoir de date immédiatement, c'est seulement lorsque la cellule C12 aura obtenu sa valeur que la macro s'exécute.

Ex dans b12 =SI(CELLULE("type"; $c12) = "v"; MACRO; "" La fameuse macro me renvoyant la date.

Au plaisir et merci encore

Quel est ton retour sur ma proposition ?

Merci Steelson

Je vais essayer d'intégrer ta macro mais il semble que celle de dhany, même si elle n'est pas parfaite rempli mieux mon besoin. Encore une fois je veux avoir dans B12 une formule conditionnelle avec la macro qui me donnera la date

(NOW) si seulement C12 obtienne sa valeur.

Merci encore

Bonjour NormL,

autre version :

3classeur1-v2.xlsm (16.41 Ko)

* cette fois, rien n'a été fait à l'ouverture du classeur ; la cellule active est C12

* saisis par exemple "a" ➯ en B12 : 14/10/2018 ; en A12 : 1

* supprime le "a" de C12 ➯ ça efface A12 et B12

ça marche pareil pour les autres lignes, mais attention : ce système est valable pour la saisie d'une valeur en colonne C (comme tu viens de le faire), pas pour les formules que tu as déjà mises au-dessus de C12.

dhany

Bonjour

Merci Dhany pour ton support. J'aimerais vraiment savoir pourquoi je ne peux laisser la formule dans B12 comme tel et au lieu de mettre aujourdhui de le remplacer par une autre façon de me renvoyer ce que je désire, c'est-à-dire la date d'aujourdhui mais en valeur pure.

Ex: dans B12 =SI(CELLULE("type"; $C12) = "v";AUJOURDHUI(); "")

Je veux que les colonnes A et B conservent toujours leurs formules comme ci-dessus et qu'elles s'activent seulement quand la cellule C12 obtienne sa valeur. Est-ce possible de remplacer aujourdhui() par ta macro adaptée ou par une autre façon?

Je t'en remerci d'avance

Bonjour NormL,

tu a écrit :

la date d'aujourdhui mais en valeur pure.

ma macro écrit bien la date « en dur » puisque c'est pas une formule ; ainsi, ce sera la même date demain ou plus tard.


tu a écrit :

... et qu'elles s'activent seulement quand la cellule C12 obtient sa valeur.

c'est bien pour ça que j'ai utilisé une procédure événementielle : la sub Worksheet_Change()


cette macro est appelée uniquement lorsqu'il y a détection d'un changement de valeur de cellule ; ça ne peut pas marcher pour une formule ; comme j'ai pas d'autre solution à proposer, je laisse la suite à un autre intervenant ; bonne chance !

dhany

Rechercher des sujets similaires à "modification auto formule"