Date stockée dans un Array variant, une fois comprise en US, une fois en FR

Charly88

XLDnaute Occasionnel
Bonjour, encore et toujours les sempiternels problèmes liés au format de dates US, et là j'y perds mon latin et mon english.
Je n'ai pas vraiment espoir que quelqu'un puisse m'apporter une solution, je crains que ça ne soit une contrainte liée aux arrays mais sait-on jamais avec les Mac Gyver bienfaiteurs de ce forum...

Au départ, j'ai le 1er février 2013 en 8è position dans un tableau array : tTabInfo(8, 1)
L'array n'a pas de type défini et est donc variant, il contient pas mal de textes et quelques dates.
Je suis moi-même en paramétrage régional Français, ma cellule est format "dd/mm/yy" même si cela n'aucune réelle importance.


Je colle cette date en bloc avec d'autre info sur une ligne :
.Cells(i + 1, 1).Resize(UBound(tTabInfo, 2), UBound(tTabInfo, 1)).Value = Application.Transpose(tTabInfo)
Debug.Print Month(.Cells(i + 1, 8).Value)

= 1


Puis je tente de la colle seule, d'abord avec un cdate puis carrément sans et de manière inexplicable, ça fonctionne :
.Cells(i + 1, 8).Value = tTabInfo(8, 1)
Debug.Print Month(.Cells(i + 1, 8).Value)

= 2

Alors c'est très joli mais si j'utilise les arrays avec une copie en bloc, vous vous doutez que c'est pour aller vite, pas pour coller cellule par cellule.
La seule solution "facile" que je vois, c'est de ne pas régler le problème mais de tricher en inversant mois et jour avec :
tTabInfo(8, 1) = Format(CDate(tTabInfo(8, 1)), "mm/dd/yy")
.Cells(i + 1, 1).Resize(UBound(tTabInfo, 2), UBound(tTabInfo, 1)).Value = Application.Transpose(tTabInfo)
Debug.Print Month(.Cells(i + 1, 8).Value)

= 2


Mais c'est sale, je n'aime pas.
 

Efgé

XLDnaute Barbatruc
Re : Date stockée dans un Array variant, une fois comprise en US, une fois en FR

Bonjour Charly88

Le problème viens non pas de l'Array mais du transpose.

Essai comme ceci:
VB:
.Cells(i + 1, 1).Resize(UBound(tTabInfo, 2), UBound(tTabInfo, 1)).FormulaLocal = Application.Transpose(tTabInfo)

Cordialement
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Date stockée dans un Array variant, une fois comprise en US, une fois en FR

Bonjour.
Si ça ne résout pas cette saloperie de bogue, convertir en texte avec Format(LaDate, "dd mmm yyyy")
Avec plus de deux "m" pour qu'il soit obligé d'appliquer les lettres pour le mois, pas le choix…
Ce n'est pas que je sois fan du transtypage assumé en date après, mais là…
 

ChTi160

XLDnaute Barbatruc
Re : Date stockée dans un Array variant, une fois comprise en US, une fois en FR

Bonsoir Charly88
Bonsoir le Fil
Bonsoir le Forum

je ne suis pas sur d'avoir tout compris Lol
mais voici ce que j'ai fait pas plus tard qu’aujourd’hui , pour régler mon problème d'inversion de Jour/Mois pour les dates transposées qui étaient avant le 13 du Mois .
a voir donc
Dans une des procédures sur lesquelles j’ai travaillé et ou j’ai rencontré le problème d’inversion de Jour/mois .
J’ai fais ainsi(à tester )
je transpose le tableau a partir de la Cellule A2
.Cells(2, 1).Resize(UBound(Tab_Recup, 2) + 1, UBound(Tab_Recup, 1)) = Application.Transpose(Tab_Recup)

Puis ensuite je formate la colonne 3 au format anglo-saxon

.Columns(3).NumberFormat = "mm/dd/yyyy"

Et ainsi je n’ai plus eu de problème de mois inversé avec les dates avant le 13 du mois (a tester chez vous)

Bonne fin de Soirée
Amicalement
Jean marie
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Date stockée dans un Array variant, une fois comprise en US, une fois en FR

Bonsoir,

Attention! Problème d'inversion jour/mois pour les dates avec versions < à 2007

Avec Value2, les dates ne sont pas inversées (Laeticia90)

[A1].Resize(UBound(a, 1), UBound(a, 2)).Value2= a

JB
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 457
Membres
103 217
dernier inscrit
LoshR7