Date de changement

Résolu
versionfire Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
versionfire Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
victor
 
 
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   Statut Membre Dernière intervention  
 
Merci infiniment. Mon problème est résolu.
0