Gestion dates VB Excel

Résolu/Fermé
booby311 - 24 juil. 2008 à 14:09
 salut - 27 déc. 2011 à 17:04
Bonjour,

J'ai un souci dans une macro excel.
J'extrais des données d'une base de données que je colle dans excel et une macro les traite ensuite.

Le problème que j'ai est que cette extraction donne les dates au format dd.mm.yy
J'aimerais les avoir au format dd/mm/yyyy

Je vois deux problème de mon côté...

Le premier est que l'année est représentée par 2 chiffres au lieu de 4. Les deux premiers chiffres doivent être 20 pour avoir une date au format dd/mm/20yy

Ensuite j'ai l'impression qu'excel ne comprend pas que les 2 premiers caractères sont des jours et non des mois. pour toutes les dates dont les jours sont supérieur à 12, le résultat n'est pas reconnu comme un date...

voici le code que j'ai... Si vous avez un conseil je suis preneur!


Range("K2").Select
Range(selection, selection.End(xlDown)).Select
selection.NumberFormat = "dd.mm.yy"
selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
selection.NumberFormat = "dd/mm/yyyy"
A voir également:

8 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
24 juil. 2008 à 14:36
Salut,

essayes avec ce code

Selection.NumberFormat = "m/d/yyyy"

A+
0
J'ai essayé ca me donne le même problème:
pour une date initialement "06.06.08" le résulat est "06/06/2008" donc parfait de ce côté
par contre pour un date initialement "23.06.08" le résultat est "23/06/08" et excel ne le reconnaite pas comme date...

Tu as une autre idée?

Merci en tout cas de te pencher sur ce cas!

@+
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
24 juil. 2008 à 15:07
Ta cellule doit être déclaré en texte ou autre,

mets un exemple de ton fichier sur le forum avec ce lien que l'on regarde cela de plus prêt

https://www.cjoint.com/

A+
0
après de gros soucis sur les dates ou le jour est supérieur à 12, des essai avec datval(), j'ai trouvé ça.

Range("K2").Select
Range(Selection, Selection.End(xlDown)).Select
For Each c In Selection.Cells
c.Value = Mid(c, 1, 2) & "/" & Mid(c, 4, 2) & "/20" & Mid(c, 7, 2)
Next
Selection.NumberFormat = "dd/mm/yyyy"
Selection.HorizontalAlignment = xlRight

Si ca peut t'aider....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Archi-dessin Messages postés 270 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 28 décembre 2009 25
24 juil. 2008 à 16:37
selection.NumberFormat =format(date,"dd/mm/yyyy")
0
selection.NumberFormat =format(date,"dd/mm/yyyy") ne marche pas (ou je n'ai pas su?)

alors j'ai fait un mix:

Range("K2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
For Each c In Selection.Cells
c.Value = Format(c.Value, "dd/mm/yyyy")
Next
Selection.HorizontalAlignment = xlRight

l'alignement (a droite ou à gauche) est nécessaire car les fameuses dates avec jours > 12 sont alignées à gauches tandis que les autres le sont à droite
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
24 juil. 2008 à 20:55
Sur mon post 3 je proposais qu'un exemple du problème soit mis sur le forum, je pense qu'il y a mauvaise saisie de la date au départ ce qui est interprété par excel comme du texte.
Si on saisie 06/05/08 par exemple et que l'on applique dans le code macro
Selection.NumberFormat = "m/d/yyyy"
il n'y a aucun problème.
Par contre si il est saisie 06.05.08 la macro ne modifie pas cette saisie qui est considérée comme du texte.
Les séparateurs de date étant / si l'on souhaite qu'ils soient remplacé par un point il convient de modifier les paramètres ce qui risque poser d'autre problèmes

A+
0
Archi-dessin Messages postés 270 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 28 décembre 2009 25
24 juil. 2008 à 22:18
salut,
affecter a la cellule le format suivant, exemple:
Feuil1.cells(14, 3) = Format$(Date, "dd mm yyyy")
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
24 juil. 2008 à 22:22
Salut Archi-dessin,

ne t'affole pas plusieurs discutions sont ouvertes sur ce thème par booby311

A+
0
salut
0