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 :

Extraire une date d'un String sans format spécifique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 2
    Par défaut Extraire une date d'un String sans format spécifique
    Bonjour, je suis nouveau sur ce forum et ai des connaissance basique en VBA,

    Je suis en train d'essayer de transférer les données d'un fichier Excel d'environ 1500 lignes, dans un nouveau fichier, car la secrétaire précédente utilisait Excel quasiment comme du traitement de texte et il nous est difficile/impossible de filtrer/trier les données. Je me suis donc attaqué à un programme VBA pour m'éviter le copiage à la main de ces 1500 lignes, rien de très compliqué. Mais actuellement je suis tombé sur un os. Une des colonnes contient une information du type :
    - "Facture envoyé le 02.02.2021",
    -"Demande d'acompte du 05.02.2021",
    -"Offre estimative envoyée par mail le 04.02.21",
    - "FA du 06/03/2021"
    avec énormément de variation possibles , tant dans le texte que dans le format de la date.

    Dans ma macro j'ai déjà réussi a avoir l'information de savoir si c'était un acompte une facture ou une offre estimative grâce à la fonction InStr, mais pour mettre la date contenu dans cette string dans la colonne adjacente je bloque complètement. L'efficacité de la solution m'est égal car il ne faudra utiliser cette macro qu'une seule fois.

    Quelqu'un pourrait peut-être m'aider ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    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 128
    Par défaut
    Salut

    Plusieurs solutions, en voila une

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub TestSplit()
    Dim strDemo As String
    Dim Retour As Variant
     
        'Init test
        strDemo = "Demande d'acompte du 05.02.2021"
     
        'On regarde si une date valdide est présente
        Retour = ExtractDate(strDemo)
        If VarType(Retour) = vbDate Then
            '... Une date est présente dans Retour
            'On peut utiliser CDate(Retour) pour forcer le transtypage
        Else
            'Pas de date... ou pas reconnu
        End If
    End Sub
     
    Function ExtractDate(strDemo As String) As Variant
    Dim Tab_Split As Variant
    Dim PartDate As String
        'Init
        ExtractDate = False
        'On décompose le text selon " "
        Tab_Split = Split(strDemo, " ")
        'On vérifie qu'(il y est un contenu
        If UBound(Tab_Split) > -1 Then
            'On extrait la date supposée
            PartDate = Tab_Split(UBound(Tab_Split))
            'On corrige le séparateur
            PartDate = Replace(PartDate, ".", "/")
            PartDate = Replace(PartDate, ",", "/") 'autant de fois que de caractère utilisé
     
            'On teste si le dernier élément est une date valide
            If IsDate(PartDate) Then
                ExtractDate = CDate(PartDate)
            End If
        End If
    End Function

    [Edit]
    Tu as ça sinon dans la FAQ
    https://excel.developpez.com/faq/?pa...DateDansChaine
    [/Edit]
    ++
    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

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 2
    Par défaut
    Cela fonctionne parfaitement merci beaucoup

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

Discussions similaires

  1. convertir une date stockée en string dans sqlite3 en format date
    Par olivier252 dans le forum Général Python
    Réponses: 3
    Dernier message: 09/11/2019, 15h42
  2. [MySQL] extraire une date d'un format 1510079400
    Par Kagami dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/10/2017, 09h18
  3. [Toutes versions] Extraire une date en format date
    Par iliesss dans le forum Excel
    Réponses: 2
    Dernier message: 05/10/2011, 13h44
  4. Extraire une Date à partir d'une String dans un fichier
    Par Dalidou dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 18/03/2009, 09h19
  5. Réponses: 5
    Dernier message: 20/02/2007, 17h52

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