Problème de format date lors de l'ouverture de plusieurs fichier

renoncef - 19 nov. 2012 à 23:42
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 nov. 2012 à 09:47
Bonjour,

J'ai écrit une macro (dans Excel 2002) qui ouvre chaque fichier excel présent dans un dossier.

Sur le 1er fichier tout ce passe bien, a la fin du traitement le fichier est déplacé sans être enregistré.

Le problème est lors de l'ouverture du 2éme fichier, j'obtiens des dates sous forme "41215".

Si je stop la macro, referme le fichier (sans enregistrer), et relance la macro j'ai bien des date sous la forme "02/12/12". Mais il y a une erreurs sur le fichier suivant.

Avez vous une idée d'où cela peut provenir ?

La même macro lancée avec Excel 2007 ne pose pas de problème changement de date dans les fichiers.

Extrait du debut de la macro :

"Dim FSO As New Scripting.filesystemobject
Dim Fichier As Scripting.File
Dim AppExcel As Excel.Application
Dim Traitement As Boolean
Dim TraitementTotal As Boolean

Application.ScreenUpdating = False

Set DossierSource = FSO.GetFolder("D:\SaisieOleron")
Set AppExcel = CreateObject("Excel.application")
Traitement = False
TraitementTotal = False

For Each Fichier In DossierSource.Files

Workbooks.Open Fichier


Merci de votre aide.

Salutations

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 nov. 2012 à 09:47
Salut

Note que tu fais du VBA, pas du .Net (catégorie de la question)

"une macro ... qui ouvre chaque fichier excel présent dans un dossier"
Donc les fichiers et leurs noms existent déjà.

"a la fin du traitement le fichier est déplacé sans être enregistré."
Oups. Va falloir m'expliquer comment tu fais ce tour de magie.

Soit précis dans tes formulations.
"déplacer" signifie que le fichier change de répertoire, mais comme tu dis faire un traitement, il est donc modifié.

Les dates et les cellules :
Sous Excel, les dates n'existent que sous forme d'un chiffre de type Double.
En réalité, c'est l'affichage de la date qui fait que l'on peut lire une date sous forme littérale (ou autre).
Le fait que tu lises 41215 peut signifier que tu ne précises pas le format de lecture.
Exemple :
Range("A1") : Va te fournir le contenu de la cellule A1 mais comme rien n'est précisé, il te renvoie la .Value
Voir la lecture complète avec les trois formats :
Range("A1").Value
Range("A1").Value2
Range("A1").Text
Tu verras que, sur une cellule renfermant une date, les résultats sont complètement différents.

PS : Quand tu colles du code, utilise la coloration syntaxique (3ème icone à droite) = plus facile à lire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous