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.

2 réponses

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