Macro date clignotante sur Excel

Résolu
edgc Messages postés 7 Statut Membre -  
 motorest -
Bonjour à tous,

Je souhaite faire un tableau avec:
Une date en A1
Une formule avec date + 10 jours dans la cellule B1
Je souhaite que dans la cellule B1, le résultat fasse clignoter la cellule lorsque la nouvelle date est atteinte.

Quelqu'un peut-il m'aider?
Attention je suis nul en macro, ce sont mes premiers pas!

20 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Oubli la demande d'EDGC, chaque code est particulier. Dans ton cas tu aurais dû ouvrir ta propre discussion.
    Si je comprends bien ta demande, en colonne F tu saisis la date d'envoi et colonne J l'article concerné, en colonne ? qui reste à définir, la date du retour devis.
    si la date de la colonne ? ou tu dois saisir la date du retour devis est vide et la date en colonne F est antérieure à 15 jours par rapport à aujourd'hui les cellule des colonnes F et J clignotent et s'arrête lorsque tu saisis la date du retour en colonne ?
    c'est bien cela
    1
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Colle ce code dans un module et associe chaque macro à un bouton pour tester s'il répond à tes attentes, on verra plus tard le perfectionnement

    Option Explicit

    Dim BlinkTime As Date
    Dim c, x As Range
    Public Sub Clignot()

    On Error Resume Next
    For Each c In Sheets("Feuil1").Range("A2:A150").Cells 'Zone du clignotement
    If c.Interior.ColorIndex = -4142 Then
    If c.Value <> "" And c.Offset(0, 2) = "" And c.Value + 15 <= Date Then
    c.Interior.ColorIndex = 3 'Red
    Else
    c.Interior.ColorIndex = 0 'Blanc2 actuellement 0 à voir
    End If
    Else
    c.Interior.ColorIndex = 0
    End If
    Next c
    BlinkTime = Now() + TimeValue("00:00:01") 'le temps du clignotement
    Application.OnTime BlinkTime, "Clignot"
    End Sub

    Sub ArretClignot()
    On Error Resume Next
    Application.OnTime BlinkTime, "Clignot", , False
    Sheets("Feuil1").Range("F2:F19,J2:J19").Interior.ColorIndex = xlNone
    End Sub
    1
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Dans les propriétés de ta feuille colle ces trois codes (clic droit sur l'onglet de feuille concerné/visualiser le code)

    le premier code lance automatiquement le clignotement dès que l'on revient sur la feuille, le deuxième arrête le clignotement pour permettre les modifications les cellules confortablement, et le troisième arrête le clignotement dès que l'on quitte la feuille ce qui facilite les saisies dans les feuilles du classeur

    Private Sub Worksheet_Activate()
    Call Clignot
    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A:C")) Is Nothing Then
    Call ArretClignot
    Columns("A:C").Interior.ColorIndex = xlNone
    End If
    Call Clignot
    End Sub

    Private Sub Worksheet_Deactivate()
    Call ArretClignot
    End Sub

    Dans la Thisbokbook ces deux codes, un pour arrêter le clignotement à la fermeture du classeur et un pour sélectionner la feuille nommée "Feuil1" (à adapter) à l'ouverture et donc lancer le clignotement

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call ArretClignot
    End Sub

    Private Sub Workbook_Open()
    Sheets("Feuil1").Select
    Call Clignot
    End Sub

    dans un module colle ces deux codes un qui pilote le clignotement et un pour l'arrêter

    Option Explicit

    Dim BlinkTime As Date
    Dim c, x As Range
    Public Sub Clignot()
    On Error Resume Next
    For Each c In Sheets("Feuil1").Range("A2:A150").Cells 'Zone du clignotement
    If c.Offset(0, 2).Interior.ColorIndex = -4142 Then
    If c.Value <> "" And c.Offset(0, 2) = "" And c.Value + 15 <= Date Then
    c.Offset(0, 2).Interior.ColorIndex = 3 'Red
    Else
    c.Offset(0, 2).Interior.ColorIndex = 0 'Blanc2 actuellement 0 à voir
    End If
    Else
    c.Offset(0, 2).Interior.ColorIndex = 0
    End If
    Next c
    BlinkTime = Now() + TimeValue("00:00:01") 'le temps du clignotement
    Application.OnTime BlinkTime, "Clignot"
    End Sub

    Sub ArretClignot()
    On Error Resume Next
    Application.OnTime BlinkTime, "Clignot", , False
    Sheets("Feuil1").Range("F2:F19,J2:J19").Interior.ColorIndex = xlNone
    End Sub

    en paramétrant les codes ainsi tout bouton est inutile, et si tu le souhaites, il est possible de faire clignoter les cellules A, B et C concernées

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    1
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Il n'y a pas de formule pour faire clignoter une cellule ou la valeur contenue dans une cellule, la seule solution est le VBA.
    A la conclusion de ta demande "Attention je suis nul en macro, ce sont mes premiers pas!"
    le mieux serait de poster ton fichier que l'on mette le code dessus

    Pour joindre ton fichier avec ce lien

    https://www.cjoint.com/
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ricky38 Messages postés 5776 Date d'inscription   Statut Contributeur Dernière intervention   1 463
     
    Salut,

    tu pourrais aussi passer par la mise en forme conditionnelle, cette façon de faire ne fait pas clignoter la cellule mais tu peux faire afficher le texte ou le fond de la cellule dans une couleur de ton choix.

    Merci

    0
  7. edgc Messages postés 7 Statut Membre
     
    Bonsoir,

    Je préférerais avoir une cellule clignotante car c'est plus visuel quand tu n'as pas l'oeil en permance sur ton tableau excel.

    Merci pour ta réponse.
    0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Pour écrire un code VBA il faut être précis, si on te demande un exemple de fichier c'est avant tout nous faire gagner du temps et adapter un code à la structure du fichier.
    Ton fichier tarde à venir alors pour ce soir je décroche, demain il fera jour
    0
    1. edgc Messages postés 7 Statut Membre
       
      Désolé pour cette réponse tardive!

      Voici le fichier en pièce jointe.
      Ce sont les cellules en gris que je voudrais faire apparaitre clignotantes (en rouge si possible) lorsque la date est dépassée

      Merci de ton aide

      https://www.cjoint.com/?0KbmdmLa36w
      0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Dans ta demande tu voulais faire clignoter une cellule en B dont la date avait 10 jours de plus que la date en A
    Sur ton fichier joint les dates en F et J n'ont qu'un jour de plus, et le clignotage est il fonction de la date en F et J par rapport à aujourd'hui c'est à dire que si la date dans ces deux colonnes est celle d'aujord'hui la cellule clignote voire Aujourd'hui et antérieur
    dans l'exemple le clignotage est lié à aujourd'hui

    https://www.cjoint.com/?BKbqkzCCUN8
    0
  10. edgc Messages postés 7 Statut Membre
     
    Bonsoir,

    Lorsque j'ai posé ma question, mon fichier n'était pas encore créé, ce n'était qu'un exemple que je souhaitais reproduire à mon gré.
    J'ai donc créé ce début de fichier cet après midi pour pouvoir te le soumettre.
    En fait je souhaite que les cellules de la colonne F et J clignotent lorsque la date est atteinte et restent clignotantes même si la date est dépassée.
    Dans l'idéal, il faudrait que je puisse annuler le clignotage en appuyant sur un bouton ou autre (par exemple).

    Merci de ton aide.
    0
  11. edgc Messages postés 7 Statut Membre
     
    Super comme çà!
    Mais un pour chaque ligne, pour effacer chaque ligne dès que j'ai fini.
    0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    que veux tu dire par

    Mais un pour chaque ligne, pour effacer chaque ligne dès que j'ai fini
    0
  13. edgc Messages postés 7 Statut Membre
     
    Concentrons nous sur une date clignotante dès qu'elle est dépassée

    Le reste n'a pas d'importance

    Merci
    0
  14. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Alors le fichier est bon non ?
    0
  15. edgc Messages postés 7 Statut Membre
     
    Super,

    Ca marche comme je le souhaitais.
    Je n'avais pas fait attention précédemment au clignotage car les macros étaient désactivées.
    Désolé et encore merci.
    0
  16. motorest Messages postés 1 Statut Membre
     
    Bonjour,
    Cette macro est très intéressante
    exiterait il une amélioration afin de faire arrêter le clignotement en fonction d'une date d'intervention sur la même ligne mais dans une cellule différente.

    exemple avec le même fichier que précédement si nous mettons une date dans la cellule date d'intervention prévu. le clignotmeent s'arrête uniquement sur la ligne concerné

    Merci d'avance
    Cédric
    0
    1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      Bonsoir,

      Oui certainement, il suffit de connaitre le critère déclenchant et le critère qui arrêtera le processus, avec les plages contenant ces critères

      Mike-31
      A+
      0
  17. motorest
     
    Merci pour cette réaction rapide.

    en fait, je suis parti du fichier qui se trouve dans la demande de "EDGC" ci dessus.

    il souhaitait faire clignoté les cellules de la colonne F et J en fonction de la date du jour et d'une valeur donné.
    je cherche à faire arrêter le clignotement dans les cellules lorsque je saisie une valeur (date) dans une des colonnes suivante

    Exemple pour ce fichier, le clignotement s'arrête si je saisi une valeur (date) dans la colonne M.

    pour mon application perso, j'ai adapté la macro sur un autre fichier, mais je ne trouve pas la solution.

    mon fichier comprend une date d'envoi d'un article en réparation dans une "cellule".
    au delà de 15 jours sans devis une cellule se met à clignoté en rouge.
    dès que je reçois le devis, je saisie la date de réception et la cellule cesse de clignoté.

    est ce réalisable?

    Merci d'avance
    0
  18. motorest
     
    donc on oubli le précédent fichier.....

    en colonne A je saisie la date d'expédition.
    en colonne C ma date de réception de devis.

    A partir du moment ou j'ai saisi une date d'expédition en A
    et que part rapport à la date du jour, 15 jours se sont écoulé sans réception de devis, ma colonne C se met à clignoter jusqu'a ce que je saisisse une date dans la colonne qui clignote donc "C"

    est ce valable pour 150 lignes excel

    Merci d'avance
    Cédric
    0
  19. motorest
     
    Merci,

    J'ai testé un peu dans tous les sens pour voir si tous fonctionne. Cette macro fonctionnne bien.
    La date d'envoi se met bien à clignoté une fois que nous avons dépassé 15 jours.
    et s'arrête bien lorsqu'on saisi une date en colonne C.
    quelques soucis lors des saisies complémentaires, mais rien de grave.

    mais j'abuse un peu en fait je souhaiterais que ce soit la cellule C et non la A
    date de "réception de devis" qui clignote tant que nous n'avons pas saisie une date quelquonque en C.

    on garde tout, il faut juste que le clignotement se fasse en colonne C.

    ............. A.......................................B............................................C
    Date d'envoi en réparation...... réparateur......................date déception du devis
    01/11/2013............................... rep 1
    15/11/2013;...............................rep12
    ................................................. rep16
    ..................................................rep 9

    Merci

    Cédric
    0
  20. motorest
     
    Hello,

    Merci ça fonctionne super,

    J'ai mis un peu de temps à répondre car je voulais comprendre ce que je faisais.
    Tout n'est pas encore clair pour moi, mais j'ai réusi à le faire fonctionner sur mon fichier en adaptant les codes.

    encore un grand merci, j'approfondis ça

    Cédric
    0