Mettre une date dans une cellule

Bonjour à Vous Tous
Mon problème
Point 1
Formule cellule B69 =MAX(K69:EH69)
Si B69 change mettre la date du jour en C69 et ceci à chaque fois que B69 change

Point 2
Possibilité de garder un historique des changements de dates de la cellule C69

Merci pour votre aide
Cordialement

Bonjour

Dommage que tu n’ais pas fourni de fichier avec tout le contexte souvent indispensable pour t’apporter la solution en rapport
Néanmoins ci-joint ma proposition en VBA à défaut de solution par formule qui me semble difficile à mettre en place au formuliste de ce prononcer sur le sujet
En B69 mets une valeur
A chaque fois que celle-ci change la date du jour apparait en cellule C69 et une archive de celle-ci s’effectue colonne D à partir de D69

Fais plusieurs changement en cellule B69 pour constater l’ensemble de ces mises en place
Il va de soit que plusieurs changements le même jour met en C69 la même date et les archive autant de fois

Fais des tests et dis moi

Fichier de type « .xlsm » à maintenir pour le fonctionnement VBA

Classeur1.xlsm (16,7 Ko)

Bonjour FFO
Grand merci pour ton aide
J’ai testé ta proposition, ça fonctionne pour la date, par contre l’archive date sur plusieurs lignes est impossible dans le tableau tel qu’il est conçu.
Pouvons-nous archiver les dates dans la cellule D69? si impossible, on garde la dernière valeur.

Reste un souci pour moi
Peux-tu me dire comment lier tes cellules C69 et D69 avec ma formule B69 = MAX(K69:EH69)
et comment insérer ta ligne 69 dans mon tableau. (Essai non concluant)
Explication je saisis une valeur chaque jour en ligne 69 d’où une nouvelle valeur et un nouveau maxi ou pas, entre K69 et EH69
Ce nouveau maxi apparaît en B69 et définit la date en C69 et archive en D69
J’espère avoir été clair dans mon explication
Je suis à ton écoute
Avec tous mes remerciements
P Bauvois

Merci pour ce retour
Ci-joint une nouvelle version qui archive toutes les dates en cellule D69 sous cette forme :

DD/MM/AAAA-D1D1/MM/AAAA-D2D2/MM/AAAA

Pour l’insertion dans ton fichier il faut ramener la procédure VBA dans la feuille utilisée

Elle fonctionnera avec ta formule en B69

Soit tu me transmets ton fichier soit tu recopies le code dans le VBA de ta feuille ainsi :

Clique droit sur le nom de l’onglet de mon fichier puis choisir « Visualiser le code »

image

Sélectionnes toutes les lignes dans l’éditeur partie droite :

Ctrl+C

A l’identique Aller dans l’éditeur de la feuille que tu utilises puis Ctrl+V

Ton fichier doit impérativement être enregistré en type « .xlsm » nécessaire pour le fonctionnement VBA

Essaies et dis moi

Mon fichier avec l’évolution de l’archive des dates en D69

Classeur1.xlsm (17,3 Ko)

Bonsoir FFO
Grand merci pour ta réponse
Je teste demain et te t’informe
Ton explication et tutoriel sont clairs
Bonne soirée
Bon week-end
Très cordialement
P Bauvois

Merci et à bientôt pour le résultat de tes essais

Bonjour FFO
J’ai un souci

Ton fichier doit impérativement être enregistré en type « .xlsm » nécessaire pour le fonctionnement VBA Fait en amont de la procédure de modification

Ensuite exécution de la procédure
Ctrl+C Résultat Ok

A l’identique Aller dans l’éditeur de la feuille que tu utilises puis Ctrl+V
Résultat OK même texte dans l’éditeur mon problème comment je valide cette modif dans le fichier de destination
J’ai cherché mais …
Désolé pour l’ennui causé
Cordialement
PB

Bonjour

« Résultat OK même texte dans l’éditeur mon problème comment je valide cette modif dans le fichier de destination »

Déjà dés que l’éditeur de ton onglet possède toutes les lignes de code le traitement est opérationnel
Tu retournes dans cet onglet tu dois avoir la date en C69 et l’archive en D69 dés que B69 change de valeur

Puis il suffit avant la fermeture de ton fichier d’enregistrer celui-ci pour maintenir cette mise en place

Testes et dis moi

Je viens de me rendre compte que mon traitement fonctionne que si le changement est effectué directement dans la cellule B69 et non via une formule
Je l’ai donc modifié mais je suis obligé d’utiliser une autre cellule pour rapporter la dernière valeur de la cellule B69 afin de vérifier si celle-ci a changée
Pour ce besoin j’ai utilisé la cellule B70
J’ai mis une formule en cellule B69 pour ne pas faire évoluer sa valeur directement sur elle mais sur la cellule A69 que sa formule récupère donc d’être dans ta même configuration c’est à dire B69 alimentée via une formule

