Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 EXTRAIRE LES CHIFFRES à PARTIR D'une chaîne de caractère

chuckééé

XLDnaute Nouveau
Bonjour, à tous, je reviens vers ce talentueux forum pour vous exposer un petit problème d'extraction de chiffre à partir d'une cellule Multi caractère.
Le but est d'extraire le code de produit situé à la fin des cellules de la colonne A sans les parenthèse.
J'ai essayé ma formule =SUBSTITUE(SUBSTITUE(GAUCHE(DROITE(A2;8);7);"(";"");")";"") sauf que ça donne pas le résultat attendue.
si vous pouvez me donner quelques astuces, je serai heureux de vous partager les miennes.
 

Pièces jointes

  • extraire le code de produit.xlsx
    9.6 KB · Affichages: 13

chuckééé

XLDnaute Nouveau
Bonjour, JHA, votre formule fonctionne très bien, sauf que je me suis rendu compte que j'ai des noms de produits avec d'autres parenthèse ce qui oblige la formule à envoyé des chaines alphanumérique, j'ai remis le fichier en pièces jointes, ou on voit très bien les deux derniers cellules avec le mauvais code produit.
je sais pas comment la corrigé help :/
 

Pièces jointes

  • extraire le code de produit (1).xlsx
    10 KB · Affichages: 6

JHA

XLDnaute Barbatruc
Bonjour à tous,

Sans grande conviction, comme je vois que tes codes font 6 caractères au plus dans ta liste.
VB:
=SUBSTITUE(STXT(DROITE(A2;8);CHERCHE("(";DROITE($A2;8))+1;ABS(CHERCHE(")";DROITE($A2;8))-(CHERCHE("(";DROITE($A2;8))+1)));")";"")
Copier vers le bas

JHA
 

Pièces jointes

  • extraire le code de produit (1).xlsx
    10.2 KB · Affichages: 8

job75

XLDnaute Barbatruc
Re, salut JHA, mapomme,

merci Job 75 pour cette réponse sauf que malheureusement, ca ne marche pas pour moi :/
Pour vous ??? Sur le fichier du post #2 il n'y a pourtant pas de problème !

Maintenant s'il y a des parenthèses en pagaille le plus simple est d'utiliser cette fonction VBA :
VB:
Function CodeProduit$(txt$)
If InStrRev(txt, "(") Then CodeProduit = Replace(Mid(txt, InStrRev(txt, "(") + 1), ")", "")
End Function
Fichier .xlsm joint, le code de la fonction doit être impérativement dans un module standard.

Le code de produit doit être entre parenthèses et situé en fin de texte.

A+
 

Pièces jointes

  • Code de produit VBA (1).xlsm
    15.6 KB · Affichages: 8

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @chuckééé ,

même si j'ai pas trop compris la partie REPT(" ";255));255)).

Supposons que la phrase à traiter soit : aaa bbb ccc ddd (eee). La chaine à extraire est eee.

On remplace toute les parenthèse ouvrantes par une chaine de caractère de 255 espaces soit REPT(" ";255)). ce qui donne la formule : SUBSTITUE(A2;"(";REPT(" ";255))
La chaine qui en résulte est (on se limite aux derniers caractères) : aaa...ddd (255 espaces)eee)

Ensuite, on ne retient que les 255 caractères à droite.
DROITE(SUBSTITUE(A2;"(";REPT(" ";255));255)
La chaine qui en résulte est : (un certain nombre s'espace)eee)

A ce stade on voit qu'on a presque notre information désirée qui devra être eee.

On remplace les espaces consécutifs par un seul espace et on supprime les espaces en tête et en queue de chaine avec la fonction Supprespace :
SUPPRESPACE(DROITE(SUBSTITUE(A2;"(";REPT(" ";255));255))
Ce qui donne eee)

Il ne nous reste plus qu'à remplacer les parenthèses fermantes par rien:
SUBSTITUE(SUPPRESPACE(DROITE(SUBSTITUE(A2;"(";REPT(" ";255));255));")"

Nota :
si la chaine à extraire a 255 caractères ou plus, il faudra augmenter la valeur de 255. En général ça suffit.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…