Fixer une date sur excel

amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
 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

18 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  2. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    N'y a-t-il personne pour m'aider?
    S'il vous plait, vous me seriez d'un grand secours!
    0
  3. ed555 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  6. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  9. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    ç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
  10. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  11. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  13. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  14. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  15. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  16. amiraltom Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  17. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. 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