à chaque modification d’une cellule de la feuille le traitement va comparer la valeur de la cellule B70 avec celle de la cellule B69 et si celle-ci est différente réactualise la cellule B70 de la nouvelle et alimente la cellule C69 de la date du jour et D69 pour les archives

Désolé de ce contretemps
Récupères les lignes de codes de la feuille « Feuil1 » de ce nouveau fichier pour l’inclure dans la tienne (même procédure à utiliser exprimée dans ma précédente réponse)
Enregistres et réalises des testes
Fais moi un retour

Classeur2.xlsm (17,7 Ko)

Bonsoir FFO
Merci pour l’assistance à distance (super même le dimanche) quand on aime …
Les modifications fonctionnent (la totalité) sur un nouveau fichier par contre partiellement dans mon fichier
Je cherche pourquoi
Merci pour tout
Je te tiens au courant
Trés cordialement
Remerciements d’un Pépy de 72 ans …
PB

Merci pour ta réponse
L idéal serait de me transmettre ton fichier sans donnée confidentielle
Et ainsi que je puisse l étudier avec ma procédure
À toi de voir ce que tu peux faire dans ce sens
Tiens moi informé

Bonjour FFO
J’espère que tu vas bien
Mon fichier fonctionne avec ta solution classeur 2 (problème de ma part dans le transfert dans le fichier de destination)
Je dois reproduire ta solution donc l’ensemble des cellules associées plusieurs fois (souci B70 ne suit pas)
Quel type de collage pour une reproduction à l’identique de l’ensemble initial
Encore merci pour ton assistance
Bonne semaine
Très cordialement
PB

Bonjour
Ravi que tu es eu satisfaction

« Je dois reproduire ta solution donc l’ensemble des cellules associées plusieurs fois (souci B70 ne suit pas) »

Peux tu préciser l’objet de cette reproduction ?

Tout est paramétré dans les lignes de code que tu as recopié rien dans les cellules

If Range(« B69 »).Value <> Range(« B70 »).Value Then
Range(« B70 »).Value = Range(« B69 »).Value
If Range(« D69 ») = «  » Then
Range(« D69 ») = Range(« C69 »)
Else
Range(« D69 ») = Range(« D69 ») & « - » & Range(« C69 »)
End If
Range(« C69 ») = Date
End If

Si tu veux reproduire sur d’autres cellules il faut les dupliquer à la suite avant cette ligne de code :

End Sub

ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
If Range(« B69 »).Value <> Range(« B70 »).Value Then
Range(« B70 »).Value = Range(« B69 »).Value
If Range(« D69 ») = «  » Then
Range(« D69 ») = Range(« C69 »)
Else
Range(« D69 ») = Range(« D69 ») & « - » & Range(« C69 »)
End If
Range(« C69 ») = Date
End If
If Range(« B69 »).Value <> Range(« B70 »).Value Then
Range(« B70 »).Value = Range(« B69 »).Value
If Range(« D69 ») = «  » Then
Range(« D69 ») = Range(« C69 »)
Else
Range(« D69 ») = Range(« D69 ») & « - » & Range(« C69 »)
End If
Range(« C69 ») = Date
End If
End Sub

Puis sur la partie dupliquée adapter les cellules en fonction des nouvelles

Pour changer B70 en B71 par exemple tous les B70 de ces lignes doivent être changer en B71 :

If Range(« B69 »).Value <> Range(« B70 »).Value Then
devient
If Range(« B69 »).Value <> Range(« B71 »).Value Then

Range(« B70 »).Value = Range(« B69 »).Value
devient
Range(« B71 »).Value = Range(« B69 »).Value

Idem pour toutes les autres cellules

Donnes moi une deuxième série de cellules à impacter je t’envoie un exemple incluant les 2 séries

Tu te calqueras dessus pour des séries supplémentaires

Rebonjour FFO
Merci, merci …

« Je dois reproduire ta solution donc l’ensemble des cellules associées plusieurs fois (souci B70 ne suit pas) »

Peux tu préciser l’objet de cette reproduction ? Suivi de valeurs

Je dois reproduire en lignes:
60 Essai de collage en A60 de ta modif cellules impactées A60 B60 B61 C60 D60
B61 et D60 ne répondent pas
69 traitée et fonctionnelle avec ta solution classeur 2
78 Essai de collage en A60 même résultat qu’en ligne 60
87
96
105
114
123
132
141
150
159
168
177
187
197
206
215
224
233

Si tu peux me préciser le scenario sur 3 séries intégrant la ligne 69 je pense m’en sortir.
Classeur 2 modifié nécessaire ??

Je voudrais intégrer une colonne en amont de la colonne A, impossible ça ne fonctionne plus

Encore merci
Je suis à ton écoute (si texte non clair)

Cordialement
PB

Rebonjour FFO

