J’ai un tableau avec sur chaque ligne une date de mise à jour
Je souhaiterais qu’à chaque modification d’une cellule (Valeur numérique ou modification de texte) sur une ligne, la cellule date prenne la valeur du jour automatiquement.
Exemple, je rentre un nombre ou je le modifie dans la cellule A1
La date dans la cellule F1 passe à la date d’aujourd’hui.
Idem si je rentre du texte ou je le modifie en B1
Cependant, cette mise à jour devrait dans certains cas être gelée
Il faudrait un genre de bouton On/Off
Pour que dans ce cas, je puisse faire des modifications sans qu'il y ait une mise à jour des dates respectives.
Je joins un exemple (Je suis sous 2007)
Est ce que tout cela pourrait être possible ?
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig
Bonjour
Je me suis peut-être mal exprimé, mais il faudrait que la mise à jour soit automatique à chaque entrée ou modification d'une cellule sur une même ligne.
Ce n'est pas spécialement pour gagner du temps, car cela va très vite sans macro avec "Ctrl +;", mais c'est surtout pour ne pas oublier de le faire !
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig
Bonsoir Paf
Apparemment c'est exactement ce que je veux et je vous en remercie.
Je viens juste de faire quelques essais
Je m'aperçois qu'il faut au moins que la colonne "A" soit toujours remplie pour que cela fonctionne
Mais ce n'est pas grave, car elle le sera la plus part du temps.
Un peu plus gênant, il faut apparemment que la colonne "date" soit la dernière colonne du tableau ?
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig
Bonjour Chebe, à Tous
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Cells(Target.Row, "F") = Date
Cells(Target.Row, "G") = Target.Address
Application.EnableEvents = True
End Sub
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig
Re
Je m'aperçois qu'il faut au moins que la colonne "A" soit toujours remplie pour que cela fonctionne
Mais ce n'est pas grave, car elle le sera la plus part du temps.
Un peu plus gênant, il faut apparemment que la colonne "date" soit la dernière colonne du tableau ?
Private Sub Worksheet_Change(ByVal Target As Range)
If ToggleButton1.Value = False Then
Else
Application.EnableEvents = False
Cells(Target.Row, "F") = Date
Application.EnableEvents = True
End If
End Sub
Cela non plus, je n'ai pas bien compris ??
Si je mets "<8", je suppose que si je remplie une cellule dans la colonne 7, c'est Ok et que au-delà de la colonne 7
il ne se passe rien, non ?
Il y donc bien une limitation ?
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig
Re,
Dans la procédure suivante du classeur du post #4 initialement proposé :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerL As Integer
DerL = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("A2:E" & DerL)) Is Nothing Then
If ToggleButton1.Value = True Then Cells(Target.Row, 6) = Date
End If
End Sub
If Not Intersect(Target, Range("A2:E" & DerL)) Is Nothing Then permet de définir les plages de cellules pour lesquelles le code se déclenchera.
Dans le code ci dessus si on modifie une cellule dans la plage A2:Exx (où xx est le numéro de la dernière ligne) le code qui suit se déclenchera; si on modifie une cellule d'une ligne quelconque en dehors de cette plage pas de mise à jour.
Plutôt que de définir une plage de cellule on peut remplacer la ligne ci dessus par une ligne précisant les colonnes du tableau qui devront déclencher le code ( en supposant que la colonne 6 contient la date à modifier, et qu'il n'y a pas plus de 7 colonnes de données):
If Target.Column <> 6 And Target.Column < 8 Then
Target.Column <> 6 : on ne veut pas que le code se déclenche en modifiant la date,car si on modifie une cellule de cette colonne le code va modifier la date, ce qui va déclencher cette prodédure qui va modifier la date, ce qui va déclencher cette prodédure ...... Target.Column < 8 : on limite la plage "sensible" aux colonnes qui contiennent des données qu'on pourrait modifier.
Si on veut écrire dans une cellule d'une ligne en laissant plusieurs lignes vides sous les dernières données, le code se déclenchera et modifiera la date , c'est ce que je voulais dire par : il n'y a plus de limitation sur les lignes
En espérant avoir été plus clair (généralement quand on écrit ça, on connait déjà la réponse !)