Code VBA pour insertion de date

Bonjour à tous,

Je travaille actuellement sur un tableau qui me donne un peu de fil à retordre mais je ne compte pas me laisser faire.

Je souhaiterai que sur chaque feuille apparaisse la date lorsque la feuille en question à été modifiée (ou mise à jour). Ainsi si la feuille 1 a été modifiée, sa date sera modifiée mais celle de la feuille 2 restera celle qui est déjà marquée. J'espère être assez clair.

J'ai écumé bon nombre de forums et malheureusement à chaque fois ça ne fonctionnait pas. Enfin si, ça fonctionnait mais disons qu'excel plantait ou indiquait que "la pile était épuisé" (quelque chose de ce genre).

Voici les quelques codes que j'ai pu trouver :

Private Sub Worksheet_Change(ByVal Target As Range)

Range("F1").Value = "Dernière sauvergarde le " & Format(Now, "DD/MM/YY HH:MM")

End Sub

Private Sub Workbook_SheetChange (ByVal Sh As Object ByVal Target As Range)

Sh.Range("F1").Value=Now

End Sub

Private Sub Worksheet_SelectionChange (ByVal Target As Excel Range)

[f1].Value="dernière mise à jour le" & Format (Date, "dd/mm/yyyy")

End Sub

Private Sub Worksheet_SelectionChange (ByVal Target As Excel Range)

Range("F1")=Now()

Je vous remercie d'avance pour vos réponses.

Bonjour

Avec juste cette macro dans le module ThisWorkbook

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Application.EnableEvents = False
  Sh.Range("F1").Value = Now
  Application.EnableEvents = True
End Sub

Bonjour lechercheur76,

Voici une pièce jointe en exemple.

La macro se trouve dans le module ThisWorkbook : à chaque modif sur une feuille quelconque, la cellule A1 de cette feuille récupère l'heure et la date. Si tu ajoutes ou supprimes des feuilles, tu n'as aucune modification de code à faire.

Cordialement.

Edit : oups, salut Banzai, tu es encore le pus rapide !

Salut,

[EDIT]

trop tard !

essaye ça dans ThisWorkbook:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Range("F1") = "Derniere sauvegarde le : " & Now
End Sub

Merci pour ces réponses si rapides

Je viens de tester et ça fonctionne mais....voilà le problème c'est que si je quitte excel et que je rouvre mon fichier, le logiciel va "lire" l'intégralité des feuilles du classeur excel et va donc changer l'ensemble des dates présentes. Comme si j'avais fait des modifications sur toutes les feuilles alors que je viens seulement de l'ouvrir.

J'ai pourtant utilisé les deux codes que l'on m'a communiqué. Y aurait-il un problème quelque part?

RE :

N'aurais-tu pas, par hasard, une macro qui s'exécute à l'ouverture du fichier ?

Chez moi, ça ne se produit pas.

Cordialement.

Papou-net a écrit :

Chez moi, ça ne se produit pas.

Chez moi non plus; si tu pouvais poster ton classeur, ça serait utile.

Bonjour

Ahhhhhh je traine

Tu peux fournir une copie de ton fichier

C'est bizarre qu'il exécute cette macro à l'ouverture du fichier

Exact...

Alors oui j'ai une macro (que j'avais totalement oublié d'ailleurs) qui fait que dans une colonne donnée, les cases vides sont remplacées par "non-évalué". Le problème c'est que cela déborde du tableau. En gros au lieu de s'arrêter à la F119 (par exemple), il y a des "non-évalué" jusqu'à la ligne 140, sur une feuille ça s'arrêtera à 120 (mais toujours en dehors du tableau). C'est très embêtant...y a-t-il un moyen pour que le nombre de "non-évalué" n'aille pas au-delà du tableau?

Je m'excuse ça sort du sujet original mais c'est un peu lié à mon problème.

Voilà le code que j'avais tapé :

Private Sub Workbook_Open()

Dim Nblignes, Compteur, i As Integer

For i = 2 To ThisWorkbook.Sheets.Count

