• Initiateur de la discussion Initiateur de la discussion PsiKamel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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.
À +
 
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
 
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
278
Réponses
2
Affichages
462
Réponses
3
Affichages
571
Réponses
3
Affichages
543
Retour