Gestion dates VB Excel
Résolu
booby311
-
salut -
salut -
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"
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:
- Gestion dates VB Excel
- Nombre de jours entre deux dates excel - Guide
- Liste déroulante excel - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
8 réponses
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!
@+
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!
@+
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+
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+
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....
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....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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+
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+