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 :

Fonction Split et dates, problème


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 7
    Par défaut Fonction Split et dates, problème
    Bonjour à tous.

    Dans mes cellules j'ai des intervalles de dates comme :
    01 nov 09 to 31 oct 10

    Je cherche à les spliter et mettre les résultats dans deux colonnes différentes.

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Tableau = Split(Cells(i, j), "to", , vbTextCompare)
    For k = 0 To UBound(Tableau)
            Cells(i, k + 1) = Tableau(k)                
                'Conversion en date
                If IsDate(Cells(i, k + 1)) = True Then
                     Cells(i,k+1) = CDate(Cells(i, k + 1))
                End If
    Next k
    J'obtiens bien 31/10/2010 dans la troisième colonne,
    mais 11/01/2009 dans la deuxième. Excel a donc inversé le jour et le mois dans la première date, mais pas dans la deuxième.
    Je ne vois absolument pas pourquoi.

    Avez vous une solution ?
    Merci beaucoup

  2. #2
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    tu as vérifié le format de tes celulle ?

    jj/mm/aaaa

    et pas mm/jj/aaaa

    Cdlt
    DoDo

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 7
    Par défaut
    Oui, le problème n'a pas l'air de venir de là.

    Après test sur le code, si j'enlève la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'Conversion en date
                If IsDate(Cells(i, k + 1)) = True Then
                     Cells(i,k+1) = CDate(Cells(i, k + 1))
                End If
    j'obtiens le bon résultat pour l'exemple précédent, mais un problème pour des cases du type :
    01/10/09 au 30/09/10

    où la réponse est 10/01/2009 et 30/09/10

    j'en perds mon latin...

  4. #4
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    salut
    les dates
    la méchante prise de tête
    essayes de forcé le format =format( ladate,"dd/mm/yyyy") le passage par VBA à tendance à inversé les mois et le jours ( si il y a la possibilité ; pas de 01/30/2010 mais le 01/09/2010 passe facilement en 09/01/2010 )

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 7
    Par défaut
    je viens d'essayer le forçage de date, et toujours pas de solutions. Je résume :

    "01/10/09 au 30/09/10" devient 01/10/2009 et 30/09/2010
    après l'exécution du code, puis :
    01/10/2009 30/09/2010
    Après le forçage, donc c'est bon. MAIS :

    "01 nov 09" to "31 oct 10" devient 01-Nov-09 et 31 oct 10
    devient après forçage :
    11/01/2009 31/10/2010
    Donc il rajoute le problème.

    J'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(i, j) = Format(Cells(i, j), "dd/mm/yyyy")

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 120
    Par défaut
    Salut
    Citation Envoyé par hugues1138 Voir le message
    Je ne vois absolument pas pourquoi.
    Surement parce qu'il n'existe pas de 31ème moi, c'est pour ça qu'il ne permute pas les 2 termes.

    Comme ça, ça semble fonctionner
    [Edit]
    Oupss, il faut mettre les valeurs dans la feuille, je reviens
    [/Edit]

    [Edit2]
    C'est modifié.
    [/Edit2]


    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
    Sub teste()
    Dim TExte As String
    Dim Date1 As Date, Date2 As Date
    Dim TabDate As Variant
     
    TExte = "01 nov 09 to 31 oct 10"
     
    TabDate = Split(TExte, " to ")
     
    Date1 = CDate(TabDate(0))
    Date2 = CDate(TabDate(1))
     
    'Si les cellule sont formater en format Date
    Feuil1.Range("A1").Value2 = Date1
    Feuil1.Range("A2").Value2 = Date2
     
    'Si pas de formatage particulier
    Feuil1.Range("A3").Value = Date1
    Feuil1.Range("A4").Value = Date2
     
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 7
    Par défaut
    Youpi ça fonctionne !
    Mais je ne vois pas très bien la différence...

    Merci en tous cas Qwazerty.

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 120
    Par défaut
    Salut
    Surement le fait de passer par une variable typé date, ça lui remet les idées en place.
    Pour le tag résolu sur ton message, il existe un bouton en bas à droite, inutile de le rajouter à la main

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. [Dates] Problème avec la fonction date()
    Par Kernald dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2007, 11h50
  2. [Dates] problème fonction setlocale()
    Par oceane751 dans le forum Langage
    Réponses: 1
    Dernier message: 12/01/2007, 00h48
  3. [Dates] problème fonction rand()
    Par eacute dans le forum Langage
    Réponses: 3
    Dernier message: 09/12/2006, 13h12
  4. Problème fonction split
    Par fffonck dans le forum Langage
    Réponses: 2
    Dernier message: 18/09/2006, 11h41
  5. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33

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