Gestion dates VB Excel

Résolu
booby311 -  
 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"
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    essayes avec ce code

    Selection.NumberFormat = "m/d/yyyy"

    A+
    0
  2. booby311
     
    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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  4. algoplus
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Archi-dessin Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   25
     
    selection.NumberFormat =format(date,"dd/mm/yyyy")
    0
  7. algoplus
     
    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
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  9. Archi-dessin Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   25
     
    salut,
    affecter a la cellule le format suivant, exemple:
    Feuil1.cells(14, 3) = Format$(Date, "dd mm yyyy")
    0
    1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      Salut Archi-dessin,

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

      A+
      0
    2. salut
       
      salut
      0