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 :

Conversion en date [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut Conversion en date
    Bonjour a tous,

    J'ai un probleme qui m'énerve et qui a mon avis n'est pas très compliqué. Voici le probleme :

    Dans une cellule est écrit MAR 06, 2011

    Mais excel ne reconnait pas que c'est une date (dans la version francaise). J'ai à convertir ce string en une date dans une de mes macros.

    Voici le code qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        mo = Left(DT.Range("A" & i + 1).Value, 3)
        da = Mid(DT.Range("A" & i + 1).Value, 5, 2)
        ye = Right(DT.Range("A" & i + 1).Value, 4)
     
        datejour=cdate(Format(da & "-" & mo & "-" & ye, "dd-mmm-yyyy"))
    Il me donne une incompatibilité de type sur la dernière ligne. Comment dois-je faire ?

    Merci d'avance,

    Pubbins

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut DATE
    Bonsoir à toi, Bonsoir au Forum,

    Une solution à adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub essai()
    Dim c As Range
    Set c = Range("A1")
    mois = Left(c, 3)
    jour = Mid(c, 5, 2)
    an = Right(c, 4)
    c.Value = Format(CDate(Format(jour & " " & mois & " " & an)), "dd mmmm yyyy")
    Set c = Nothing
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Merci Marcel mais ta solution ne marche qu'en partie. En fait, elle ne fonctionne que pour les mois dont les 3 premieres lettres sont les memes en francais et en anglais !

    Par ex : JAN, MAR, SEP, OCT...

    Par contre, des que je tombe sur APR, FEB... Cela ne marche plus. Comment je peux lui faire comprendre que APR, c'est AVR...

    Je précise que dans la version anglaise, il n'y a aucun soucis parce qu'il reconnait le format de date. Du coup ce que j'aimerais, c'est que quelque soit la version, excel reconnaisse la date.

    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Date
    Bonjour à toi, Bonjour au Forum,

    Tu peux lever cette difficulté en établissant une correspondance entre 2 varaibles tableau.

    Afin de considérer le rang 1 d'un tableau comme premier rang
    En entête de module

    (sinon le tableau commence à 0)

    D'où, en bouclant sur les variables de langue anglaise
    (Ici 4 mois, je te laisse compléter)

    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
    Public Sub essai()
    Dim c As Range
    Set c = Range("A1")
    mois = Left(c, 3)
    jour = Mid(c, 5, 2)
    an = Right(c, 4)
    liste_mois_eng = Array("JAN", "FEB", "MAR", "APR")
    liste_mois_fra = Array("01", "02", "03", "04")
    n = 0
    For Each m In liste_mois_eng
            n = n + 1
            If m = mois Then Exit For
    Next m
    mois = liste_mois_fra(n)
    Debug.Print mois
    c.Value = Format(CDate(Format(jour & "-" & mois & "-" & an)), "dd mmmm yyyy")
    Set c = Nothing
    End Sub

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Une autre proposition avec switch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function ConvertDate(ByVal Str As String) As Date
    Dim Stm As String
     
    Stm = UCase(Left(Str, 3))
    Str = Switch(Stm = "JAN", "janv", Stm = "FEB", "févr", Stm = "MAR", "mars", Stm = "APR", "avr", Stm = "MAI", "mai", Stm = "JUN", "juin") & Replace(Mid(Str, 4), ",", "") '..etc
    ConvertDate = DateValue(Str)
    End Function

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

Discussions similaires

  1. Conversion de date
    Par jdu dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2005, 16h17
  2. Conversion de dates
    Par Gogoye dans le forum Modules
    Réponses: 5
    Dernier message: 10/08/2004, 11h39
  3. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  4. Conversion de date lors d'un import
    Par bilbon.S dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/03/2004, 14h33
  5. Conversion de date et division 64 bits
    Par dway dans le forum Assembleur
    Réponses: 38
    Dernier message: 27/01/2004, 10h31

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