Problème de dates

PsiKamel

XLDnaute Nouveau
Bonjour,

j'ai cherché un peu partout sur le web mais sans trouver de réponses satisfaisantes...

Mon cas :
J'extrais des données d'un outil de gestion de ticket, mais malheureusement codé n'importe comment, les dates ont des formats différents en fonction de la période :
- parfois : dd/mm/yyyy hh:mm:ss (ce qui me va)
- parfois : dd mois. yyyy hh:mm:ss (ce qui ne me va pas)

La solution parait simple, remplacer les 12 mois de l'année écrit en lettre par l'équivalent en chiffre :
Code:
'janvier
    Cells.Replace What:=" janv. ", Replacement:="/01/", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
        ReplaceFormat:=True
'Février
    Cells.Replace What:=" févr. ", Replacement:="/02/", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
        ReplaceFormat:=True

etc.......

Sauf que... en résultat, j'obtiens des dates non reconnues (j'en ai fait mon affaire), mais surtout la transformation de certaines dates (mais pas toutes) en format anglais (mm/dd/yyyy hh:mm:ss)
Ais-je un moyen d'empêcher ce reformatage ?

Merci d'avance de vos réponses.
 

PsiKamel

XLDnaute Nouveau
Re : Problème de dates

Voilà un fichier où je n'ai extrait que quelques colonnes.

DateEval ne fonctionne pas la plupart du temps sur le fichier source

(et merci pour votre réactivité !)
 

Pièces jointes

  • Test.xlsx
    29.2 KB · Affichages: 27
  • Test.xlsx
    29.2 KB · Affichages: 31

Dranreb

XLDnaute Barbatruc
Re : Problème de dates

Sur votre exemple, si, ça fonctionne à tout les coups sur la colonne F
Enfin plus exactement, en AJ2 :
Code:
=SI(ESTTEXTE(F2);DATEVAL(SUBSTITUE(F2;".";""))+TEMPSVAL(SUBSTITUE(F2;".";""));F2)
Mais il y a aussi des cellules vides qu'il faut laisser vides. Alors je préfère peut être le faire en vba.
À +
 

Dranreb

XLDnaute Barbatruc
Re : Problème de dates

De mon coté j'ai mis ça dans le module d'une nouvelle feuille :
VB:
Option Explicit

Private Sub Worksheet_Activate()
Dim T(), L&, C&
T = Feuil1.UsedRange.Value
For L = 2 To UBound(T, 1): For C = 1 To UBound(T, 2)
   If VarType(T(L, C)) = vbString Then T(L, C) = CDate(Replace(T(L, C), ".", ""))
   Next C, L
Me.Cells.Clear
Me.Cells(2, "A").Resize(UBound(T, 1) - 1, UBound(T, 2)).NumberFormat = "m/d/yyyy h:mm"
Me.Cells(1, "A").Resize(UBound(T, 1), UBound(T, 2)).Value2 = T
End Sub
 

PsiKamel

XLDnaute Nouveau
Re : Problème de dates

J'ai à peu près la même solution. Pour ne pas toucher mes données sources, en fait, pour manipuler mes cellules et comparer mes dates, je vais utiliser CDate(Replace(Cells(i, 16), ".", "")) à la place de la valeur de la cellule elle même.
J'ai essayé sur une cellule, ça fonctionne, maintenant, je vais étendre à l'ensemble de mes macros !

Merci beaucoup

Côté pratique, c'est ma première dans ce forum, est-ce que je peux marquer quelque part que mon problème est résolu ?
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote