Fixer une date sur excel

amiraltom Messages postés 50 Statut Membre -  
 Kathe -
Bonjour,

Débutant sur Excel, je cherche un code ou une formule qui me permettrait de noter automatiquement la date du jour (et que celle-ci ne change plus) lorsque l'avancement d'une tâche est de 100%.
J'avais d'abord pensé à la formule =Si("avancement"=100%; AUJOURDHUI(); "") mais par définition la date change (et je voudrais conserver les dates de fin de tâches).
Si quelqu'un pouvait m'aider! Grand merci d'avance!

Cordialement,

tom

A voir également:

18 réponses

Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

En supposant que la plage M11 à M291 est formatée en pourcentage et tu saisis simplement 25 pour 25%, si non comment est formatée la plage en standard et tu saisis ex 25%
testes ce code et tiens moi au courrant

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("M11:M300")) Is Nothing Then
If Target = 1 Then
Target.Offset(0, -1) = Date
Else
Target.Offset(0, -1) = ""
End If
End If
End Sub
1
amiraltom Messages postés 50 Statut Membre
 
N'y a-t-il personne pour m'aider?
S'il vous plait, vous me seriez d'un grand secours!
0
ed555 Messages postés 63 Statut Membre
 
salut,

si ta question est toujours d'actualité, tu peux utiliser le bout de code suivant :

'on récupère l'avancement
avancement = Sheets(1).Range("B1").Value

'on remplit la case A1 avec la date et l'heure actuelle
If avancement = "100%" Then
Sheets(1).Range("A1").Value = Now
End if

bonne continuation !
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Salut,

Cette demande vient d'être évoquée dans cette discussion

https://forums.commentcamarche.net/forum/affich-22183337-figer-une-heure-dans-une-cellule#top
0

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

Posez votre question
amiraltom Messages postés 50 Statut Membre
 
Merci beaucoup! la demande est toujours d'actualité !!
Mike, le problème évoqué ne correspond pas tout à fait à ce que je cherche.
Ed, pour ta solution aurais-tu un code entier? Je suis vraiment une biquette incapable de mettre en forme un code. Et ta solution donne-t-elle une date fixe? en d'autres terme, la date qui s'est mise automatiquement dès qu'on a atteint les 100% va-t-elle changer le lendemain?
Et pour avoir cette formule vraie sur une colonne j'imagine qu'on intervient au niveau du Range, non? Range("A1; A45") par exemple?

Encore une fois merci !

tom
0
amiraltom Messages postés 50 Statut Membre
 
Autant pour moi Mike, je n'avais pas lu le sujet jusqu'au bout.
Du coup il faut adapter un peu le code...mais je ne vois pas où il faut que j'intervienne pour mettre la condition inscrire la date en cellule A1 si la valeur 100% apparait en cellule B1...Tu penses pouvoir modifier ça ?
merci beaucoup!
tom
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

tout dépend comment sont saisie les valeurs dans ta plage
exemple si ta plage A1 à A45 est formatée en pourcentage lorsque tu saisis 100 la valeur s'affiche automatiquement 100,00% dans la colonne B sur la même ligne s'affiche automatiquement la date et l'heure mais on peut se limiter à la date ou à l'heure suffit de préciser et si la valeur est inférieure à 100% colonne B reste vide

Clic droit sur l'onglet de ta feuille/Visualiser le code et colle ce code,puis fais des essaies sur la plage A1 à A45

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A45")) Is Nothing Then
If Target = 1 Then
Target.Offset(0, 1) = Now
Else
Target.Offset(0, 1) = ""
End If
End If
End Sub
0
amiraltom Messages postés 50 Statut Membre
 
