Difference de typage cellule excel

Résolu
SalimSK Messages postés 3 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 10 juin 2005 - 10 juin 2005 à 12:44
SalimSK Messages postés 3 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 10 juin 2005 - 10 juin 2005 à 15:42
Salut,

Je fais tourner une macro sous excel sur 2 pc (meme version excel) sous XP:
Sur le premier ca marche super bien, alors que sur le second la meme macro plante sur une "Type mismatch" concernant une date.
En regardant plus pres le "typage" sur le premier pc (celui qui marche) la cellule concernee est "Variant/date", alors que sur le second le type de la cellule est "Variant/String".
Comment cela est -il possible que le type de la cellule soit different vu que je travail sur le meme fichier sur les 2 pc???? Auriez vous des idees qui me permettraient de resoudre ce probleme?

Merci.

4 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
10 juin 2005 à 14:57
Je n'ai rien trouvé d'autre que de faire une fonction qui aille rechercher le format en cours dans la base de registre. Si qqn connait une API qui permet d'y accéder directement ....

Option Explicit


Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
"RegOpenKeyExA" (ByVal hKey As Long, _
ByVal lpSubKey As String, ByVal ulOptions As Long, _
ByVal samDesired As Long, phkResult As Long) As Long


Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long


Public Const HKEY_CURRENT_USER = &H80000001
Public Const KEY_ALL_ACCESS = &H3F


Public Function getRegSettings() As String
Dim lKey As Long
Dim li_Result As Long
Dim lsValueName As String
Dim lsData As String
Dim ll_Longueur As Long
Dim Result As Long
lsData = Space(2400)
ll_Longueur = Len(lsData)
lsValueName = "sShortDate"
li_Result = RegOpenKeyEx(HKEY_CURRENT_USER, "Control Panel\International", 0, KEY_ALL_ACCESS, lKey)
Result = RegQueryValueEx(lKey, lsValueName, 0, 1, lsData, ll_Longueur)
Call RegCloseKey(lKey)
lsData = Left$(lsData, ll_Longueur)
If Right$(lsData, 1) = Chr$(0) Then
lsData = Left$(lsData, Len(ll_Longueur) - 1)
End If
getRegSettings = Trim(lsData)
End Function
3
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
10 juin 2005 à 13:18
Je dis ca au feeling :
C'est peut être un pb au niveau des parametres regionaux du PC :
Tu saisis 24/01/2005
Si le format de date du 1e PC est dd/mm/yyyy, il va l'interpréter directement en Date
Si le format de date du 2e PC est mm/dd/yyyy, ce n'est pas une date valide, donc il l'interpréte en String.
0
SalimSK Messages postés 3 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 10 juin 2005
10 juin 2005 à 13:46
C'est exactement ca!!!
Il y a une difference regional entre les 2 pc, le 1er est en format Americain, le 2eme en Francais.
Je te remercie.
Est ce que tu sais s'il a un moyen de tester dans mon code les parametres regionaux pour ne pas avoir à modifier mes settings?
(Je te cache pas que je prefere mes parametres Francais!).
0
SalimSK Messages postés 3 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 10 juin 2005
10 juin 2005 à 15:42
Merci Beaucoup.
0
Rejoignez-nous