Cells(1,1).Value = Evaluate vs .Formula

Bonjour

J'ai beau me tourner le cerveau dans tous les sens, je n'arrive pas à comprendre pourquoi ma première syntaxe en .Formula fonctionne correctement

        Cells(2, 3).Formula = "=SUMPRODUCT((TEXT(Connexions[Date de connexion],""jjjj"")=$A$2)*(HOUR(Connexions[Date de connexion])>12))"

alors que la seconde en .Value me retourne systématiquement la valeur 0

        Cells(2, 4).Value = Evaluate("SUMPRODUCT((TEXT(Connexions[Date de connexion],""jjjj"")=$A$2)*(HOUR(Connexions[Date de connexion])>12))")

Si quelqu'un pouvait m'éclairer sur ce que je n'ai pas compris dans la paramétrage de l'evaluate.

Merci bcp par avance

TF

Bonjour Thiefer

Ca me parait évident

Avec Formula, la formule est inscrite dans la feuille et calcule donc son résultat

Avec Evaluate, VBA doit évaluer une formule dont il ne connait pas la feuille

A+

Bonjour BrunoM45,

Merci de ta réponse mais l'évidence ne me saute pas aux yeux...

Pourquoi dans ce cas l'instruction suivante, elle, aussi contenue dans une autre sub du même module, pour sa part, fonctionne ?

        Cells(2, 3).Value = Evaluate("SUMPRODUCT((YEAR(Connexions[Date de connexion])=$A$2")*(MONTH(Connexions[Date de connexion])=$A$3))")

Je remet à titre de comparaison celle qui ne fonctionne pas

        Cells(2, 4).Value = Evaluate("SUMPRODUCT((TEXT(Connexions[Date de connexion],""jjjj"")=$A$2)*(HOUR(Connexions[Date de connexion])>12))")

Je suis certain de manquer quelque chose de basique, mais quoi ?...

TF

Bonjour toutes et tous

@Thieffer

et en suivant l'exemple de BrunoM45 coucou en passant

' puisque Evaluate ne reconnaîtra pas la feuille

With WorkSheets("LE_NOM_DE_TA_FEUILLE")
        Cells(2, 4).Value = Evaluate("SUMPRODUCT((TEXT(Connexions[Date de connexion],""jjjj"")=$A$2)*(HOUR(Connexions[Date de connexion])>12))")
End With

crdlt,

André

Bonjour à tous,

J'ai testé le with worksheets("maworsheet") mais cela ne règle rien de plus puisque j'avais de toutes façons déjà mis un worksheet.activate en place.

Qu'à cela ne tienne, j'ai fait un test sur un morceau de ma formule et je pense avoir lever le lièvre.

With Worksheets("data")
Range("D19").Value = Evaluate("text(connexions[date de connexion],""jjjj"")")
Range("E19").Formula = "=text(connexions[date de connexion],""jjjj"")"
End With

evaluate me retourne "jjjj" dans ma cellule D19

alors qu'en E19, je retourne bien la valeur attendue, à savoir "mercredi"

Je pense donc que l'histoire de la double côte pose problème à mon evaluate dans ma formule TEXT.

J'ai essayé avec 0, 1, 2, 3 et 4 ", j'ai aussi essayé avec une variable string fmtjour="jjjj", rien à faire

Comment donc faire pour que "jjjj" soit bien reconnu comme le format de la valeur que je souhaite faire retourner à ma formule TEXTE ?

Merci par avance pour toute votre aide

TF

Je poursuis mes tests, des fois que cela permette à quelqu'un de m'aider à résoudre le point

la formulation evaluate avec jjjj retourne donc jjjj

Range("B19").Value = Evaluate("text(connexions[date de connexion],""jjjj"")")

la même fonction evaluate avec dddd pour sa part me retourne Monday

Range("C19").Value = Evaluate("text(connexions[date de connexion],""dddd"")")

Or en ce qui me concerne, c'est bien à la valeur lundi, et non monday que je veux comparer mon résultat,

Y a t'il donc un moyen de retourner d'une date le nom du jour en français via

evaluate("text(date,format)")

?

hé non, le VBA c'est de l'anglais

mais tu dois avoir un problème de config car chez moi Format(cel.Value, "dddd") done bien lundi, mardi, ...

essaye donc de transformer monday avec un transformation

(TEXT(Connexions[Date de connexion],""dddd"")=trans($A$2)

avec une fonction trans comme ceci :

Function trans(cel As Range) As String
Select Case cel.Value
    Case "monday"
        trans = "lundi"
    Case "tuesday"
        trans = "mardi"
    Case "wednesday"
        trans = "mercredi"
    Case "thursday"
        trans = "jeudi"
    Case "friday"
        trans = "vendredi"
    Case "saturday"
        trans = "samedi"
    Case "sunday"
        trans = "dimanche"
End Select
End Function

Merci à tous

Bon, je n'y suis pas parvenu au final, tant pis, je laisse la génération de l'affichage des formules. Je n'en ai pas l'utilité sur cette page de synthèse de données et ça reste assez peu esthétique mais au moins, ça fonctionne

A propos Steelson, j'avais également effectué une transfo via select case, mais au vu des temps de traitements nécessaires, cela ne s'avérait pas gagnant.

J'en reste donc à ne toujours pas comprendre pourquoi evaluate ne peut pas me retourner directement le nom d'un jour libellé en français depuis une date...

TF

Rechercher des sujets similaires à "value evaluate formula"