Macro remplacant formule conditionnelle?

aurelie91220 Messages postés 13 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour Chers Amis,

Je fais un tableau de suivi d'échéances de retour de dossier. Dans une des cellules ( G5) j'ai besoin que s'affiche trois conditions (" " , pas de relance, insérer date relance) cela en fonction d'une autre (E5) qui détermine si le dossier est retourné:OUI, retourné:NON ou En ATTENTE...
Pour cela j'ai fait une formule conditionnelle qui fonctionne bien:
=SI(E5="EN ATTENTE";"";SI(E5="OUI";"PAS DE RELANCE";SI(E5="NON";"INSÉRER DATE RELANCE";"")))
G5 me sert d'alerteur sur l'état du dossier mais aussi a indiquer si une relance est nécessaire. Donc lorsque apparait "INSÉRER DATE RELANCE" l'agent sait qu'il doit relancer et qu'il doit écrire dans cette cellule la date a laquelle il l'a fait. Cela sans écraser la formule, car j'ai créée une liste pour que les formules se régénèrent à chaque ligne.
J'ai pensé à une macro du coup mais sans trop savoir si cela serait possible et sans savoir comment faire.
Est-ce que quelqu'un pourrait m'aider?

Merci par avance!

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    il doit écrire dans cette cellule la date a laquelle il l'a fait. Cela sans écraser la formule qu'elle contient
    Une cellule contient soit une formule, soit une valeur, mais pas les deux à la fois, et la modification de son contenu qu'elle provienne du clavier ou de vba écrase l'ancien contenu. J'ai bien peur que vba ne puisse contourner cette difficulté
    Je ne sais pas ce qu'en pense pijaku que je salue au passage

    Cdlmnt
    2
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut ccm81

      mon +1 répondrait-il à ta question?
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Tout à fait
      Quant au +1, merci, mais ça me parait beaucoup, 0.5 aurait largement suffi ;-)
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      ça t'apprendra à faire le malin + 2 ;-)
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Pourquoi ne pas faire saisir la date en H5?
    0
  3. aurelie91220 Messages postés 13 Statut Membre
     
    Bonjour Pijaku,

    C'est une solution, mais au préalable je voudrais trouver quelque chose de plus automatique un peu basé sur la forme d'un formulaire...
    Je ferais ça si je ne trouve pas de macro.

    Merci quand même.
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Pas très orthodoxe ton truc mais bon, un essai.
    A mettre dans le module de la feuille :
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim pl1 As Range, pl2 As Range, c As Range, lig As Long
        Set pl1 = [E2:E10]
        Set pl2 = [G2:G10]
        If Intersect(Target, Union(pl1, pl2)) Is Nothing Then Exit Sub
        Set pl1 = Intersect(Target.Offset(, 2), pl2)
        Set pl2 = Intersect(Target, pl2)
        If pl1 Is Nothing Then
            Set pl1 = pl2
        ElseIf Not pl2 Is Nothing Then
            Set pl1 = Union(pl1, pl2)
        End If
        If pl1 Is Nothing Then Exit Sub
        For Each c In pl1
            If Not IsDate(c) Then
                lig = c.Row
                Application.EnableEvents = False
                c.FormulaLocal = "=SI(E" & lig & "=""EN ATTENTE"";"""";SI(E" & lig & "=""OUI"";""PAS DE RELANCE"";SI(E" & lig & "=""NON"";""INSÉRER DATE RELANCE"";"""")))"
                Application.EnableEvents = True
            End If
        Next c
    End Sub

    Fait sur les lignes 2 à 10.
    La colonne E doit être une saisie (liste déroulante acceptée).
    Pour éviter de perdre une donnée je n'efface jamais la date. Si l'utilisateur modifie E il faudra supprimer la date en G pour récupérer le libellé.

    A la réflexion (maintenant que c'est fini), comme tu passes en vba pourquoi ne pas mettre directement le libellé plutôt qu'une formule ?
    Ca aurait été plus simple.
    https://www.cjoint.com/?DHba1QK7ImD

    eric
    0