Formule d'extraction de caracteres

bonjour,

je suis sous excel 2010 et j'ai un tableau dans lequel j'ai, dans une colonne des données ressemblant a : abc-cd-fr-ggght-er

suivant les lignes, le nombre de caractères entre les "-" peux varier exemple, le FR peut devenir ENG ou CAN ... et le ggght, peut devenir AD ou intel ...

je souhaiterais pouvoir extraire chaque groupe de caractères dans des cellules distinctes

exemple

en A j'ai : abc-cd-fr-ggght-er

en B je veux : abc

en C je veux : cd

en D je veux : fr

en E je veux : ggght

en F je veux : er

est ce possible avec des =gauche() ou droite ?

Merci

Bonjour,

Est-ce que la récente solution proposée par vba-new (https://forum.excel-pratique.com/excel/concatener-inverse-t37465.html)

peut résoudre votre problème ?

Bonjour JFL,

le rendu est effectivent celui recherché

en revanche cela implique a chaque tableau de faire la manipulation et j'aurais souhaité avoir une solution automatique lié a une formule, par exemple.

je prends donc cette solution pour le moment, et t'en remercie, mais si d'autres solutions existent, je suis preneur

Bonjour,

Si, c'est faisable par formule, mais ça va te faire des formules toutes différentes à rallonge.

Une fonction personnalisée en VBA ça sera beaucoup plus simple si tu veux :

Function découpe(chaine As String, separateur As String, partie As Long) As String
    découpe = Split(chaine, separateur)(partie - 1)
End Function

A mettre dans un module standard (Alt+F11 pour aller dans VBE).

Ensuite s'utilise comme une fonction excel sur la feuille.

Ex syntaxe :

=découpe("abc-cd-fr-ggght-er";"-";3)

retourne la 3ème partie : "fr"

eric

79classeur2.zip (6.41 Ko)

salut eriiic,

ça c'est super ... c'est ce qu'il me fallait

je ne maîtrise pas le VBA, je n'y pensais donc pas ... mais c'est cool !

un grand merci

petit question eriiic,

la référence peut contenir de 4 à 6 séparateurs

j'ai donc fais une formule

=SI(decoupe($B46;"-";C$1)="";"";decoupe($B46;"-";C$1))

mais il me renvoie toujours "VALEUR!"

y'a t'il un petit truc qu'on pourrait rajouter dans le code VBA pour éviter ce "VALEUR!" ?

Merci

Si bien sûr :

Function découpe(chaine As String, separateur As String, partie As Long) As String
    Dim ch() As String
    ch = Split(chaine, separateur)
    If partie > UBound(ch) + 1 Then
        découpe = ""
    Else
        découpe = ch(partie - 1)
    End If
End Function

Tu peux remplacer "" par la chaine que tu veux en cas d'absence de cet élément.

eric

Bonjour

Pour cloturer un fil, merci d'utiliser l'outil disponible au lieu de mettre "Resolu"

Lors de ta réponse, clique simplement sur le V vert à coté du bouton EDITER.

Pour réouvrir un fil de discussion terminé, clique sur ce même V devenu Rouge lors de la cloturer

Amicalement

MERCI eriiic ...

je sens que je vais me mettre au VBA ...

Dan, bonjour ;

je ne dois pas avoir les yeux dans le bon sens, j'ai cherché la présence d'un tel bouton, mais je ne l'avais pas vu ... Merci

Rechercher des sujets similaires à "formule extraction caracteres"