Excel-MAJ date si modif cellule de la ligne

Résolu
Nicoco -  
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   -
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!
A voir également:

14 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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.
8
@lex
 
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
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725 > @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.
0
Petit
 
Bonjour,
Je rencontre un souci avec cette macro. Elle ne permet plus l'annulation (ctrl Z).
Pouvez-vous m'aider svp ?
Merci
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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 !
0
ER
 
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
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
bonjour

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

merci bien gbinform, ça va me faire gagner pas mal de temps au boulot.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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.
0
Laurence de Mtp
 
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 ?
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicoco
 
Ok , merci de le préciser, je leur ferais un petit mail qui va bien pour pas qu'ils écrasent les dates.
0
Nicoco
 
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.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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 
0
Nicoco
 
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!
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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
0
Nicoco
 
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
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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
0
Nicoco
 
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+
0
ga791333
 
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.
0
ga791333
 
Merci j'ai trouvé la réponse a mon problème
0