Mise à jour automatique d'une date suivant modification d'une cellule sur la ligne

Chebe

XLDnaute Nouveau
Bonjour le Forum

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 ?

Merci pour votre aide
 

Pièces jointes

  • Exemple MAJ Automatique.xlsx
    9.1 KB · Affichages: 167

Chebe

XLDnaute Nouveau
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 !

A+
 

Paf

XLDnaute Barbatruc
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig

bonjour à tous

un essai avec un ToggleButton : enfoncé => mise à jour activée. Non enfoncé => mise à jour désactivée

A+
 

Pièces jointes

  • Maj Auto.xls
    40 KB · Affichages: 321
  • Maj Auto.xls
    40 KB · Affichages: 147
  • Maj Auto.xls
    40 KB · Affichages: 161

Chebe

XLDnaute Nouveau
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 ?

A+
 

Docmarti

XLDnaute Occasionnel
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


Docmarti
 

Paf

XLDnaute Barbatruc
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 ?

il faut adapter la plage de cellules dans Private Sub Worksheet_Change(ByVal Target As Range)

A+
 

Chebe

XLDnaute Nouveau
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig

Bonsoir DoubleZero

Merci pour ce 2ème essai, mais cela ne va pas me convenir
Car il n'y a modification de la date qu'au changement d'une cellule de la seule colonne "A"

A Plus
 

Chebe

XLDnaute Nouveau
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig

Bonsoir Docmarti

Merci pour cette macro
J'ai supprimé
Code:
Cells(Target.Row, "G") = Target.Address
Car cela ne me sert pas.

Je vois qu'en 3 ligne le tour est joué :p

Par contre je n'ai pas de bouton On/Off pour neutraliser éventuellement la macro :confused:

A+
 

Chebe

XLDnaute Nouveau
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig

Bonsoir Paf

il faut adapter la plage de cellules dans Private Sub Worksheet_Change(ByVal Target As Range)

J'avais bien essayé avant même d'avoir effectué ma réponse
J'avais essayé de modifier
Code:
Range("A2:E" & DerL)
par
Code:
Range("A2:G" & DerL)
Mais ce n'est pas la bonne modification, car ça plante :(

A+
 

Docmarti

XLDnaute Occasionnel
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig

Bonsoir Docmarti

Merci pour cette macro
J'ai supprimé
Code:
Cells(Target.Row, "G") = Target.Address
Car cela ne me sert pas.

Je vois qu'en 3 ligne le tour est joué :p

Par contre je n'ai pas de bouton On/Off pour neutraliser éventuellement la macro :confused:

A+

Utilise la suggestion de PAF en le modifiant avec

Code:
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


Amicalement

Docmarti
 

Paf

XLDnaute Barbatruc
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig

Re bonjour à tous

une solution pour modifier la plage:

If Target.Column <> 6 And Target.Column < 8 Then à adapter

Target.Column <> 6 si la date est en colonne 6
Target.Column < 8 s'il n'y a pas de données au de la de la colonne 7

par contre, il n'y a plus de limitation sur les lignes

A+
 

Chebe

XLDnaute Nouveau
Re : Mise à jour automatique d'une date suivant modification d'une cellule sur la lig

Bonjour Docmarti

Merci, comme cela c'est Ok :)
Merci beaucoup pour ton aide


Bonjour Paf

Merci encore pour l'aide
Code:
If Target.Column <> 6 And Target.Column < 8 Then
Mais je n'ai pas bien compris ou je dois intégrer cette ligne supplémentaire de code :confused:
J'ai bien fait des essais, mais .......

par contre, il n'y a plus de limitation sur les lignes
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 ?


A+
 

Paf

XLDnaute Barbatruc
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 !)

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 110
Messages
2 085 388
Membres
102 882
dernier inscrit
Sultan94