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 :

Convertir format texte en format date [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 41
    Points
    41
    Par défaut Convertir format texte en format date
    Bonjour,

    J'importe des données sur mon excel dont certaines sont des dates. Mon problème est que le format des données d'importation son du texte et non en format date.
    J'ai besoin de passer ses données en format date pour pouvoir insérer des condition par rapport à la date du jour.

    J'ai essayé le format Cdate mais cela ne fonctionne pas.
    Je suis preneur de toutes idées pour m'aider.

    Merci

  2. #2
    Membre émérite
    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
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Sibuxian et le forum
    40 messages, tu devrais donc connaître la différence entre données de dépannage et divination !
    Rien dans ton sujet ne permet de savoir ce qui se passe : "cela ne fonctionne pas" ne permet pas de cerner ton problème. Pas d'exemple, pas d'erreur, jusque "c'est pas ce que je voulais", sans autres précisions.
    A+

  3. #3
    Membre averti Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Points : 377
    Points
    377
    Par défaut
    Tu selectionnes ta colonnes / lignes contenant le texte a convertir en date et puis tu vas dans données - convertir et à la fin tu selectionnes format - date


    en VBA - tu peux voir cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub toto()
     
    var1 = Format(Range("A1"), "yyyymmdd")
    aujourdhui = Format(Date, "yyyymmdd")
     
    If var1 < aujourdhui Then
        MsgBox "inferieur a la date du jour(date system)"
    End If
     
     
    End Sub

    Ou donnes nous + de renseignements .... versions Excel
    en VBA ou pas ...

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Excusez moi pour le manque d'informations ...

    Donc je récapitule mon problème ainsi que les différentes solutions testées et les résultats.

    J'importe des données sur mon fichier excel (2003). Les données importées sont des dates qui sont malheureusement considérées comme du texte par excel. Je ne peux donc pas calculer la différence de jours entre ces dates et la date de la fonction [=aujourdhui()].

    J'ai donc testé les différents copy/paste pour essayer de modifier le format après, mais cela reste du texte.
    J'ai testé une macro avec le format Cdate qui vérifie le si le format correspond a un format date ##/##/#### mais cela ne fonctionne pas tout le temps. Des fois, le résultat est vide puisque la macro ne reconnait pas le format. De plus, dès qu'il y a un 0 dans la date, cette macro ne le prend pas en compte et modifie donc la date :

    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
    Dim strTexte As String
        Dim i, n, a As Integer
        Dim varDate As String
        Dim Date_Cp As String
     
        For a = 4 To 100
            Date_Cp = Worksheets(Strsheet4).Cells(a, 66)
     
            strTexte = Date_Cp
     
            For i = 1 To Len(strTexte)
                If Mid(strTexte, i, 10) Like "##/##/####" Then
                    varDate = Mid(strTexte, i, 11)
                    Exit For
                End If
            Next i
            If Not varDate = "" Then
                Date_Cp = CDate(varDate)
            End If
     
            Worksheets(Strsheet4).Cells(a, 69) = Date_Cp
        Next a

    J'ai testé également ce que m'a proposé Delphine35 mais cela me renvoit des "##########" car le résultat est négatif pour Excel lors du changement de format. Je ne sais pas pourquoi.

    Je continue donc mes recherches

  5. #5
    Membre émérite
    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
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Sibuxian et le forum
    J'importe des données sur mon fichier excel (2003)
    Autant que je m'en souviennes, en importation, tu peux définir la nature du champs, en importation sur 2003.

    Comme j'ai du mal à comprendre le problème, j'ai juste regarder ta macro et je ne comprends toujours pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Mid(strTexte, i, 10) Like "##/##/####" Then
    Tu testes si les 10 caractères suivant ressemblent à une date.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    varDate = Mid(strTexte, i, 11)
    et tu en extrait 11, dans un format texte ???

    Mais bon, je dois être fatigué, et comme les infos sont sous le coup du "secret défense"...
    A+

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Heu non, aucun secret ...
    je donne toutes les infos que j'ai ...

    mais ton message m'a donné une bonne piste sur les importations et finalement, le calcul se fait automatiquement quand je spécifie que l'importation est une date.

    Pour la macro, j'ai testé cette macro, que j'avais trouvé sur le net quand j'effectuais une recherche pour m'aider et donc oui, cela vérifie si le format correspond et sélectionne le texte, mais cela ne fonctionne pas du tout (dans on cas en tout cas).

    Donc merci pour les conseils et les pistes

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

Discussions similaires

  1. Convertir une date format texte en format date
    Par arni63 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 19/03/2012, 16h34
  2. [Toutes versions] Convertir format monétaire en format texte
    Par Christian Thonier dans le forum IHM
    Réponses: 1
    Dernier message: 23/10/2009, 09h37
  3. Convertir un fichier texte du format csv au format hws
    Par slayer23 dans le forum MATLAB
    Réponses: 8
    Dernier message: 14/06/2007, 18h48
  4. convertir un text en format unicode
    Par mjava dans le forum Général Java
    Réponses: 4
    Dernier message: 18/07/2006, 17h51

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