conversion date avec macro

breakers

XLDnaute Junior
Bonjour à tous !!

je vous expose mon problème :

dans le fichier, la colonne L représente ce que j'obtiens après extraction d'un autre logiciel.

afin d'obtenir une date cohérente, j'ai mis en macro "le remplacer par" comme cela sa converti automatiquement

Dec en 12, Jan en 01 etcc

sauf que comme vous pouvez le constater sa bug (résultat colonne M et le départ colonne L), en effet une partie reste en format texte est du coup avec la bonne date mais inutilisable car pas date francaise normal, et le reste met le mois en premier...

donc comment faire ?

merci d'avance a ceux qui pourront m'aider
 

Pièces jointes

  • essai.xlsm
    34.8 KB · Affichages: 40
  • essai.xlsm
    34.8 KB · Affichages: 37
  • essai.xlsm
    34.8 KB · Affichages: 39

camarchepas

XLDnaute Barbatruc
Re : conversion date avec macro

Bonjour ,

Comme ceci peut être

Code:
Sub trans()
Dim tourne As Long
Dim mois As String
Dim Inter As String
For tourne = 3 To Range("L" & Rows.Count).End(xlUp).Row
 Inter = Split(Range("l" & tourne), "-")(1)
 mois = InStr(1, "__JanFebMarAprMayJunJulAugSepOctNovDec", Inter) / 3
 Range("N" & tourne) = CDate(Replace(Range("L" & tourne), "-" & Inter & "-", "/" & mois & "/"))
Next tourne
End Sub
 

camarchepas

XLDnaute Barbatruc
Re : conversion date avec macro

OK ,
alors
le for pour la boucle incrémentant la variable Tourne avec un pas de 1, commençant à la ligne 3 et terminant à :
la derniere ligne contenant une valeur

split(chaine,caractere )(occurence) permet de découper une chaine
ex : split("123-456-789")(0) renvoie 123, split("123-456-789")(1) renvoie 456 , etc
donc avec le split l'on charge la variable Inter avec la partie littérale Dec

Ensuite avec instr l'on recherche la position du nom du mois dans la chaine, le décalage avec les _ est fait pour que le J de Jan tombe en 3 eme position dans la chaine globale des mois le pas est ensuite constant , donc en divisant par 3 l'o, obtient le numero du mois

Aprés il ne reste plus qu'a charger la valeur dans la cellule désirée ou tourne désigne la ligne en cours .

Le cdate converti en date la chaine de caractere , et le replace permet de remplacer le segment de chaine nom du mois par son équivalent numérique .

Le next reprend la boucle en incrementant de un jusqu'a ce que la limite max soit atteint .

Voilà , j'espére ne rien n'avoir oublié .
 

Staple1600

XLDnaute Barbatruc
Re : conversion date avec macro

Bonsoir à tous


Une solution par formule
Code:
=DATE(DROITE(L3;4)*1;EQUIV(STXT(L3;4;3);{"jan";"feb";"mar";"apr";"may";"jun";"juil";"aug";"sep";"oct";"nov";"dec"};0)*1;GAUCHE(L3;2)*1)
à recopier vers le bas et en appliquant le format : mm/jj/aaaa
 

Discussions similaires

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux