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 :

Cells.Value et les dates [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut Cells.Value et les dates
    Bonjour à tous,
    Dans ma feuille1, j'ai un copier un mail dans son intégralité afin de récupérer des informations automatiquement.
    J'ai donc entre autre l'heure et la date d'envoi.
    Exemple :
    Envoyé*: lundi 6 décembre 2010 09:50

    Je souhaite récupérer cette date et la mettre sous la forme jj/mm/aaaa dans la feuille 2. A priori rien de compliqué et pourtant, je me heurte à un problème à savoir que le résultat est sous la forme mm/jj/aaaa alors que lorsque je l'affiche pour débugger je l'ai bien dans le bonne ordre
    Si quelqu'un à une idée ...

    Code vba : 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
    Sub Resa()
        Dim tabMois As New Collection
        tabMois.Add "1", "janvier"
        tabMois.Add "2", "février"
        tabMois.Add "3", "mars"
        tabMois.Add "4", "avril"
        tabMois.Add "5", "mai"
        tabMois.Add "6", "juin"
        tabMois.Add "7", "juillet"
        tabMois.Add "8", "août"
        tabMois.Add "9", "septembre"
        tabMois.Add "10", "octobre"
        tabMois.Add "11", "novembre"
        tabMois.Add "12", "décembre"
        'MsgBox (tabMois("décembre"))
     
        lastLineSheet1 = Worksheets("Feuil1").Range("A1").End(xlDown).Row
     
        For i = 1 To lastLineSheet1
            'date d'envoi
            If InStr(Worksheets("Feuil1").Cells(i, 1).Value, "Envoyé") Then
     
                maDate = Split(Worksheets("Feuil1").Cells(i, 1).Value, " ")
                'maDate : tableau contenant la date :
                'maDate(2) = jour
                'maDate(3) = mois
                'maDate(4) = année
     
                If maDate(2) < 10 Then maDate(2) = "0" & maDate(2)
                Worksheets("Feuil2").Cells(1, 2).Value = maDate(2) & "/" & tabMois(maDate(3)) & "/" & maDate(4) 
                'valeur de la cellule B1 = 12/06/2010 => problème 
                MsgBox ("maDate[2] : " & maDate(2))
                MsgBox ("maDate[3] : " & maDate(3))
                MsgBox ("maDate[4] : " & maDate(4))
                MsgBox ("Date finale : " & maDate(2) & "/" & tabMois(maDate(3)) & "/" & maDate(4))
                'Affiche "Date finale : 06/12/2010 " 
            End If
        Next i
    End Sub

    Je précise que le format de la cellule est jj/mm/aaaa une fois la macro lancée.

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour nom,
    peux-être serait-il bien de mettre le résultat dans une variable Date comme ceci:
    tu déclare la variable au début du code par exemple:ensuite tu remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Cells(1, 2).Value = maDate(2) & "/" & tabMois(maDate(3)) & "/" & maDate(4)
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    datefinale = maDate(2) & "/" & tabMois(maDate(3)) & "/" & maDate(4)
    Worksheets("Feuil2").Cells(1, 2).Value = datefinale
    Tiens nous au courant

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    En utilisant la fonction DateValue, ça résous mon problème.
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    WorkSheets("Feuil2").Cells(1, 2).Value = DateValue(maDate(2) & "/" & tabMois(maDate(3)) & "/" & maDate(4))

    Étrange néanmoins ...

    EDIT : en réaction avec la réponse de rvtoulon que je n'avais pas vu
    Effectivement ta proposition résous également le problème. Merci à toi pour ton aide

  4. #4
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour le forum

    Je serais tenté de passer par une variable String et de forcer le format ensuite

    du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim LaDate As String
    LaDate = maDate(2) & "/" & tabMois(maDate(3)) & "/" & maDate(4)
     
                Worksheets("Feuil2").Cells(1, 2).Value = Format(CDate(LaDate), "dd/mm/yyyy")
    pas testé.

    tu dit

    bon courage

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Bonjour Jean-Pierre49,
    Pour info, avec ta solution, j'ai toujours le problème. Je vais utiliser une variable Date je pense

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    J'ai testé une solution toute simple sur un Excel en français:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      [A1] = CDate("6 décembre 2010 09:50")
    La cellule A1 contient bien une date.
    Par contre, cette solution ne supporte pas qu'on lui ajoute le nom du jour (lundi 6 décembre 2010 09:50).
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/07/2007, 06h43
  2. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  3. MS Access et TQuery (probleme sur les dates)
    Par Djob dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 14h57
  4. [Interbase] [Access] les dates
    Par AnestheziE dans le forum InterBase
    Réponses: 17
    Dernier message: 26/11/2003, 14h40
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

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