XL 2016 VBA Evaluate

danielco

XLDnaute Accro
Bonjour,

Je ne vois pas où se situe mon erreur, entre ces deux lignes :
VB:
  [A10].Formula = "=DATEDIF(""" & Format(zv_Debut, "d/m/yyyy") & """,""" & Format(zv_Fin, "d/m/yyyy") & """,""md"")"
  Var = Evaluate("=DATEDIF(""" & Format(zv_Debut, "d/m/yyyy") & """,""" & Format(zv_Fin, "d/m/yyyy") & """,""md"")")

La première renvoie 1 et la seconde un erreur :
?zv_Debut
16/04/2019
?zv_Fin
17/10/2020
?[A10]
1
?var
Erreur 2015

Merci d'avance.

Daniel
 
Solution
Bonjour Daniel,

Tu as écrit : « Je ne vois pas le rapport entre le post #9 et mon problème »

Dans le code VBA de ton post #11 ci-dessus, il y a :


toto = Evaluate("=DATEDIF(""" & Format(zv_Debut, "d/m/yyyy") & """,""" &
Format(zv_Fin, "d/m/yyyy") & """,""md"")")

Le post #9 contient un lien sur le post #3 de djidji59430 ; as-tu cliqué dessus ?
si oui : djidji a d'abord mentionné une page du support Microsoft concernant
des problèmes connus de l'utilisation de l'argument "md" pour la fonction
DATEDIF() ; puis il a indiqué une façon de contourner un de ces problèmes.

alors bon, c'est vrai que...
C

Compte Supprimé 979

Guest
Re,

Je t'ai répondu dans le sujet ICI

Mais apparemment tu ne veux pas écouter ce qu'on te dit :rolleyes:

Arf, mais en plus ce n'est pas pour toi pour quelqu'un qui à posé la question sur le forum

Non mais sans déconner, tu aimes t'attribuer la gloire d'une réponse donné par un autre !?
 
Dernière modification par un modérateur:

danielco

XLDnaute Accro
Pour le reste, tant en ce qui concerne le contenu que la forme de ton précédent post :
Essaie :
1. de rester courtois (ne serait-ce que pour respecter la charte de ce forum)
2. de modérer tes propos. On n'a pas gardé les porcs ensemble.
3. de lire ce qui est écrit. Je ne revendique pas la "gloire" de donner une solution (quelle bêtise de le penser). Je cherche seulement à aider le demandeur.

Au plaisir de ne plus te lire. Je ne te répondrai d'ailleurs pas.

Daniel
 
C

Compte Supprimé 979

Guest
Mon pauvre Mosieur
Ptdr.jpg

Au plaisir de ne jamais plus t'aider.... Hop dans mes ignorés, pauvre....
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir @danielco,

dans ta 2ème ligne de code VBA, tu utilises le nom de variable « Var » ;
maintenant, regarde cette image :


Image.jpg


alors même si Var n'est pas un mot-clé de VBA mais un mot-clé d'Excel,
peut-être qu'il y a quand même une interférence gênante entre les 2 ?

je dis bien « peut-être », et à part ça, je n'ai pas d'autre piste. ;)
alors suggestion : si c'est ça, utilise un autre nom de variable.


soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@danielco

j'ai trouvé autre chose : tu as marqué dans l'énoncé : « Erreur 2015 »

or 2015 est le n° d'erreur de la constante xlErrValue ;

et xlErrValue corespond à #VALUE! (dans une cellule de la feuille) ;

donc si c'est ça, vérifie tes données sur la feuille de calcul ! ;)

si c'est toujours pas ça, lis mon post #9 ci-dessus,
si tu l'as pas déjà lu. :rolleyes:


soan
 

danielco

XLDnaute Accro
@danielco

j'ai trouvé autre chose : tu as marqué dans l'énoncé : « Erreur 2015 »

or 2015 est le n° d'erreur de la constante xlErrValue ;

et xlErrValue corespond à #VALUE! (dans une cellule de la feuille) ;

donc si c'est ça, vérifie tes données sur la feuille de calcul ! ;)

si c'est toujours pas ça, lis mon post #9 ci-dessus,
si tu l'as pas déjà lu. :rolleyes:


soan
Il va être temps que je ferme la boutique, par mes yeux finissent par se croiser. Je ne vois pas le rapport entre le post #9 et mon problème, ou alors, ce post a trait aux résultats différents ?
Sinon, mes données ne sont pas sur la feuille. J'utilise deux variables :
VB:
zv_Debut = #4/16/2019#
zv_Fin = Date
toto = Evaluate("=DATEDIF(""" & Format(zv_Debut, "d/m/yyyy") & """,""" & Format(zv_Fin, "d/m/yyyy") & """,""md"")")
Merci de ta persévérance.
Daniel
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Daniel,

Tu as écrit : « Je ne vois pas le rapport entre le post #9 et mon problème »

Dans le code VBA de ton post #11 ci-dessus, il y a :


toto = Evaluate("=DATEDIF(""" & Format(zv_Debut, "d/m/yyyy") & """,""" &
Format(zv_Fin, "d/m/yyyy") & """,""md"")")

Le post #9 contient un lien sur le post #3 de djidji59430 ; as-tu cliqué dessus ?
si oui : djidji a d'abord mentionné une page du support Microsoft concernant
des problèmes connus de l'utilisation de l'argument "md" pour la fonction
DATEDIF() ; puis il a indiqué une façon de contourner un de ces problèmes.

alors bon, c'est vrai que je t'ai fourni ce lien plus comme complément d'infos
sur les problèmes connus de "md" avec DATEDIF() que pour autre chose, en
m'disant qu'ça pourrait peut-être te servir un jour. :)

comme y'a utilisation conjointe de DATEDIF() et "md", j'pensais qu'c'était
valable sur une feuille de calcul et en VBA)


soan
 

danielco

XLDnaute Accro
Bonjour Daniel,

Tu as écrit : « Je ne vois pas le rapport entre le post #9 et mon problème »

Dans le code VBA de ton post #11 ci-dessus, il y a :


toto = Evaluate("=DATEDIF(""" & Format(zv_Debut, "d/m/yyyy") & """,""" &
Format(zv_Fin, "d/m/yyyy") & """,""md"")")

Le post #9 contient un lien sur le post #3 de djidji59430 ; as-tu cliqué dessus ?
si oui : djidji a d'abord mentionné une page du support Microsoft concernant
des problèmes connus de l'utilisation de l'argument "md" pour la fonction
DATEDIF() ; puis il a indiqué une façon de contourner un de ces problèmes.

alors bon, c'est vrai que je t'ai fourni ce lien plus comme complément d'infos
sur les problèmes connus de "md" avec DATEDIF() que pour autre chose, en
m'disant qu'ça pourrait peut-être te servir un jour. :)

comme y'a utilisation conjointe de DATEDIF() et "md", j'pensais qu'c'était
valable sur une feuille de calcul et en VBA)


soan
Effectivement. Je n'avais pas vu ce qui, ce matin, parait évident. C'est exactement l'explication à mon problème.

Merci infiniment.

Daniel
 

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
permettez moi de vous rappelez ce que l'aide dit pour md
Capture.JPG



et donc si je fait un simple test
a oui !!!j'oubliais comparez le long de la date SVP et non son string dans Evaluate vous me ferrez plaisir

donc on teste

VB:
Sub test()
    Dim i&
    For i = 1 To 10
        date1 = CDate(i & "/10/2020")
        date2 = Date    ' donc aujourdh'ui
        Var = Evaluate("=DATEDIF(""" & CLng(date1) & """,""" & CLng(date2) & """,""md"")")
        MsgBox Day(date1) & "  " & Day(date2) & vbCrLf & Var
    Next
End Sub

et désolé de vous le dire mais le résultat est juste si on comprend bien ce qui est dit dans l'aide

demo6.gif


donc la fonction fonctionne tres bien sauf qu'elle a toujours été mal comprise pour l'argument "md"

et pour conclure je dirais qu''elle est utilisable avec "md" pour seulement comparer 2 dates du même mois/année
puisque comme il est clairement dit dans l'aide que "md" fait abstraction des mois années

ps j'ai donné un fichier qui regroupait plusieurs méthodes pour donner la datedif jour,mois,année
si vous aviez pris la peine de le regarder certaines choses auraient été plus claires


en gros !!!

avec md on compare simplement la différence des nombres représentant les jours des deux dates
 
Dernière édition:

Discussions similaires

Réponses
45
Affichages
4 K
Réponses
18
Affichages
2 K
Réponses
18
Affichages
2 K

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390