Utilisation des dates entre VB6 et Excel

Signaler
Messages postés
48
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
22 juin 2005
-
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
-
Bonjour,

il m'arrive très souvent d'avoir besoin de réaliser des éditions sous Excel avec VB6. J'ai un soucis pour la gestion des dates.

J'ai 2 cas :

- j'ai une variable date auquel j'affecte une date (ex: 29/06/2004). Si je veux afficher cette valeur sous excel j'utilise le code suivant:
xlsheet.range("A1").value = madate

dans ce cas là j'ai bien "20/06/2004" qui s'affiche sous excel.

- l'inconvénient du code ci-dessus survient quand on a par exemple 10 000 lignes de dates à copier à la suite. Faire une boucle qui répéte 10 000 fois le code est extrêmement lent donc j'utilise un tableau dans lequel je pré rempli mes 10 000 lignes que je copie d'un coup sur ma feuille Excel. Très bien:
xlsheet.range("A1:A10000").value = monTableauDate

l'inconvénient dans ce cas est que la date n'est plus affiché de la manière que je le veux, il m'affiche "06/20/2004" (format anglais).

Pour remédier à ça je tente de faire :
xlsheet.range("A1:A10000").NumberFormat = "dd/mm/yyyy"

que je le fasse avant, après ou avant et après avoir copier le tableau, rien ne se passe et la conversion ne se fait pas.

Comment gérer vous les dates quand vous les injecter depuis VB6 vers Excel.

ps : J'utilise Excel 2002 mais le code doit fonctionner sous 2000 et 97 aussi

Merci

3 réponses

Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

salut,
A vrai dire je ne sais pas d'ou peut provenir ton pb, mais je peux imaginer que ca vient du type de données que tu as dans ton tableau, c'est peut être la solution, il faut tester

peut etre du style variant dans le tableau et qu'il faudrait un String a la place ou inversement, ou bien même un autre type

dim monTableauDate() as variant ou dim monTableauDate() as string

bonne prog
liquide
Messages postés
48
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
22 juin 2005

En fait j'ai simplifié mon explication mais dans mon code j'ai un tableau à plusieurs dimensions et il est de type variant.

Quand j'affecte les valeurs à mon tableau je les affecte donc au format qui leur correspond. Par exemple pour une date :

MonTableau(1,1) = "toto"
MonTableau(1,2) = madate


où la variable "madate" est de type date.
Là dessus y a pas d'erreur sous VB6 avec l'espion je vois que tout est correct et que tout est enregistré en format date dans le tableau et là aucune erreur de date. Le problème intervient quand je copie cette élément du tableau dans ma feuille Excel
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
le problème viens de ton tableau, si tu lui envoi des date, fait un tableau de date

utilise jamasi un type variant, c'est gros, lent et pas optimiser pentoute

au pire, prend un tableau de string

tu peux aussi utiliser la fonction format(tableau(i,j),"dd/mm/yyyy")