Bonjour,
J'ai longtemps hésité entre le forum VB et celui SQL ... J'espère avoir fait le bon choix

Je pose vite fait mon problème :
Une base SQL Server sur un serveur distant. Une des innombrables tables contient entre autre une date (date d'ouverture d'un dossier). Lorsque je tente d'extraire via VBA cette date, je l'obtiens au format américain (c'est à dire mm/dd/yyyy) dans mon fichier Excel, mais Excel lui, considère le résultat comme un format européen (soit dd/mm/yyyy).
En résumé, j'extrais une date qui est le 07/02/2008 et j'obtiens dans mon fichier 02/07/2008.
J'ai été voir sur le serveur, via un accès TS et l'analyseur de requête : les dates quand je consulte la table sont stockées sous la forme dd/mm/yyyy hh:mm
Je n'ai pas accès au panneau de config du serveur, mais je suppose donc que les paramètres régionaux sont français.
Les paramètres sur mon poste sont français eux aussi.
Lorsque je tente d'extraire à partir de mon fichier Excel :
En VBA donc, via la création d'un aobjet ADO et donc d'un Recordset, ça ne fonctionne plus.
Ce que je fais :
SQL = "SELECT DateOuverture FROM MaTable WHERE Dossier='xxxxx'"
Code d'ouverture du recordset, etc ...
Je lis le contenu de mon recordset : Rs.field("DateOuverture ").value et là, la date est 02/07/2008
J'ai essayé d'appliquer plein de format à mon résultat (entre autre Format("dd/mm/yyyy", rs.field ...), ça ne fonctionne pas. Extraire le mois de mon résultat, mais : month(rs.field...) = 7 et non 2 comme ça devrait l'être.
Par contre, si je modifie ma requête SQL de la façon suivante :
SQL = "SELECT month(DateOuverture) FROM MaTable WHERE Dossier='xxxxx'"
Quand j'interroge le recordset, j'obtiens bien en résultat 2 pour le mois de février.
1° Si quelqu'un pouvait m'expliquer ce mystère, merci
2° Pour résoudre mon pb, je pense qu'il faut que je modifie donc le contenu de ma requête SQL (ce qui explique pourquoi je poste ici plutôt que sur le forum VB)
Je ne peux pas faire
SQL = "SELECT day(DateOuverture),month(DateOuverture),year(DateOuverture) FROM MaTable WHERE Dossier='xxxxx'"
Ca ne m'arrange pas, j'ai fini mon programme, et insérer des colonnes supplémentaires (j'ai 3 dates dans le même cas) me ferait reprendre trop de choses
J'ai bien essayé de faire un day(DateOuverture)+'/'+month(DateOuverture)+"/"+year(DateOuverture) pour reconsituer la date dans un seul champ, mais ça ne fonctionne pas. Sans doute parce que le type de champ est Date/heure et que le résultat de mes fonctions sont des Entiers.
J'ai aussi essayé de bricoler avec des Convert et Cast, mais Convert(datetime,DateOuverture,103) ne fonctionne pas et me sort continuellement un 02/07/2008.
J'avoue que je sèche et n'étant pas très doué en SQL Server (j'apprends sur le tas, aucune formation, donc, vive google et l'aide en ligne), je ne vois pas comment rédiger ma requête pour obtenir ce que je veux.
J'espère n'avoir pas été trop brouillon dans mes explications, et merci d'avance à qui m'aidera à résoudre mon problème.
Molenn