Merci !! alors petite précision! Tu vas me trouver tatillon mais dans la réalité la colonne où s'affiche les pourcentages est après celle où doit s'afficher la date (c'est un planning avec des contraintes de présentation assez forte).Mais j'imagine que ça ne doit pas être trop compliqué à modifier, non ? Et, sans vouloir abuser de ta gentillesse, serait-il possible de faire apparaître dans le code la colonne ou va s'afficher la date (l'heure n'est pas importante dans mon cas)? au cas où, justement je devrais modifier l'ordre des colonnes...

Gracie mille !
tom
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

donne moi la plage qui doit conditionner le déclenchament du code exemple si je saisis entre F2 à F500 une valeur pourcentage la date doit s'afficher dans la colonne C
0
amiraltom Messages postés 50 Statut Membre
 
La plage qui conditionne le déclenchement du code est de M11 à M291; si 100% s'affiche en cellule M11, la date s'affiche en L11, idem pour M12 la date s'affiche en M12 (et reste fixe). Je ne sais pas si j'ai répondu à ta question...
Merci !!
0
amiraltom Messages postés 50 Statut Membre
 
ça marche !! merci infiniment, j'ai juste changé le nom de la macro (au niveau du "Private Sub Worksheet_Change" j'avais déjà une macro qui commençait comme ça...j'ai mis "Worksheet_Change1" et ça a marché.
Donc si j'ai bien compris, si je veux changer la colonne où s'inscrit la date, je change le -1 de "Target.Offset(0, -1)" par -2 ou -3, etc...?
C'est vraiment chouette de ta part en tout cas !

Bonne fin de journée à toi !

tom
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

voila tu as compris - si c'est avant la cellule active et 3 par exemple si tu veux la troisième après la cellule active
0
amiraltom Messages postés 50 Statut Membre
 
Raaa non !
J'avais écrit une formule dans la colonne où doit s'inscrire la date. Le code marchait, pas de problème...et j'ai voulu effacer la formule sur toute la colonne, mais ensuite le code ne marchait plus...tu vois une explication ? (j'ai regardé si le format de cellule avait changé, mais non, je suis en format date)
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

Si ton fichier comporte des notes confidentielles, masque les et fais moi parvenir ton fichier soit dans un post dans cette discussion ou en message privé (dans ce cas clic sur mon speudo) que je vois

Avec un de ces deux lien

https://www.cjoint.com/ ou http://www.cijoint.fr/

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
amiraltom Messages postés 50 Statut Membre
 
Bonjour!

Voici le document type que j'utilise. En fait je pensais que la macro marchait mais c'était parce que j'avais oublié d'enlever ma formule initiale (en K11 ici). J'ai réessayé la macro avec ce document type et ça ne marche pas ...
Je te joins le lien:

http://www.cijoint.fr/cjlink.php?file=cj201105/cijOqc2kIa.xls

merci pour ton aide!

tom
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

J'avais zappé ton post excuse,

regarde si c'est ce que tu cherches faire

https://www.cjoint.com/?AFboaHGlfLq
0
amiraltom Messages postés 50 Statut Membre
 
Merci pour le doc. C'est bien l'idée, mais j'aurais deux questions:
Est-ce que "Date" signifie qu'il prend la date du jour et ensuite que celle-ci ne change plus? Et est-ce qu'il est possible ici d'appliquer la formule sur une plage de cellule et non pas seulement sur des cellules isolées? c-à-d généraliser le code pour que chaque 100% de la colonne M donne une date en colonne K...

Merci !
bonne journée à vous !

tom
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

A partir d'un code VBA Date, la date est figée sauf si tu modifies une cellule en M ou la date s'actualisera à la date de la modification

dans mon code j'ai inclus l'effacement de la date si par exemple en M on à saisie accidentellement 100% et que l'on rectifie cette valeur par rien ou une valeur inférieure ex.50% la date s'efface.

Mais on peut écrire le code de sorte que s'il existe une date en K cette reste figée dans tous les cas

il suffira de remplacer le code existant par ces lignes

If Not Intersect(Target, Range("M11:M100")) Is Nothing Then
If Target = 1 And Target.Offset(0, -2) = "" Then
Target.Offset(0, -2) = Date
End If
End If

https://www.cjoint.com/?AFbp6CLBlku

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
amiraltom Messages postés 50 Statut Membre
 
Merci Mike, c'est good! ça fait un petit bog au niveau du "If Target = 1 Then" quand j'insère des lignes mais ça a l'air de fonctionner quand même...
Je te recontacte s'il y a un truc qui cloche!
Merci encore et bonne journée !

Tom
0
Mike-31 Messages postés 19571 Statut Contributeur 5 137
 
Re,

il faut rajouter au code une gestion d'erreur,

remplace le code par celui ci et tiens moi au courant

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("M11:M100")) Is Nothing Then
If Target = 1 And Target.Offset(0, -2) = "" Then
Target.Offset(0, -2) = Date
End If
End If
End Sub
0
Kathe
 
Merci à Mike car j'ai cherché partout pour faire à peu près la même chose que Amiraltom et j'ai pu m'inspirer du code ci-dessus afin de résoudre mon problème. Voici mon adaptation, vu que la colonne A contenait du texte :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A3:A10000")) Is Nothing Then
If Target <> "" And Target.Offset(0, 22) = "" Then
Target.Offset(0, 22) = Date
Else
If Target <> "" And Target.Offset(0, 22) <> "" Then
Target.Offset(0, 22) = Target.Offset(0, 22)
Else
Target.Offset(0, 22) = ""
End If
End If
End If
End Sub
0