Fixer une date sur excel

Fermé
amiraltom Messages postés 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011 - Modifié par amiraltom le 23/05/2011 à 12:27
 Kathe - 9 nov. 2016 à 15:05
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
27 mai 2011 à 16:01
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
Modifié par amiraltom le 25/05/2011 à 11:20
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 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018
25 mai 2011 à 18:03
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
25 mai 2011 à 21:40
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
Modifié par amiraltom le 27/05/2011 à 11:07
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
27 mai 2011 à 11:22
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
27 mai 2011 à 11:36
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
Modifié par amiraltom le 27/05/2011 à 12:21
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
27 mai 2011 à 13:24
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
27 mai 2011 à 15:21
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
Modifié par amiraltom le 27/05/2011 à 16:49
ç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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
27 mai 2011 à 16:51
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
Modifié par amiraltom le 27/05/2011 à 17:15
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 27/05/2011 à 20:44
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
Modifié par amiraltom le 30/05/2011 à 10:06
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
1 juin 2011 à 14:00
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
Modifié par amiraltom le 1/06/2011 à 15:35
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 1/06/2011 à 16:03
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 48 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 28 juin 2011
6 juin 2011 à 10:51
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
6 juin 2011 à 13:25
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
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