Petite précision

Ligne 69 traitée et fonctionnelle avec ta solution classeur 2
Apres collage
En cellule A69 j’intègre =Max (J69:EG69)
Prise en compte de la saisie journalière du cours qui fait bouger ou pas A69 et les autre cellules
Bon appétit
Après midi RDV rhumatologue Grrrr …
A bientôt
Cordialement
PB

Ci-joint une nouvelle version dont le code va te simplifier la tâche
Récupères le dans la feuille de ton fichier

J’ai mis 3 blocs pour 3 lignes : 60/69/78

Chaque bloc débute par une ligne commentaire dans laquelle figure la ligne concernée exemple pour la ligne 60 (2° bloc) :

'ligne 60

Juste après une variable à actualiser de la ligne qui doit être traitée :

ligne = 60

Il te suffit donc de recopier un bloc et d’actualiser ces 2 lignes de la ligne concernée par exemple pour la ligne 78 :

'ligne 78
ligne = 78

ce qui donne ce bloc :

'ligne 78
ligne = 78
If Range(« B » & ligne).Value <> Range(« B » & ligne + 1).Value Then
Range(« B » & ligne + 1).Value = Range(« B » & ligne).Value
If Range(« D » & ligne) = «  » Then
Range(« D » & ligne) = Format(Range(« C » & ligne), « MM/DD/YYYY »)
Else
Range(« D » & ligne) = Range(« D » & ligne) & « - » & Range(« C » & ligne)
End If
Range(« C » & ligne) = Date
End If

Tu n’as que ces 2 lignes en début de bloque à mettre à jour du numéro de ligne en rapport

Cela devrait être très simple à mettre en place pour toute ta liste

Pour la dernière : 233

Cela donnera ce bloc :

'ligne 233
ligne = 233
If Range(« B » & ligne).Value <> Range(« B » & ligne + 1).Value Then
Range(« B » & ligne + 1).Value = Range(« B » & ligne).Value
If Range(« D » & ligne) = «  » Then
Range(« D » & ligne) = Format(Range(« C » & ligne), « MM/DD/YYYY »)
Else
Range(« D » & ligne) = Range(« D » & ligne) & « - » & Range(« C » & ligne)
End If
Range(« C » & ligne) = Date
End If

Et cela roulera sans rien de plus à réaliser pour la ligne 233

Essaies et dis moi

La nouvelle version adaptée ainsi

Classeur3.xlsm (18,9 Ko)

Bonjour FFO
Grand merci à toi pour l’aide à la résolution de mon problème de suivi en auto, tel qu’envisagé.
La phase 1 est terminée.
Je réfléchis à une phase 2 (intégration de valeurs en mode automatique à partir d’un fichier extérieur)
Je te ferai parvenir un fichier épuré avec tes modifs
Je suis à ton écoute
Très cordialement
PB

Bonjour
Ravi que tu es eu satisfaction
Je te propose une variante ci-jointe plus simple à utiliser au gré des lignes supplémentaires à intégrer
Plus besoin de recopier des lignes de codes juste une variable en début à faire vivre des numéros de lignes :

listeligne = « 60/69/78 »

ici les lignes 60 69 78 sont intégrées

si je veut ajouter la ligne 233 il suffit de la rajouter comme ceci :

listeligne = « 60/69/78/233 »

Pas plus compliqué

Je pense que tu devrais y trouver un sérieux avantage

Testes et dis moi

Classeur4.xlsm (18,9 Ko)

Bonjour FFO
J’espère que tu vas bien
Tests réalisés avec classeur 4 OK
Super
Je continuerai à tenter de faire évoluer mon fichier avec mon savoir limité sur excel …
Beaucoup d’idées mais … la concrétisation me pose des problèmes …
J’aurai certainement besoin de solutions sur d’autres soucis
Es-tu joignable et comment te contacter avec ton accord bien sûr (mail ou tel ou autre)
Aucun souci en cas de désaccord
Encore merci pour ton aide
Au plaisir de te lire
Très cordialement
PB

Bonjour

Merci pour cette réponse

Ravi que ce dernier classeur te convienne
Pour me contacter pour des besoins Excel il faut passer par ce forum
L’avantage est d’avoir en plus de ma contribution celle des autres contributeurs qui peuvent apporter leur compétence bien utile car les miennes mêmes d’un certain niveau ont leur limite et peuvent aussi défaillir notamment dans le secteur des formules
Donc des yeux avisés en toile de fond peuvent être salvateur
De plus en mon absence une autre main secourable est toujours utile
Enfin nos échanges au delà des bénéfices qu’ils nous apportent sont aussi nourricier pour bon nombre de lecteur et c’est à ne pas négliger

Pour toutes ces raisons nous devons continuer à nous parler par ce biais et je ne manquerai pas de te tendre la main

Au plaisir de le faire dans un proche avenir