Transformer un nombre en date

Hypokhampe

XLDnaute Nouveau
Bonjour,

Je m'arrache les cheveux pour trouver une macro pour convertir des données.

J'extrais des données d'une application afin d'obtenir un listing nettoyé sur Excel. J'ai réussi à obtenir ce que je voulais jusque là.

Le hic :

Dans la dernière colonne de mon tableau, il y a la date de saisie effectuée dans l'application. Le format affiché est jjmmaa (ex: 120908). Je souhaite convertir ce nombre reflétant une date en date réelle (pour que Excel considère cette donnée comme étant une date et nom un nombre à 6 chiffres). Si je convertis ce nombre au format date, il m'envoie au mois d'aout de l'année 2203 !

Existe-t-il un moyen d'insérer par macro un slash de chaque côté de ce qui correspond dans mon nombre à mm (le mois quoi) ?

J'ai épuisé toutes mes connaissances et ressources sur le sujet... J'en appelle à votre aide...

Vous sauveriez un être en perdition dans les tourments du VB...

En espérant vous lire bientot...

HK
 

Raja

XLDnaute Accro
Re : Transformer un nombre en date

Re tototiti2008,

OK. Pas de soucis. J'ai simplement apporté une solution à un problème donné. Car, dans le sujet on nous dit que les données sont sous forme de "jjmmaa". J'ai considéré que la formule Date est largement suffisante dans ce contexte. Personnellement, je n'ai aucune difficulté à accepter ou de comprendre les critiques de la communauté quand celles-ci sont faits de façon objective.
 
Dernière édition:

sousou

XLDnaute Barbatruc
Re : Transformer un nombre en date

Tu peux essayer cela
cela fonctionne avec format jmmaaaa ou jjmmaaa
Function d(a)
an = Right(a, 4)
m = Right(Left(a, Len(a) - 4), 2)
j = Left(a, Len(a) - (Len(an) + Len(m)))
d = CDate(j & "/" & m & "/" & an)
End Function
 

Hypokhampe

XLDnaute Nouveau
Re : Transformer un nombre en date

Voilà le code final obtenu, je suis sûr qu'on peut l'alléger, mais en tout cas ça marche et ça accélère mon travail. Merci à toutes et tous pour votre aide, ce forum est super !

Sub Macro5()
'Préparation de la colonne pour la formule
Range("H1").Select
ActiveCell.FormulaR1C1 = "Datum"
'Intégration et copie de la formule
Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]>0,DATE(20&RIGHT(RC[-1],2),MID(RC[-1],3,2),LEFT(RC[-1],2)),"""")"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H500"), Type:=xlFillDefault
'Forcer le calcul sur la sélection
Range("H2:H500").Select
Calculate
'Copie dans colonne à droite de la colonne des résultats (valeurs uniquement)
Columns("H:H").Select
Selection.Copy
Columns("I:I").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "m/d/yyyy"
'Elimination des 2 colonnes précédemment utilisées
Columns("G:H").Select
Range("H1").Activate
Selection.Delete Shift:=xlToLeft
'Retour au point d'origine de la feuille
Range("A1").Select
End Sub
 

wilfried_42

XLDnaute Barbatruc
Re : Transformer un nombre en date

re:

une macro ???

Code:
Sub transforme()
     Dim cel as range
     for each cel in range[COLOR="Red"]("A1:A"[/COLOR] & range("A65536").end(xlup).row)
          cel.value = datevalue("20" & right(cel.text,2) & "/" & mid(cel.text,3,2) & "/" & left(cel.text,2)
          cel.NumberFormat = "D"
     next
end sub

cette macro transforme la colonne A complete, à modifier si necessaire la partie en rouge
 

myDearFriend!

XLDnaute Barbatruc
Re : Transformer un nombre en date

Bonsoir Hypokhampe, wilfried_42, tototiti2008, Raja, sousou,

Dans la série "on peut peut-être éviter une boucle" (mon jeu préféré ;) ), à tester pour la colonne A :
Code:
    Columns("A").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, FieldInfo:=Array(0, 4)
Comme pour les camarades, cela suppose que les données de départ sont toujours sur 6 caractères.

Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 538
Messages
2 089 403
Membres
104 159
dernier inscrit
isbouk