Date de changement

Résolu/Fermé
versionfire Messages postés 25 Date d'inscription mercredi 28 juin 2017 Statut Membre Dernière intervention 2 novembre 2017 - Modifié le 28 juin 2017 à 23:42
versionfire Messages postés 25 Date d'inscription mercredi 28 juin 2017 Statut Membre Dernière intervention 2 novembre 2017 - 29 juin 2017 à 14:55
Bonjour,
Pour une tâche spécifique, j'ai voulu composer un code VBA dans une feuille excel. Le principe de ce code est le suivant:
- Dans ladite feuille, si jamais il y a modification d'une cellule appartenant à une plage que j'ai déterminée; je veux que la date de cette modification s'affiche dans une autre cellule spécifique.
Par exemple, pour une plage A5:D20; je voudrais que si je modifie C10, que la date d'aujourd'hui 2017-06-26 s'affiche dans la cellule D3.

En faisant des recherches sur internet j'ai trouvé un code que j'ai réussi à adapter à mon cas:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligvid As Long
If Intersect(Target, Range("A5:D20")) Is Nothing Or Target.Count > 1 Then: Exit Sub
ligvid = Range("L65536").End(xlUp).Row - 48
Range("D" & ligvid) = Format(Date, "dd/mm/yyyy")
End Sub




EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.




L'instabilité de ce code est au niveau de Row-48. Je suis obligé de jouer avec ce chiffre qui peut aller de +20 à -140 afin de trouver la bonne cellule qu'il me faut. Alors que ROW + 4 devrait marcher dans mon cas.
Je précise aussi que ROW + xxx différe selon les feuilles alors que ces dernières ont les mêmes tableaux situés aux mêmes endroits
Est ce que y a des parties du code à améliorer ?
Merci.




A voir également:

2 réponses

jordane45 Messages postés 38427 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 février 2025 4 734
28 juin 2017 à 23:45
Bonjour,


Par exemple, pour une plage A5:D20; je voudrais que si je modifie C10, que la date d'aujourd'hui 2017-06-26 s'affiche dans la cellule D3.

- Comment détermines tu que ça sera la cellule D3 ?
- Si je change la celle D19 .. dans quelle cellule doit on écrire la date D3 également ou une autre ? Comment le sait-on ??




0
versionfire Messages postés 25 Date d'inscription mercredi 28 juin 2017 Statut Membre Dernière intervention 2 novembre 2017
29 juin 2017 à 04:24
Merci pour ta réponse.
Je veux que pour n'importe quelle cellule qui a subi un changement, que la date du changement apparaisse dans D3 et uniquement D3.
0
victor > versionfire Messages postés 25 Date d'inscription mercredi 28 juin 2017 Statut Membre Dernière intervention 2 novembre 2017
29 juin 2017 à 10:22
 
Bonjour,

Si tu veux que ta date soit toujours en D3 :


Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("A5:D20")) Is Nothing Or Target.Count > 1 Then: Exit Sub
  [D3] = Format(Date, "dd/mm/yyyy")
End Sub


Qu'en dis-tu ?  ;)
 
0
jordane45 Messages postés 38427 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 février 2025 4 734
29 juin 2017 à 10:22
Donc
ligvid = Range("L65536").End(xlUp).Row - 48
Range("D" & ligvid) = Format(Date, "dd/mm/yyyy")

est à modifier par:
Range("D3") = Format(Date, "dd/mm/yyyy")

0
 
Bonjour,

Exact, Jordane, mais tu as oublié de dire à versionfire qu'il peut aussi
enlever sa déclaration de ligvid (devenue inutile) : Dim ligvid As Long

Et comme le code VBA est très court, je l'ai mis en entier
dans mon message de 10:22.

Cordialement
 
0
versionfire Messages postés 25 Date d'inscription mercredi 28 juin 2017 Statut Membre Dernière intervention 2 novembre 2017
29 juin 2017 à 14:55
Merci infiniment. Mon problème est résolu.
0