probleme de date inversée

  • Initiateur de la discussion Nougat
  • Date de début
N

Nougat

Guest
Pour la deuxième fois je viens demander votre aide pour éclairer un peu plus ma lanterne car la je suis dans l'ombre.

Mon problème se situe lorsque j'ouvre un fichier texte séparé par des tabulations avec la fonction 'Workbooks.OpenText Filename:=Fichier_log, DataType:=xlDelimited, Tab:=True'

Excel m'affiche bien le texte dans les differentes colonnes avec la 'A' qui ne contient que des dates au format 'jj/mm/aaaa hh:mm', le probléme vient des dates ayant un jour inférieur ou égale a 12 car le mois et jour s'inversent ce qui est problématique vu que je dois faire des comparaisons de dates.

fichier texte:
...
31/01/2006 17:45
01/02/2006 00:18
...

feuille excel par la macro:
...
31/01/2006 17:45 (affichage formule = 31/01/2006 17:45)
02/01/2006 00:18:00 (affichage formule = 38719,0125)
...

Comment faire pour que l'inversion ne se produise pas lors de l'ouverture du fichier texte par la macro sachant que quand j'ouvre 'à la main' j'obtiens ce que je voudrai, a savoir

feuille excel à la main:
...
31/01/2006 17:45:00 (affichage formule = 38748,7395833333)
01/02/2006 00:18:00 (affichage formule = 38719,0125)
...

J'aimerai si possible que cela se fasse sans modifier chaque cellule mais par une mise en forme 'directe' si possible...

Merci d'avance!
Cordialement.
 

ERIC S

XLDnaute Barbatruc
re

regarde aide opentext

Workbooks.OpenText Filename:=Fichier_log, DataType:=xlDelimited, Tab:=True

il faut je pense ajouter

,fieldinfo:= array(array(1,4),array(2,1....))

par défaut si ce n'est que la première colonne

,fieldinfo:= array(array(1,4)) doit suffire

A+
 
N

Nougat

Guest
J'ai du mal utilisé votre méthode mais cela ne semble pas marcher, tout du moins je n'ai pas vu une évolution a mon problème.
Je vous met 4 lignes de mon fichier log:


31/01/2006 17:44 | xxx | yyy | | | zzz
31/01/2006 17:45 | xxx | yyy | | | zzz
01/02/2006 00:18 | xxx | yyy | | | zzz
01/02/2006 02:41 | xxx | yyy | | | zzz
 
N

Nougat

Guest
et voici le morceau de mon code d'ouverture:


Fichier_log = Application.GetOpenFilename('Sélectionner un FICHIER LOG (*.log), *.log')

If Not Fichier_log = False Then
Workbooks.OpenText Filename:=Fichier_log, DataType:=xlDelimited, Tab:=True, FieldInfo:=Array(Array(1, 4))
Else
Exit Sub
End If
Fichier_log = ActiveWorkbook.Name
Columns('A:A').ColumnWidth = 18
Columns('A:A').Select
Selection.NumberFormat = 'mm/dd/yyyy hh:mm'
 
N

Nougat

Guest
En mettant cette ligne:
Selection.NumberFormat = 'mm/dd/yyyy hh:mm'

j'ai bien le format voulu (01/02/2006 00:18) mais quand je clic dans la case pour récupéré la valeur je m'appercoit que c'est juste une 'mise en forme visuelle' et que la case reste bien avec la valeur '02/01/2006 00:18:00' Grrrrrrr,sm'énerve!

Personne n'a une autre idée qui pourrai marcher ? (ou me dire pourquoi les methodes précédentes n'ont semble t'il pas marcher)

Je desepère, please i need some help :'(
 
N

Nougat

Guest
Merci beaucoup mutzik mais je n'utilise jamais les fonction, je prefererai resoudre mon pb par VBA (c'est surtout que je sais pas manipuler les fonctions :whistle: ).

Comment pourrai-je rajouté ta fonction et que fait elle vraiment?

Ce que je voudrai faire une fois toutes mes date correctement mise en forme c'est une simple condition du genre:

For Each date_trouvé In Range('A:A')
If CDate(date_trouvé) >= CDate(date_spécifié) Then
...
...
End If
next date_trouvé

ou dois-je rajouté ta ligne? :eek:

Encore merci de votre aide
 
N

Nougat

Guest
J'ai recréé un bout de fichier log (quelques lignes mais en vrai il y en a plus de 5000 mais cela ne change rien pour le problème)

31/01/2006 17:44(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| cccccccccccccccccccccc
31/01/2006 17:45(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| ttttttttttttttttttttttttttttttttttt
01/02/2006 00:18(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
01/02/2006 17:54(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| =====================================================
12/02/2006 17:48(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| zzzzzzzzzzzzzzzzzzzzzzzzzzz
12/02/2006 17:48(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
13/02/2006 00:00(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| zzzzzzzzzzzzzzzzzzzzzzzzzzz
13/02/2006 00:00(tab)| xxxxxxxxx(tab)| Info(tab)| (tab)| (tab)| cccccccccccccc


remplacer les (tab) par des tabulations car ceux que je met dans ce message disparaissent.

Essayez de tester et de me corriger, je suis sur que ca doit être quelque chose de tout bête...

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 267
Membres
103 502
dernier inscrit
talebafia