XL 2013 récupérer les dates dans une chaine (formule excel)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
je vais commencer a me faire un recueil d'exemple de formule excel pour le texte

aujourd'hui je cherche une formule qui pourrait me donner la Nieme( de 1 à x) date dans une chaine
à l'heure actuelle j'ai la première simplement avec STXT ET CHERCHE
=STXT(A1;CHERCHE("??/??/????";A1;1);10)
j'aimerais trouver une formule qui me permette d'avoir la 2d , la 3eme etc...
 
Bonjour à tous,

A tout hasard:
VB:
=SIERREUR(SI($H$1=1;STXT(A1;CHERCHE("??/??/????";A1;1);10);STXT(A1;CHERCHE("??/??/????";A1;11*($H$1-1));10));"maximum "&$J$1)
Code:
=SIERREUR(SI($H$1=1;STXT($A1;CHERCHE("??/??/????";$A1;1);10);STXT(SUBSTITUE($A$1;";";"@";$H$1-1);CHERCHE("@";SUBSTITUE($A$1;";";"@";$H$1-1);1)+1;10));"maximum "&$J$1)

JHA
 

Pièces jointes

Désolé pour cette réponse qui n'en est pas une :
Pourquoi, puisque tu veux te faire un recueil de formules, ne pas passer par des fonctions stockées dans un fichier macros complémentaires et les utiliser comme les fonctions Excel ?
En quelques lignes, tu ferais quasiment tout ce que tu veux, et tu peux documenter tes fonctions comme celles d'Excel.
 
re
tiens je suis allé repêcher tout ça dans un de mes xla
le regdial est facultatif (c'est juste pour avoir le dialogue fx
1708783864291.png

VB:
'janvier 2015
'patricktoulon sur Developpez.com
Function GetDateOnChain(TxT As String, index)
    Dim tbl(), dx$
    ReDim Preserve tbl(1 To 100)
    For i = 1 To Len(TxT)
        tbl(i) = ""
        dx = Mid(TxT, i, 10)
        If IsDate(dx) And dx Like "##/##/####" Then x = x + 1: tbl(x) = DateValue(dx) : i = i + 11
    Next
    If index > 0 Then
        GetDateOnChain = tbl(index)
    Else
        ReDim Preserve tbl(1 To Application.Caller.Cells.Count)
        If Application.Caller.Rows.Count > 1 Then t = Application.Transpose(tbl)
        GetDateOnChain = t
    End If
End Function

Sub RegDialFonction()
    Dim Funct_description As String, argumtsArray

    '(max 255 caracteres)
    Funct_description = "Fonction GetDateOnChain" & vbCrLf & _
                         "avec argument index 0 retourne un tableau(matriciel)" & vbCrLf & _
                        "avec argument > 0 retourne l'occurence" & vbCrLf & _
                        "Créated By patricktoulon"

    'Description des arguments de la fonction
    argumtsArray = Array("chaine string à traiter", "index pour la Nieme occurence")


    'appel  la sub pour enregistrer
    Application.MacroOptions Macro:="GetDateOnChain", _
                             Description:=Mid(Funct_description, 1, 255), _
                             ArgumentDescriptions:=argumtsArray, _
                             Category:="personnalisée"
End Sub
 
Bonjour à toutes & à tous, bonjour @patricktoulon , @JHA, @crocrocro
J'ai une solution avec une formule, un peu lourde il est vrai, mais qui fonctionne avec EXCEL2007 (c'est simplifiable avec la fonction LET de EXCEL2021)
Comme c'est une formule matricielle je l'ai placée dans un nom "Extraction" , le N° de la date à extraire est dans la cellule nommée "N°Date", la chaîne dans la cellule nommée "Chaîne"
A bientôt
 

Pièces jointes

bonjour @AtTheOne
c'est vraiment bien fait
le seul dommage avec çe system de name(si je me souviens bien ) c'est que ca fonctionne sur une seul colonne
a moins que justement les name supp soit fait pour ca
ce genre de truc il faudrait faire un tuto pour expliquer ça
👌👏
edit je viens de tester sur une autre colonne ça fonctionne
a voir dans un tableau

edit 2
et oui c'est le name chaine qui est fixe
on reviens a ce que je disais
n'y aurait il pas moyen de mettre dans le name chaine
par exemple =feuil1!$B$2:$b$10
et dans l'extraction remplacer chaine par un indirecte ou je ne sais quoi

=SIERREUR(DATEVAL(STXT(Chaîne;PETITE.VALEUR(SI(FREQUENCE(SIERREUR(CHERCHE("??/??/????";Chaîne;LIGNE(DECALER(Feuil1!$A$1;0;0;NBCAR(Chaîne);1)));NBCAR(Chaîne)+1);SIERREUR(CHERCHE("??/??/????";Chaîne;LIGNE(DECALER(Feuil1!$A$1;0;0;NBCAR(Chaîne);1)));NBCAR(Chaîne)+1))<>0;SIERREUR(CHERCHE("??/??/????";Chaîne;LIGNE(DECALER(Feuil1!$A$1;0;0;NBCAR(Chaîne);1)));NBCA
bref je garde aussi 😉
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour