IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Format( DATE, "dd/mm/y y y y") [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Par défaut Format( DATE, "dd/mm/y y y y")
    Bonjour à tous,

    Mon problème est que je n'arrive pas à afficher une date avec le format "dd/mm/yyyy" (avec les 0 devant les jours et mois <10)

    J'ai la ligne suivante dans mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B" & j).Value = Format(DateSerial(Left(RanData(i, 2).Value, 4), Mid(RanData(i, 2).Value, 5, 2), Mid(RanData(i, 2).Value, 7, 2)), "dd/mmm/yyyy")
    mes data sont (une seule colonne):

    20140304 125217000
    20140303 224015000
    20140303 231542000

    et pourtant les dates que j'obtient sont au format suivant:

    3/4/2014
    3/3/2014
    3/3/2014

    lorsque je change "dd/mm/yyyy" pour "ddd/mmm/yyyy" ou "dddd/mmmm/yyyy" j'obtient respectivement:

    Tue/Mar/2014 et Tuesday/March/2014
    Mon/Mar/2014 Monday/March/2014
    Mon/Mar/2014 Monday/March/2014

    d'où mes deux questions:
    1) Comment puis-je faire pour avoir le format dd/mm/yyyy
    2) Pourquoi est ce que je perds l'info du jour en "ddd/mmm" et "dddd/mmmm" ?


    Merci par avance,
    YanBos

    Ps: je précise que je me suis inspiré de ça: http://mhubiche.developpez.com/vba/f...ions/datetime/

  2. #2
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B" & j).Value = CDate(Left(randata(i, 2).Value, 4) & "/" & Mid(randata(i, 2).Value, 5, 2) & "/" & Mid(randata(i, 2).Value, 7, 2))

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Par défaut
    Je viens de tester et ça ne fonctionne pas non plus

    Je viens de faire un fichier sur les résultats que j'obtenais en fonctions des différentes méthodes, je le joins ainsi que mon fichier de test si jamais vous avze le temps d'y jeter un coup d'oeil !


    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    Sub GetReasonCode2()
     
    Dim WkData As Object
    Dim WkConsolidate As Object
    Dim ShData As Object
    Dim RanData As Range
     
    Dim i As Integer
    Dim j As Integer
     
    j = 3
     
    Set WkConsolidate = ActiveWorkbook
    Set WkData = Workbooks("WkTest.xls")
    Set ShData = WkData.Worksheets(1)
    Set RanData = ShData.Range("A1:I" & ShData.Range("I1").End(xlDown).Row)
     
    For i = 1 To RanData.Rows.Count
        If Left(RanData(i, 5).Value, 4) = "AZAL" Then
        Range("B" & j).Value = CDate(Left(RanData(i, 2).Value, 4) & "/" & Mid(RanData(i, 2).Value, 5, 2) & "/" & Mid(RanData(i, 2).Value, 7, 2))
        j = j + 1
        End If
    Next i
     
    j = 3
     
    For i = 1 To RanData.Rows.Count
        If Left(RanData(i, 5).Value, 4) = "AZAL" Then
        Range("C" & j).Value = Format(DateSerial(Left(RanData(i, 2).Value, 4), Mid(RanData(i, 2).Value, 5, 2), Mid(RanData(i, 2).Value, 7, 2)), "d/m/yyyy")
        j = j + 1
        End If
    Next i
     
    j = 3
     
    For i = 1 To RanData.Rows.Count
        If Left(RanData(i, 5).Value, 4) = "AZAL" Then
        Range("D" & j).Value = Format(DateSerial(Left(RanData(i, 2).Value, 4), Mid(RanData(i, 2).Value, 5, 2), Mid(RanData(i, 2).Value, 7, 2)), "dd/mm/yyyy")
        j = j + 1
        End If
    Next i
     
    j = 3
     
    For i = 1 To RanData.Rows.Count
        If Left(RanData(i, 5).Value, 4) = "AZAL" Then
        Range("E" & j).Value = Format(DateSerial(Left(RanData(i, 2).Value, 4), Mid(RanData(i, 2).Value, 5, 2), Mid(RanData(i, 2).Value, 7, 2)), "ddd/mmm/yyyy")
        j = j + 1
        End If
    Next i
     
    j = 3
     
    For i = 1 To RanData.Rows.Count
        If Left(RanData(i, 5).Value, 4) = "AZAL" Then
        Range("F" & j).Value = Format(DateSerial(Left(RanData(i, 2).Value, 4), Mid(RanData(i, 2).Value, 5, 2), Mid(RanData(i, 2).Value, 7, 2)), "dddd/mmmm/yyyy")
        j = j + 1
        End If
    Next i
     
    MsgBox "Done"
    End Sub
    Ciao
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Avec la fonction "Text" d'Excel (WorksheetFunction) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Test()
     
        Dim LaDate As Date
     
        LaDate = 41702
     
        MsgBox Application.WorksheetFunction.Text(LaDate, "dd/mm/yyyy")
     
    End Sub
    Hervé.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Par défaut
    Même résultat, j'arrive pas à comprendre pourquoi !

    Du coup j'ai prédéfini manuellement le format de ma colonne B et maintenant ça fonctionne quelque soit la méthode...

    Merci pour votre aide,
    YanBos

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par YanBos Voir le message
    Même résultat, j'arrive pas à comprendre pourquoi !
    C'est que le format de la cellule est au format "Standard".

    Citation Envoyé par YanBos Voir le message
    Du coup j'ai prédéfini manuellement le format de ma colonne B et maintenant ça fonctionne quelque soit la méthode...
    C'était la seule solution que tu peux obtenir également par VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Columns(1).NumberFormat = "dd/mmm/yyyy"
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("B" & j).Value = DateSerial(Left(RanData(i, 2).Value, 4), Mid(RanData(i, 2).Value, 5, 2), Mid(RanData(i, 2).Value, 7, 2))
    sans le Format que tu mettais car Format ne donne pas une valeur de type DATE. Il donne une valeur de type STRING (Texte). Et il faut une valeur de type DATE pour obtenir une date.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Format date : y'a forcément plus simple...
    Par ZERS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/12/2004, 15h28
  2. Transformation en format Date
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/11/2004, 16h20
  3. Tester un format date
    Par Tapioca dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2004, 10h18
  4. interfaces Access et format Date
    Par say dans le forum InterBase
    Réponses: 21
    Dernier message: 10/05/2004, 17h24
  5. Format date
    Par cochet dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2004, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo