Re : [EXTRACTION Caractères] - cherche autre formule (ou plus courte)
Bonjour,
On peut faire appel à une fonction personnalisée et on aura donc recours au VBA mais tout cela restera transparent pour
l'utilisateur puisqu'il se contentera de taper une formule.
Copiez le code suivant dans un module standard
Code:
Function EXTRACT(Cellule As Range, Mot_debutant_par As String) As String
Dim R As Range
Dim A$
Dim B$
Dim Deb&
Dim i&
Set R = Cellule.Cells(1, 1)
If Not IsEmpty(R) Then
A$ = CStr(R)
Deb& = InStr(1, A$, Mot_debutant_par)
If Deb& > 0 Then
Deb& = Deb& + Len(Mot_debutant_par)
B$ = Mot_debutant_par
For i& = Deb& To Len(A$)
If Mid(A$, i&, 1) <> Chr(32) Then
B$ = B$ & Mid(A$, i&, 1)
Else
Exit For
End If
Next i&
End If
EXTRACT = B$
End If
End Function
FONCTIONNEMENT
Pour obtenir le résultat équivalent au résultat de la fonction
=STXT(SUBSTITUE(A1;" ";"");CHERCHE("200????";SUBSTITUE(A1;" ";""));7)
tapez
=extract(A1;200)
Re : [EXTRACTION Caractères] - cherche autre formule (ou plus courte)
Bonjour PMO2
Merci pour ta fonction mais ...
Personnellement j'utilise regexp pour ce genre d'extraction
(voir le PS de mon message initial )
Mais j'ai eu trop de déboires avec des novices sous Excel
C'est pour cela que j'essaie dans ce cas d'utiliser une formule la plus simple ou courte possible, afin qu'en cas de pépin la personne puisse ressaisir la formule.
Re : [EXTRACTION Caractères] - cherche autre formule (ou plus courte)
Re
J'ai compilé toutes vos propositions et les miennes et le souci reste que les formules renvoient selon des cas particuliers des résultats non satisfaisants
(VBA s'en sort mieux avec regexp mais je ne souhaite pas l'utiliser ici)
Re : [EXTRACTION Caractères] - cherche autre formule (ou plus courte)
Re
Merci Patrick pour ton feeback
Mais je sais que je ne peux pas utiliser VBA car je connais trop le genre d'incidents qui se produisent avec des users qui voudront aller voir le code VBA etc ....
Je cherche donc une formule la plus simple possible utilisant les fonctions natives d'Excel.
Ainsi en cas de souci, j'enverrai la formule par mail (pour un copier/coller)
(et je n'aurai pas besoin de protéger les feuilles ou le code VBA)
PS: je me suis rendu compte de ma propre incohérence en ouvrant ton classeur 1990 et CHERCHE("200????
Re : [EXTRACTION Caractères] - cherche autre formule (ou plus courte)
Bonjour Staple1600, le forum,
j'ai retrouvé une formule de Tibo qui devrait t'aider
=STXT(B3;EQUIV(VRAI;ESTNUM(STXT(SUBSTITUE(B3;" ";"µ");LIGNE(INDIRECT("1:"&NBCAR(B3)));5)*1);0);7)
formule matricielle
cette formule cherche un chiffre de 5 caractères et affiche ensuite 7 caractères.
Edit: Oups! c'est une matricielle et tu n'en veux pas.
Re : [EXTRACTION Caractères] - cherche autre formule (ou plus courte)
Bonjour JHA
Ce ne n'est pas moi qui n'en veux pas
C'est la situation qui m'oblige à cela.
Disons que je suis las de créer des applicatifs sous Excel (avec VBA + formules + protection basique) et d'avoir des collègues qui m'appellent pour me dire " ca marche plus" et de m'apercevoir que le classeur est déprotégé que les macros ont été désactivés etc ...
Donc maintenant quand il s'agit de fichier dont je ne suis pas l'utilisateur final, j'essaie d'aller au plus simple (pas de vba, pas de matriciel), juste des formules, parfois des MFC.
Si le truc sur lequel je planche, (nous planchons, amis forumeurs) est encore "destroyé" par mes aimables collègues , je vais finir par juste pondre un pdf qui explique comment faire la chose .
Et puis c'est tout comme dirait M. LUCAS.
PS: pour ce qui me concerne, vous pouvez proposer toutes solutions (formules ou vba), elles viendront avec plaisir nourrir ma curiosité excelienne.
Je sais que quelque part trainent dans le forum des fils ou j'ai posté des solutions d'extraction mais malheureusement elles sont matricielles ou VBA.
Mais au final, je dois trouver une formule ultra simple et concise pour qu'enfin mon téléphone cesse de sonner un peu.
PS2: JHA; effectivement ta proposition matricielle fonctionne, mais comment obliger le CTRL+SHIFT+MAJ à l'utilisateur ?
Re : [EXTRACTION Caractères] - cherche autre formule (ou plus courte)
Bonjour Staple 1600, le forum,
La formule donnée le 24/10 ne fonctionne pas, tu as le même résultat avec:
=STXT(B3;CHERCHE(0;B3;1)-1;7) car il y a toujours un "0" au 2 ème chiffre.
Désolé mais en VBA je suis nul de chez nul.
Edit pour trouver le "0" ou le 9 de l'année
=SI(NON(ESTERREUR(STXT(B3;CHERCHE(0;B3;1)-1;7)));STXT(B3;CHERCHE(0;B3;1)-1;7);STXT(B3;CHERCHE(9;B3;2)-1;7))