Function extrait(target As Range)
application.volatile
Liste = Array("abcdef", "bcdefg", "cdefgh", "defghi", "efghij", "fghijk", "ghijkl", "hijklm", "mlkjuh", "ghyfgd", "dfrtgf", "fgtyhu", "nbhbnh", "kiolpu")
Last5Caract = Right(target, 6)
trouvé = False
For Each ele In Liste
If Last5Caract = ele Then
trouvé = True
Exit For
End If
Next ele
If trouvé Then
extrait = Last5Caract
Else: extrait = Mid(target, 4, 5)
End If
End Function
Function extrait2(target As Range)
Application.Volatile
Liste = Array("abcdef", "bcdefg", "cdefgh", "defghi", "efghij", "fghijk", "ghijkl", "hijklm", "mlkjuh", "ghyfgd", "dfrtgf", "fgtyhu", "nbhbnh", "kiolpu")
mot = Split(target, " ")
LastCaract = mot(UBound(mot))
trouvé = False
For Each ele In Liste
If LastCaract = ele Then
trouvé = True
Exit For
End If
Next ele
If trouvé Then
extrait = LastCaract
Else: extrait = mot(1)
End If
End Function
Bonjour aussi....
heureusement qu'il y a un fichier pour comprendre.. :-D
essaie avec une fonction personalisée que tu peux appeler comme une fonction normale excel
VB:Function extrait(target As Range) application.volatile Liste = Array("abcdef", "bcdefg", "cdefgh", "defghi", "efghij", "fghijk", "ghijkl", "hijklm", "mlkjuh", "ghyfgd", "dfrtgf", "fgtyhu", "nbhbnh", "kiolpu") Last5Caract = Right(target, 6) trouvé = False For Each ele In Liste If Last5Caract = ele Then trouvé = True Exit For End If Next ele If trouvé Then extrait = Last5Caract Else: extrait = Mid(target, 4, 5) End If End Function
Function extrait(target As Range) 'définit la fonction personalisée Extrait avec une cellule en argument
application.volatile 'permet à la fonction d'actualiser le résultat si la feuille change
Liste = Array("abcdef", "bcdefg", "cdefgh", "defghi", "efghij", "fghijk", "ghijkl", "hijklm", "mlkjuh", "ghyfgd", "dfrtgf", "fgtyhu", "nbhbnh", "kiolpu") 'on définit la liste des élements à chercher
Last6Caract = Right(target, 6) 'on récupère les 6 derniers caractères de la cellule donnée en argument
trouvé = False 'initiale à faux
For Each ele In Liste 'on parcourt la liste des éléments
If Last6Caract = ele Then 'si les 6 derniers caractères de la cellule target correspondent à l'élément en cours de test
trouvé = True 'trouvé mis à vrai
Exit For 'on sort de la boucle.. pas la peine d'aller au bout
End If
Next ele
If trouvé Then 'si on a trouvé
extrait = Last6Caract 'on affecte les 6 derniers caractère à la fonction : histoire de retourner le résultat...
Else: extrait = Mid(target, 4, 5) 'si pas trouvé, alors on renvoit les 5 caractères à partir du 4eme
End If
End Function
Hello BriceG
avec une formule un peu plus courte :-D
suffit de mettre la liste des elements abcdef, bcdef.... en colonne (D1427) par exemple
et taper la formule
=SI(ESTNUM(EQUIV(DROITE(A1;6);$D$14:$D$27;0));DROITE(A1;6);STXT(A1;4;5)