Excel-MAJ date si modif cellule de la ligne [Résolu/Fermé]

Signaler
-
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
-
Bonjour, voila j'ai un tableau de suivi de projets avec une ligne correspondant à 1 projet et une trentaine de colonnes qui correspondent à différents aspects des projets.

J'essaye de créer une colonne date de Mise à jour qui m'indiquerait quand des infos sur un projet ont été ajoutés (bcp de projets, bcp de monde qui gèrent ces projets du coup c un peu compliqué à suivre).

Par exemple, j'ai 40 lignes de projets et 30 colonnes correspondant à un aspect, si je modifie un aspect de la ligne 13 ça me mettra la date dans la cellule de MAJ de la ligne 13 à jours , etc, etc...

Pour l'instant la date de modif se fait manuellement et donc, y a des oublis et je souhaiterais le faire automatiquement. J'ai trouvé des réponse dans les forum quand il s'agissait de MAJ la date si une feuille excel était modifiée ou une cellule, mais pas une ligne entière.

Est-ce que quelqu'un aurait une idée?

Merci d'avance.


ps : je suis un peu une buse pour les matrices sous excel, je me suis arrêté au tableau croisé dynamique... mais même pas peur si faut en faire une!

14 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
bonjour

pour les matrices sous excel, ... mais même pas peur si faut en faire une!

C'est plutôt une macro événementielle que je te proposerai (mode d'emploi éventuel) à mettre dans la feuille concernée.
Private Sub Worksheet_Change(ByVal sel As Range)
    Application.EnableEvents = False
    Cells(sel.Row, "AF").Value = Date + Time
    Application.EnableEvents = True
End Sub

J'ai mis la date en colonne AF, à toi de modifier pour adapter à la tienne.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Bonjour,
Merci pour votre réponse rapide, mais j'arrive pas à faire marcher la macro. C'est quoi le nom du fichier dans cette macro? et ça représente koi "sel.row"? ou "sel As Range"? Merci encore de me répondre
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198 > @lex
bonjour

C'est quoi le nom du fichier dans cette macro?

Le nom du fichier n'a rien à voir dans cette macro.

ça représente koi "sel.row"?

La ligne qui vient d'être modifiée.
    Cells(sel.Row, "A").Value = Date + Time & Application.UserName

avec cette instruction tu mets en colonne A la date, l'heure et le nom de l'auteur, mais il faut bien laisser les autres lignes pour éviter que la macro boucle.
Bonjour,
Je rencontre un souci avec cette macro. Elle ne permet plus l'annulation (ctrl Z).
Pouvez-vous m'aider svp ?
Merci
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
Bonjour,

Elle ne permet plus l'annulation (ctrl Z)
Comme toutes les macros sauf si la macro le gère et comme le principe de cette macro c'est d'enregistrer la dernière modification de la ligne, si tu annules l'enregistrement de la macro, autant ne pas mettre la macro !
bonjour,
merci pour cette macro qui fonctionne parfaitement pour l'ajout d'une date de modif dès qu'une cellule de la ligne est modifiée !
ER
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
bonjour

Tu peux aussi masquer la colonne date de mise à jour et l'afficher seulement lorsque tu en as l'utilité.
Nickel, ça marche!

merci bien gbinform, ça va me faire gagner pas mal de temps au boulot.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
bonjour

Nickel, ça marche!

Merci de le faire savoir car c'est notre seul gagne pain !

Pour l'instant la date de modif se fait manuellement

Avec cette macro si quelqu'un continue de le faire sa date sera écrasée.

Bonjour !
Et merci ! en tant qu’utilisatrice qui ne fait que lire les questions que d'autres se sont posées avant moi, ça aide !
J'ai néanmoins un souci avec la macro proposée : quand je veux l'exécuter, VBA me dit "erreur de compilation End Sub attendu" ...
Une idée ?
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
Bonjour,

Si tu regardes la macro
End Sub
en fait partie.
Si tu as cette erreur c'est que tu l'as mal recopiée.
Si tu veux qu'on la rectifie, il faut nous mettre ta version.
Ok , merci de le préciser, je leur ferais un petit mail qui va bien pour pas qu'ils écrasent les dates.
Bon, en fait, j'ai un petit soucis sur la macro. Je l'avais testé sur mon pc perso et ça marchait parfaitement, mais sur le fichier du boulot ça plante. En fait, le problème viendrait du fait que j'ai déjà une macro et que du coup ça doit faire conflit dans les lignes de code (en gros il me dit 'erreur de compilation: Nom ambigu detecté :Worksheet_Change").

J'ai ça dans ma feuille de commande :

Private Sub Worksheet_Change(ByVal sel As Range)
Application.EnableEvents = False
Cells(sel.Row, "B").Value = Date + Time
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal sel As Range)
ligne = Target.Row
colonne = A
If Target.Value = 0 Then Target.Interior.ColorIndex = 2
If Target.Value = 1 Then Target.Interior.ColorIndex = 34
If Target.Value = 2 Then Target.Interior.ColorIndex = 35
If Target.Value = 3 Then Target.Interior.ColorIndex = 36
If Target.Value = 4 Then Target.Interior.ColorIndex = 40
If Target.Value = 5 Then Target.Interior.ColorIndex = 4
If Target.Value = 6 Then Target.Interior.ColorIndex = 3
If Target.Value = 7 Then Target.Interior.ColorIndex = 3
End Sub


