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
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
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:
- Excel date du jour fixe
- Liste déroulante excel - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Word et excel gratuit - Guide
- Nombre de jours entre deux dates excel - Guide
- Mise a jour windows 10 - Accueil - Mise à jour
18 réponses
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
27 mai 2011 à 16:01
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
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
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
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!
S'il vous plait, vous me seriez d'un grand secours!
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
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 !
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 !
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
25 mai 2011 à 21:40
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
Cette demande vient d'être évoquée dans cette discussion
https://forums.commentcamarche.net/forum/affich-22183337-figer-une-heure-dans-une-cellule#top
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
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
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
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
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
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
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
27 mai 2011 à 11:36
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
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
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
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
Gracie mille !
tom
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
27 mai 2011 à 13:24
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
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
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
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 !!
Merci !!
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
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
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
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
27 mai 2011 à 16:51
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
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
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
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)
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)
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
Modifié par Mike-31 le 27/05/2011 à 20:44
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.
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.
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
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
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
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
1 juin 2011 à 14:00
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
J'avais zappé ton post excuse,
regarde si c'est ce que tu cherches faire
https://www.cjoint.com/?AFboaHGlfLq
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
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
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
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
Modifié par Mike-31 le 1/06/2011 à 16:03
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.
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.
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
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
Je te recontacte s'il y a un truc qui cloche!
Merci encore et bonne journée !
Tom
Mike-31
Messages postés
18384
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
9 avril 2025
5 127
6 juin 2011 à 13:25
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
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
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
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