Extraire une date d'une chaine de caractères

Résolu
Bonjour,

Voici mon problème dans la cellule A je veux mettre une date.
Celle-ci est contenu dans la cellule B entre deux chaine de caractère elle a pour format dd/mm/yy

Exemple

ch dd/mm/yy ch

Si vous avez la fonction magique qui permet de faire cela merci ! J'ai regardé du cotée des expressions régulière mes sans grand résultat.

Le meus-te serais aussi de supprimer la date qui est entre les chaine de caractère.

Merci !

6 réponses

  1. Impeccable merci beaucoup !
    Bonne journée et bon courage à tous.
    2
    1. Bonsoir,

      Si la date en B2 comporte bien 8 caracteres (6 chiffres et 2 /) on peut en récuperer la date ainsi :

      =DATE(STXT(B2;CHERCHE("/";B2)+4;2);STXT(B2;CHERCHE("/";B2)+1;2);STXT(B2;CHERCHE("/";B2)-2;2))

      donne une date en 19.... si les dates sont posterieures à 2000 il faut rajouter + 2000 dans la formule :
      =DATE(STXT(B2;CHERCHE("/";B2)+4;2)+2000;STXT(B2;CHERCHE("/";B2)+1;2);STXT(B2;CHERCHE("/";B2)-2;2))

      Pour enlever la date du texte :
      =GAUCHE(B2;CHERCHE("/";B2)-3)&DROITE(B2;(NBCAR(B2)-(CHERCHE("/";B2)+5)))

      Cela convient il ?

      Cdlmnt
      2
      1. s'il n'y a pas de date alors il n'y a pas de / ?
        Il suffirait de mettre tester la présence du / avant d'extraire
        If InStr(1, Cells(2, 2), "/") >0 then
        madate = Mid(Cells(2, 2), InStr(1, Cells(2, 2), "/") - 2, 8)
        instruction pour placer la date en A
        End if
        1
        1. La première solution me convient mes peut tu me fournir l'équivalent de ceci en VBA je serais ravis car je comprend pas grand chose a la formule que me sort la macro automatique

          =DATE(STXT(B2;CHERCHE("/";B2)+4;2);STXT(B2;CHERCHE("/";B2)+1;2);STXT(B2;CHERCHE("/";B2)-2;2))

          Le bute et de remplacer B2 par une variable de type string.

          Merci et bon courage.
          0
          1. Si tu veux extraire de B2 la date sous forme de chaine de caractère cette ligne en VBA suffit :

            madate = Mid(Cells(2, 2), InStr(1, Cells(2, 2), "/") - 2, 8)

            qu'on peut traduire par Extraire(de B2 ,à partir de la position du caractere "/ " moins 2, extraire 8 caracteres)

            Tu peux declarer avant madate as String

            Cdlmt
            0
            1. ca marche impec sauf que dans certaine chaine de caractère il n'y a pas de date est ca plante. donc si tu pouvais adapter ca serais cool je continu a chercher merci c'est déjà supère ce que tu a fait.
              0