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 :

Reformatage de 2 types de dates dans une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut Reformatage de 2 types de dates dans une colonne
    Bonjour a tous,

    J'ai une colonne de dates ou les dates sont (apres import d'un fichier texte) ecrites selon deux formats:
    - soit 16/01/2008 00:00:00
    - soit 38413

    Mon but est de reformater via vba pour arriver a un format du type 16-Jan-08.

    J'ai un début de code pour le premier cas:

    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
         Dim cell As Range, jour As String, mois As String, an As String
    For Each cell In Range("A2:A" & Range("A65536").End(xlUp).Row)
     
    If Len(cell) = 19 Then
     
     jour = Val(Left(cell, 2))
         mois = Val(Mid(cell, 5, 2))
         an = Val(Mid(cell, 7, 4))
         cell = Format(DateSerial(an, mois, jour), "dd-mmm-yyyy")
     
    End If
     
    If Len(cell) = 5 Then
     
    End If
     
     
    Next
    qui ne marche meme pas pour le premier type...

    et je ne vois pas comment faire pour l'autre format

    Pourriez-vous me guider?
    Merci d'avance !

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut
    Bonjour,

    Cela devrait marcher et même plus simplement avec les 2 types :

    Range("A" & i) = Format(Range("A" & i).value, "dd-mmm-yyyy")

    Par contre, je me demande s'il ne faut pas avoir les macros complémentaires pour que Format fonctionne.
    J'ai déjà vu des postes où cela ne marchait pas et je sais + pquoi...

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut
    Merci pour ton idée !

    Je viens d'insérer ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim i As Integer
     
        For i = 2 To 2000
        Range("A" & i) = Format(Range("A" & i).Value, "dd-mmm-yyyy")
     
        Next i
    Mais ca ne change rien...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut jeo13 et le forum
    qui ne marche meme pas pour le premier type... et je ne vois pas comment faire pour l'autre format
    ?? c'est quoi l'autre format ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Cel As Range
    For Each cell In Range("A2:A" & Range("A65536").End(xlUp).Row)
        Cel.NumberFormat = "dd/mm/yyyy hh:mm:ss"
        Cel = CDate(Cel)
    Next Cel
    "dd/mm/yyyy hh:mm:ss" c'est ça l'autre format que tu veux ?
    A+

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut
    Citation Envoyé par Gorfael Voir le message
    Salut jeo13 et le forum
    qui ne marche meme pas pour le premier type... et je ne vois pas comment faire pour l'autre format
    ?? c'est quoi l'autre format ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Cel As Range
    For Each cell In Range("A2:A" & Range("A65536").End(xlUp).Row)
        Cel.NumberFormat = "dd/mm/yyyy hh:mm:ss"
        Cel = CDate(Cel)
    Next Cel
    "dd/mm/yyyy hh:mm:ss" c'est ça l'autre format que tu veux ?
    A+
    Merci pour ta reponse, je teste ton code pour le premier format
    L'autre format comme je l'ai dit c'est un format nombre sur 5 chiffres (ex: 38413) ...

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut
    Mais moi cela marche très bien!!!
    Et pour tes 2 formats texte ou numérique.
    As-tu regardé du côté des macros complémentaires. Tu les as installées?

    10/12/2008 00:0010-déc-2008
    34532 17-juil-1994
    11/12/2008 00:00 11-déc-2008
    34533 18-juil-1994
    12/12/2008 00:00 12-déc-2008
    34534 19-juil-1994
    13/12/2008 00:00 13-déc-2008
    34535 20-juil-1994
    14/12/2008 00:00 14-déc-2008
    34536 21-juil-1994

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut
    Je suis sur une version Excel du bureau.
    Comment je peux savoir si elles sont installées ou non ?
    Et de quelle macro complémentaire parles-tu?

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut
    Dans Outils/Macros complémentaires, j'ai Utilitaire d'analyse qui est coché...

    ce code marche chez moi (EXCEL2003):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub toto()
    For i = 1 To 10
    Range("B" & i) = Format(Range("A" & i).Value, "dd-mmm-yyyy")
    Next i
    End Sub

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut à tous

    Citation Envoyé par jeo13 Voir le message
    Merci pour ta reponse, je teste ton code pour le premier format
    L'autre format comme je l'ai dit c'est un format nombre sur 5 chiffres (ex: 38413) ...
    Ma macro du poste précédent convertit en date les 2 "formats" de données texte, qu'elles soientt en texte sous la forme de nombre entier ou de date.
    Mon incompréhension venait du fait que pour moi, le format était teste, et que dans l'exemple, on avait une partie heure non traitée.
    Désolé, étant un "vieux", je fais une différence entre format (la manière dont Excel nous permet de visualiser les données) et forme (comment sont les données). Donc, s'il n'y a besoin que de la date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Cel As Range
    For Each cell In Range("A2:A" & Range("A65536").End(xlUp).Row) 
        Cel.NumberFormat = "dd/mm/yyyy"
        Cel = CDate(Cel)
    Next Cel
    du moment que la donnée de départ soit sous un format texte ou nombre qu'excel peut interpréter comme une date.
    A+

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut
    Effectivement tu fais bien de faire la différence entre format et forme
    J'avais oublié de préciser que seule la date m'intéressait
    mais c'était implicite d'apres mon code dans mon premier post ou je ne prenais pas en compte l'heure

    a+

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour Gorfael,


    Citation Envoyé par jeo13 Voir le message
    ) ecrites selon deux formats:
    - soit 16/01/2008 00:00:00
    - soit 38413

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

Discussions similaires

  1. [XL-2007] Format date dans une colonne
    Par castours dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/07/2012, 13h32
  2. Réponses: 1
    Dernier message: 07/04/2009, 16h32
  3. [MySQL] Enregistrement de la date dans une colonne
    Par TeraD dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/03/2009, 12h49
  4. Transfert de dates dans une colonne datetime
    Par loop007 dans le forum Développement
    Réponses: 1
    Dernier message: 02/05/2008, 15h05
  5. Compter un nombre de date dans une colonne
    Par MASK55 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/11/2007, 11h17

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