J'ai essayé plusieur combinaison mais ça ne marche pas. Si tu as une idée de la manip que je dois faire ?

Merci en tout cas.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
bonjour


Bien sûr tu ne peux avoir qu'une seule procédure pour un nom mais ainsi cela doit fonctionner :
Private Sub Worksheet_Change(ByVal Target As Range)
' mise à jour date modification
    Application.EnableEvents = False
    Cells(sel.Row, "B").Value = Date + Time
    Application.EnableEvents = True
' fonction présente
ligne = Target.Row
colonne = A
If Target.Value = 0 Then Target.Interior.ColorIndex = 2
If Target.Value = 1 Then Target.Interior.ColorIndex = 34
If Target.Value = 2 Then Target.Interior.ColorIndex = 35
If Target.Value = 3 Then Target.Interior.ColorIndex = 36
If Target.Value = 4 Then Target.Interior.ColorIndex = 40
If Target.Value = 5 Then Target.Interior.ColorIndex = 4
If Target.Value = 6 Then Target.Interior.ColorIndex = 3
If Target.Value = 7 Then Target.Interior.ColorIndex = 3
End Sub 
Salut,

j'ai fais un copier coller de la procédure mais ça marche pas non plus, il me met qu'il y a un probleme et me demande si je veux mettre "fin" ou le débogage".

J'ai réessayé tout à l'heure de bidouiller un peu mais sans succès.

Si tu as une autre idée, merci!
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
bonjour

Effectivement j'avais regardé en coup de vent et sans tester (honteux)
Private Sub Worksheet_Change(ByVal Target As Range)
' mise à jour date modification
    Application.EnableEvents = False
    Cells(Target.Row, "B").Value = Date + Time
    Application.EnableEvents = True
' fonction présente
If Target.Value = 0 Then Target.Interior.ColorIndex = 2
If Target.Value = 1 Then Target.Interior.ColorIndex = 34
If Target.Value = 2 Then Target.Interior.ColorIndex = 35
If Target.Value = 3 Then Target.Interior.ColorIndex = 36
If Target.Value = 4 Then Target.Interior.ColorIndex = 40
If Target.Value = 5 Then Target.Interior.ColorIndex = 4
If Target.Value = 6 Then Target.Interior.ColorIndex = 3
If Target.Value = 7 Then Target.Interior.ColorIndex = 3
End Sub
Salut,

pas de soucis, c'est déjà bien sympa de m'aider.

Ca marche maintenant, ça change bien la date et les couleurs des cellules selon que je mets 0 à 7 (par contre du coup le changement de couleur ne se limite plus à la colonne A, mais c'est pas grave vu que c la seul colonne destinée à recevoir ces chiffres).

En tout cas bien merci bien, ça m'aide déjà pour mes suivis!!

Bonne journée
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 198
bonjour

par contre du coup le changement de couleur ne se limite plus à la colonne A

Avant non plus, si j'ai enlevé cette ligne c'est qu'elle ne servait à rien. Si tu veux limiter à la colonne A il faut que l'instruction fonctionne et faisant comme ceci par exemple
Private Sub Worksheet_Change(ByVal Target As Range)
' mise à jour date modification
    Application.EnableEvents = False
    Cells(Target.Row, "B").Value = Date + Time
    Application.EnableEvents = True
' fonction présente
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    If Target.Value = 0 Then Target.Interior.ColorIndex = 2
    If Target.Value = 1 Then Target.Interior.ColorIndex = 34
    If Target.Value = 2 Then Target.Interior.ColorIndex = 35
    If Target.Value = 3 Then Target.Interior.ColorIndex = 36
    If Target.Value = 4 Then Target.Interior.ColorIndex = 40
    If Target.Value = 5 Then Target.Interior.ColorIndex = 4
    If Target.Value = 6 Then Target.Interior.ColorIndex = 3
    If Target.Value = 7 Then Target.Interior.ColorIndex = 3
End Sub

Ainsi les couleurs ne sont traitées que si tu saisis en colonne A
ok, j'y comprend un peu mieux, du coup je pourrais manipuler un peu la procédure si je veux modifier certaines choses.

En tout cas merci encore pour avoir passé du temps sur mon pb!
A+
Bonjour,
J'essaie d'afficher la date et heure de modification d'une cellule.
Voici mon code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim aRow As Integer
aRow = Target.Row
CurrentSheet.Cells(aRow, "G").Value = Date
CurrentSheet.Cells(aRow, "H").Value = Time

End Sub

Mais Excel plante au nivau de l'heure parce que ca continue à raffraichir le nombre de seconde en boucle pendant 2 minutes puis Excel plante.

Est ce la méthode Time ? ou est ce qu'il me manque une instruction ?

Merci.
Merci j'ai trouvé la réponse a mon problème