XL 2016 Mise à jour d'une valeur date SI modification du contenu dans le tableau

lgo_excel

XLDnaute Nouveau
Bonjour communauté Excel,
J'ai à nouveau besoin de vos connaissances, de votre aide.
J'aimerais (dans l'idéal...) avoir la possibilité de trouver uns solution à ma problématique : Mise à jour de la date contenue dans une cellule SI une des valeurs à l'intérieur d'une plage de cellules est modifiée et à l'enregistrement et réouverture du fichier Excel, la date change !
* En cellule H5, serait intégrée la date du jour avec fonction =AUJOURDHUI().​
* Si je modifie quelconque valeur dans la plage de cellules (C5:F16), et que j'enregistre le document Excel, alors à l'ouverture de celui-ci la date change en la date du jour de la modification.​

...mais peut-être que je m'y prend mal ou qu'il y a une possibilité de "tacler" le problème par un autre angle.

Aussi, je ne suis pas contre une Macro, mais il faudrait absolument que celle-ci soit automatique ! Comme il s'agit d'un fichier partagé sur un réseau informatique, tous les utilisateurs ne sont pas particulièrement au fait de ce qu'est une macro. Le fichier s'enregistrer en xlsm et demande l'activation de la Macro ! Ce message peut être déroutant pour certains utilisateurs novices...
MERCI pour vos lumières.

Regarde la pièce jointe 1085277
 
Dernière édition:
Solution
E
Bonjour Igo-excel,

Effectivement à ma connaissance on ne peut faire ce que tu demandes qu'en vba.
On va surveiller la plage qui t'intéresse et modifier la date si une cellule est modifiée (même si on se contente de valider sans changement).
A contrario, la date ne change pas si on touche à une cellule hors de cette plage définie.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("C4:f16")) Is Nothing Then Exit Sub
    Range("H5") = Now()
    
End Sub
E

Exl-Noob

Guest
Bonjour Igo-excel,

Effectivement à ma connaissance on ne peut faire ce que tu demandes qu'en vba.
On va surveiller la plage qui t'intéresse et modifier la date si une cellule est modifiée (même si on se contente de valider sans changement).
A contrario, la date ne change pas si on touche à une cellule hors de cette plage définie.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("C4:f16")) Is Nothing Then Exit Sub
    Range("H5") = Now()
    
End Sub
 

Pièces jointes

  • Modif_Miseàjour.xlsm
    14.4 KB · Affichages: 41

lgo_excel

XLDnaute Nouveau
Merci Exl-Noob. C'est exactement ce que je pensais avec la ligne de commande VBA "
If Intersect(Target, Range("C4:f16")) Is Nothing Then Exit Sub Range("H5") = Now() " que j'avais glané lors de visite sur d'autres forum.
Ma lecture : Si qqchose se passe dans la plage de cellules C4:C16 alors la date contenue dans H5 change à aujourd'hui. Si rien ne change alors Exit.

Je me contenterai de cette solution, mais comme je l'ai dit, bcp de collaborateurs ne sauront pas qu'il faut (à l'ouverture du fichier) répondre à 2 messages d'activation de contenus et de macros !

Je laisse à d'autres de regarder s'ils ont une autre solution.
Merci de ta réactivité Exl-Noob.
 

Dju1

XLDnaute Occasionnel
Bonjour,
je me permets de relancer ce sujet, qui m'a bien aidé dans ma recherche.
Le code fonctionne très bien mais j'aimerai l'appliquer sur différentes plages de cellules pour qu'il modifie différentes cellules. Ci-dessous l'exemple

1679997878029.png


Merci d'avance
 

Discussions similaires

Réponses
46
Affichages
801

Statistiques des forums

Discussions
312 104
Messages
2 085 346
Membres
102 868
dernier inscrit
JJV