[Résolu] Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Dut

XLDnaute Nouveau
Bonjour,

Via une macro je construis des critères pour les placer dans des cellules et les utiliser ultérieurement. Voici un exemple :
Code:
ThisWorkbook.Sheets("Critères").Cells(1, 1).FormulaLocal = "=Data!I2>=DATEVAL(""01/03/2012"")"

Avec ma version de MS Excel (2010 FR), ça fonctionne bien : la cellule affiche "FAUX" c'est-à-dire le résultat du test.

Malheureusement avec la version de mon collègue (2007 US), le cellule affiche "#NOM?" ce qui signifie que la formule n'est pas interprétée correctement.:confused:

J'ai essayé avec la ligne suivante mais ça ne change apparemment rien...:(
Code:
ThisWorkbook.Sheets("Critères").Cells(1, 1).FormulaLocal = "=Data!I2>=DATEVALUE(""01/03/2012"")"
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Bonsour®
sur un excel US le parametre .FormulaLocal est le même que .Formula seul
il faut donc ecrire la date au format LOCAL=US (m.d.a)

ThisWorkbook.Sheets("Critères").Cells(1, 1).FormulaLocal = "=Data!I2>=DATEVALUE(""03.01.2012"")"
qui ne marchera pas sur un EXCEL FR ... ! DATEVALUE n'est pas une instruction de feuille LOCALE FR
résultat March 1 2012 sur un excel US

ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATEVALUE(""03.01.2012"")"
resultat 3 janv 2012 sur un EXCEL FR
résultat March 1 2012 sur un excel US


le plus polyvalent étant :
ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATE(2012,3,1)"
1er mars 2012 (FR)
March 1 2012 (US)
 
Dernière édition:

MichD

XLDnaute Impliqué
Re : Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Bonjour Dut et Modeste,

Si tu emploies FormulaLocal pour obtenir une formule dans la feuille de calcul,
Tu dois utiliser le nom des fonctions en Français : DateValue ->Français -> DateVal

La bonne syntaxe avec formulaLocal :
Range("A1").FormulaLocal = "=Feuil2!a1>=DATEVal(""03/01/2012"")"

Si tu veux utiliser le nom des fonctions en anglais, tu dois utiliser Formula
Range("A1").Formula = "=Feuil2!a1>=DATEVALUE(""03/01/2012"")"

À l'ami Modeste, je suis curieux de voir où il a vu la fonction "Date()"
utilisée avec des paramètres comme ceux qui proposent dans cette expression
ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATE(2012,3,1)"
Bien que cela fonctionne, DATE(2012,3,1) est une fonction de la feuille de calcul et
non de VBA. L'équivalent en VBA est DateSerial().

En Conséquence, tel que le suggère l'expression "Formula" il faudrait utiliser "DateSerial"
au lieu de "Date" mais surprise, l'expression "DateSerial n'est pas traduite en français et
en l'occurrence, la cellule affiche la valeur d'erreur #NOM!

Peut-être que le spécialiste des dates a une explication?

Je vais quand même m'en tenir à cette syntaxe :
range("A1").Formula = "=Data!I2>=DATEValue(""2012/12/01"")"
Le format "yyyy/mm/dd" est le seul format DATE universel dans toutes les langues
qu'utilise Excel.

Pour ceux qui lisent l'anglais, il y a ceci à titre de complément :

L'adresse du site Internet de "Ron de Bruin"
ISO Date Representatation and Week Numbering
 
Dernière édition:

Dut

XLDnaute Nouveau
Re : Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Bonjour,

Merci pour vos réponses. Je vais voir si la solution suivante fonctionne chez mes utilisateurs et je reviens vers vous.
Code:
ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATEVALUE(""01/03/2012"")"
 

Modeste geedee

XLDnaute Barbatruc
Re : Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Bonsour®
Bonjour,

Merci pour vos réponses. Je vais voir si la solution suivante fonctionne chez mes utilisateurs et je reviens vers vous.
Code:
ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATEVALUE(""01/03/2012"")"

comme me l'a fait remarquer Denis :cool: avec la complicité de Ron deBruin...
l'utilisation d'un format ISO (année-mois-jour) est recommandé et garant que quelque soit le langage local EXCEL interprete correctement une date :
Code:
ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATEVALUE(""2012-03-01"")"
 

Modeste geedee

XLDnaute Barbatruc
Re : Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Bonsour®
../..
À l'ami Modeste, je suis curieux de voir où il a vu la fonction "Date()"
utilisée avec des paramètres comme ceux qui proposent dans cette expression
ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATE(2012,3,1)"
Bien que cela fonctionne, DATE(2012,3,1) est une fonction de la feuille de calcul et
non de VBA. L'équivalent en VBA est DateSerial()
../..
Peut-être que le spécialiste des dates a une explication?

:confused:
la syntaxe de .formula attend bien en argument une fonction de feuille de calcul et non une expression VBA
:confused:

j'avoue ne pas saisir cet aparté ...
 

MichD

XLDnaute Impliqué
Re : Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Tu as raison, j'oubliais que DATE(Year,Month,Day) existait aussi comme fonction de la feuille de calcul
dans la version anglaise comme dans la version française. Désolé.
 

Dut

XLDnaute Nouveau
Re : Formule saisie avec VBA n'affiche pas le même résultat dans la cellule FR/US

Bonjour,

Merci pour vos réponses. Je vais voir si la solution suivante fonctionne chez mes utilisateurs et je reviens vers vous.
Code:
ThisWorkbook.Sheets("Critères").Cells(1, 1).Formula = "=Data!I2>=DATEVALUE(""01/03/2012"")"

Bonjour,
Je vous confirme que cette solution à résolu mon problème.
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu