Macro remplacant formule conditionnelle?

aurelie91220 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 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!
A voir également:

4 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut ccm81

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

Pourquoi ne pas faire saisir la date en H5?
0
aurelie91220 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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