XL 2019 Extraire une suite de 4 chiffres dans une désignation

CBrd

XLDnaute Nouveau
Bonjour,

Je viens solliciter votre aide aujourd'hui car j'ai un problème que je n'arrive pas à résoudre.

Dans l'entreprise où je travaille nous avons une assez grosse base de données, surtout concernant les composants.
Aujourd'hui nous voudrions modifier massivement les désignations afin de les uniformiser. Pour ce faire, j'isole chaque partie de la désignation (les ohms, la tolérance [%], etc.) pour ensuite bien remettre toutes ses valeurs dans l'ordre souhaité par la société. Pour la plupart des valeurs j'arrive à les isoler et les récupérer pour modifier la désignation (grâce aux fonctions TROUVE, CHERCHE et DROITE par exemple)

Le problème est que dans la quasi totalité des désignations nous avons une valeur que l'on appelle un boitier. Dans mon exemple, ce boitier sera toujours une suite de 4 chiffres (sur d'autres composants plus spécifiques ce pourrait être autre chose). Le problème aussi est que la suite de 4 chiffres ne se trouve pas forcément toujours au même endroit.

Sur le fichier ci-joint, pour la première ligne de mon tableau je souhaiterais récupérer la valeur 0805.
Que pouvez-vous me conseiller pour pouvoir extraire cette suite ?

Merci par avance.
 

Pièces jointes

  • Exemple désignation.xlsx
    10.5 KB · Affichages: 19
Solution
Re

Une autre fonction personnalisée utilisant RegEx.
VB:
Function QUATRE(s As String) As Double
With CreateObject("vbscript.regexp")
  .Pattern = "\d{4}"
  If .Test(s) Then QUATRE = CDbl(.Execute(s)(0))
End With
End Function

EDITION 1: Bonsoir patricktoulon
EDITION 2: Bonsoir laurent950

CBrd

XLDnaute Nouveau
Bonjour tout le monde,

Alors déjà je vous remercie pour toutes vos propositions ! Malheureusement, dans le contexte actuelle j'ai eu du mal à avoir du temps pour les tester. Cet après-midi et/ou demain matin je vais essayer et je reviendrai vers vous dès que j'aurais finis.

Je vous remercie encore, bonne fin de journée.


Edit
J'ai donc lu tous vos commentaires et c'est vrai que je ne l'avais pas précisé, mais la valeur du boitier sera toujours entouré d'espaces, on ne pourra pas la retrouver collée à autre chose.
Pour le moment la fonction de Staple1600 (avec la fonction QUATRE) fonctionne bien. Je ne m'y connais pas trop en VBA ou fonctione excel, mais en testant de rajouter des espaces devant et derrière le \d{4} :

VB:
Function QUATRE(s As String) As Double
With CreateObject("vbscript.regexp")
  .Pattern = " \d{4} "
  If .Test(s) Then QUATRE = CDbl(.Execute(s)(0))
End With
End Function

J'obtiens bien l'extraction du boitier. Après il faudrait que je vérifie (sur mon fichier j'ai à peu près 4000 désignations différentes). Si je n'ai pas les espaces j'avais remarqué que si j'avais une valeur de 1000µF elle ressortait : avec les espaces ce n'est plus le cas.

Merci à vous tous en tout cas et bonne continuation.
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
618