Nblignes = Range("F" & Rows.Count).End(xlUp).Row

Sheets(i).Select

Compteur = 1

While Compteur < Nblignes

If Cells(Compteur, 6).Value = "" Then

Cells(Compteur, 6).Value = "Non-évalué"

End If

Compteur = Compteur + 1

Wend

Next i

End Sub

Merci en tout cas pour vos réponses.

Mais, si je ne me trompe pas, cette macro n'affecte que les cellules vides, or la cellule qui enregistre la sauvegarde n'est plus une cellule vide donc elle n'est pas affectée par cette macro...

Je vais essayer de mieux m'expliquer.

Je ne peux pas donner mon fichier de travail car je suis actuellement en stage en entreprise et il s'agit du fichier de veille réglementaire que je suis en train de mettre en place.

Sur ma 1ère feuille, mon tableau va jusqu'à la ligne 135. Il y a donc des cases vides jusqu'à la ligne 127. Or, aux lignes 136 à 142, des "non-évalué" apparaissent là où il y a des cases vides. Je ne comprend pas pourquoi sachant que cela ne fait pas parti du tableau et surtout je ne comprend pas pourquoi ça ne va pas au-delà de la ligne 142.

Sur une autre feuille, le tableau se termine à la ligne 78. Or des "non-évalué" apparaissent jusqu'à la ligne 141.

Pour une 3ème feuilles, il y a des "non-évalué" des lignes 130 à 140 (le tableau se termine à la ligne 129).

Y a-t-il une quelconque logique là-dedans? y-a-t-il un moyen de résoudre ce problème?

Bonjour

OK la cellule n'est pas affectée... directement, mais le fait d'écrire dans la page provoque l'événement Workbook_SheetChange qui change la date

Pour éviter cela une solution

Modifies ta macro Workbook_Open

Private Sub Workbook_Open()
Dim Nblignes, Compteur, i As Integer
  Application.EnableEvents = False
  For i = 2 To ThisWorkbook.Sheets.Count
    Nblignes = Range("F" & Rows.Count).End(xlUp).Row
    Sheets(i).Select
    Compteur = 1
    While Compteur < Nblignes
      If Cells(Compteur, 6).Value = "" Then
        Cells(Compteur, 6).Value = "Non-évalué"
      End If
      Compteur = Compteur + 1
    Wend
  Next i
  Application.EnableEvents = True
End Sub
Banzai64 a écrit :

OK la cellule n'est pas affectée... directement, mais le fait d'écrire dans la page provoque l'événement Workbook_SheetChange qui change la date

ok, compris... merci

Mille fois merci

Maintenant ça fonctionne.

Bon par contre il y a toujours ce gros surplus de "non-évalué" et je ne sais pas du tout d'où ça pourrait provenir

Vu que j'ai mis une liste déroulante dans la colonne où apparaissent les "non-évalué", y aurait-il un lien?

Bonjour

lechercheur76 a écrit :

on par contre il y a toujours ce gros surplus de "non-évalué" et je ne sais pas du tout d'où ça pourrait provenir

Sans ton fichier (une copie anonymisée bien sur) pas sur de pouvoir t'aider

D'autres le peuvent peut-être mais pas moi

Voilà le petit fichier que j'ai anonymisé

Bonjour

Changes ta macro

Private Sub Workbook_Open()
Dim Compteur As Long, i As Integer
  Application.EnableEvents = False
  For i = 2 To ThisWorkbook.Sheets.Count
    With Sheets(i)
      For Compteur = 1 To .Range("F" & Rows.Count).End(xlUp).Row
        If .Cells(Compteur, 6).Value = "" Then
          .Cells(Compteur, 6).Value = "Non-évalué"
        End If
      Next Compteur
    End With
  Next i
  Application.EnableEvents = True
End Sub

Merci merci

Maintenant mon tableau est beaucoup mieux même si je pense qu'il y a encore des choses à améliorer ou à ajouter

Rechercher des sujets similaires à "code vba insertion date"