Rafraîchissement cellule avec forme conditionnelle après VBA date change

Bonjour à tous,

Je mets ma feuille excel à jour via VBA en lisant un projet MSP.

Mon projet contient des tâches avec des dates, ces informations sont déversées dans des lignes de ma feuille.
Les dates sont mises en forme et éditées dans les cellules de la feuille de la manière suivante :

wDate = Format(CDate(t.Finish), "DD/MM/YYYY") With WkSh.Cells(r, 10)  .NumberFormat = "dd/mm/yyyy"  .Value = wDate  .Font.Size = typFnt(7) End With

Une autre partie de la feuille contient des cellules avec mises en forme conditionnelles

image

Les règles de mise en forme conditionnelles prennent en compte trois cellules :
- $F9 : contient du texte
- N$6 : contient une date de référence
- $I9 : contient une date de début de période
- $J9 : contient une date de fin de période

Lorsque la date de référence est comprise entre les bornes début/fin de période, la mise en forme est appliquée en fonction du texte.

Lorsque je saisi les dates $I9 et $J9 manuellement, la mise en forme est appliquée.

Lorsque les dates sont modifiées par la macro VBA (voir çi-dessus) la mise en forme ne s'applique pas.
Si je sélectionne la date manuellement, que je me positionne dans la barre de formule et que je fais "enter" alors la mise en forme s'applique.
J'ai déjà essayer différentes formes d'alimentation des dates depuis la macro VBA.
J'ai également ajouté "ThisWorkBook.RefreshAll" qui n'a pas changé le comportement.

Pouvez vous m'aider sur ce sujet ?

Bonjour

c'est sûrement que la valeur saisie n'est pas considérée comme une date....

Je pense qu'il faut convertir ces variables saisies en date au moment du transfert sur l'onglet

Cordialement

FINDRH

essayer avec cette ligne en rouge, je l'utilise pour convertir des nombres en alpha en nombre ( avec copier 1 collage spécial valeur multiplication

wDate = Format(CDate(t.Finish), "DD/MM/YYYY")

With WkSh.Cells(r, 10)
.Value = wDate *1
.NumberFormat = "dd/mm/yyyy"
.Size = typFnt(7)

End Withlication

Bonjour FINDRH,

merci pour ton aide.
Malheureusement en appliquant ta suggestion j'obtiens une erreur : "Incompatibilité de type"

Alors j'ai essayé en mettant à jour la formule de la manière suivante :

wDate = "=DATEVAL(""" & Format(CDate(t.Start), "DD/MM/YYYY") & """)"
With WkSh.Cells(r, 9)
   .NumberFormat = "dd/mm/yyyy"
   .Formula = wDate
   .Font.Size = typFnt(7)
End With

Je n'ai toujours pas le rafraîchissement de la forme de la cellule.
La cellule date contient "#NOM?" et lorsque je la sélectionne je vois dans le champ formule : "=@DATEVAL("17/10/2023")".
Si je retire le caractère @ (automatiquement ajouté par excel) alors la mise en forme se réalise.

Par contre, je ne sais pas comment retirer le caractère @ ou comment dire à VBA ou Excel de ne pas ajouter ce caractère.

Trouvé sur le web Problème connu mais pas vraiment expliqué.....

En fouillant encore, il se trouve que c'est bien une mise à jour d'Excel qui cause l'ajout de ce caractère : https://support.microsoft.com/fr-fr/office/op%C3%A9rateur-d-intersection-implicite-ce3be07b-0101-4450-a24e-c1c999be2b34

Opérateur d’intersection implicite : @

L’opérateur d’intersection implicite a été introduit dans le cadre de la mise à niveau importante du langage de formule d’Excel pour prendre en charge les tableaux dynamiques. Les tableaux dynamiques apportent de nouvelles fonctionnalités de calcul et fonctionnalités significatives à Excel.

D'après MS cela ne doit pas impacter le fonctionnement des formules, hors ce n'est pas une formule compatible visiblement...

Je n'arrive pas à désactiver cette correction automatique d'Excel, je pense que cela serait la solution

Des membres d'autres forums suggèrent d'enregistrer lapose de la formule dans une macro et de la reprendre, soit de la reconstituer par concaténation

Désolé de ne pouvoir être plus précis

FINDRH

Bonjour FINDRH,

J’avais effectivement vu le pb de la version de Excel. Par contre l’idée de concaténation est astucieuse, je vais essayer et te tiendrai au courant.

Cordialement

Rechercher des sujets similaires à "rafraichissement forme conditionnelle vba date change"