Extraction d'une chaine de caractere à partir de caractère récurent.

Fermé
CartmanGN - 7 oct. 2020 à 15:37
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 20 oct. 2020 à 09:26
Bonjour,

J'aimerais extraire une chaine de caractère d'une cellule à partir de plusieurs caractères récurent.

Je m'explique, voici le contenu de mes cellules:

CAP-CERM 10nF,20%,200V,X7R,Poly T
CAP-CERM 2.2UF,20%,16V,X5R,,0603
RES-TF 4.7k,5%,63.0mW,200ppm/C,155
RES-TF 100R,0.5%,63.0mW,200ppm/C,15


Je voudrais en extraire 2 infos. Les valeurs: 10n, 2.2u, 4.7k et 100 et les tolérances: 20, 20, 5 et 0.5.

Pouvez-vous m'aider ? Merci
A voir également:

41 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
9 oct. 2020 à 14:11
Indispo cette am mais ce soir tu auras surement une nouvelle version de la fonction à contrôler/valider.
Sans doute ok mais autant que tu testes avant l'étape suivante : ne mettre que les valeurs et non des formules pour éviter des calculs pénalisants
0
C noté, j’essaierai d'y jeter un coup d’œil ce soir. Au pire demain matin.
Merci.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
10 oct. 2020 à 09:54
Bonjour,

Si tu veux tester sur plus de cas et dire si ça te parait ok. Essaie de varier les unités et de te rappeler les cas particuliers qui t'obligeaient à un traitement manuel.
Explications dans le fichier.
https://www.cjoint.com/c/JJkhY2z3gzd
eric
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 10 oct. 2020 à 19:55
Bonjour,

J'ai pu avancer aujourd'hui.
Les feuilles REM sont faites.
J'ai un peu démarré la feuille Version :
- liste des composants triée, si ça te va on pourra supprimer la feuille Parts.
- liste des REM à partir de D1
Je n'ai pas encore touché à tes formules ici.
Si tu veux voir ce que ça donne : bouton MAJ dans Version!A1
https://mon-partage.fr/f/KljsLggu/
eric

PS : je crois que je me suis mélangé dans tes abréviations. Il faut sans doute comprendre BOM pour REM

0
En effet, BOM se sont les nomenclatures de chaque version de carte à fabriquer et REM la description de chaque composants.

Il me parait compliqué de supprimer la feuille Parts, ceci est la liste des tous les composants issue des données clients.
Exemple dans ton deuxième fichier, ATT200 est un composant non monté dans toutes les versions et il n'est plus présent dans la feuille Version.

Je ne comprend pas => liste des REM à partir de D1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 10 oct. 2020 à 23:19
Tu as combien de BOM maxi par fichier ?
N'oublie pas le fichier du post 26 qui reste d'actualité pour tester la fonction.
Tu as seulement 'valeurs' à tester, 'valeur' s'appuyant sur lui.

Tu pourrais expliquer BASE dans Version (col C) stp ?
Pourquoi vouloir trier les BOM par nombre de composants ?
Pour moi des versions devraient être dans l'ordre chronologique. Auquel cas je comprendrais que tu prennes le 1er BOM comme base.
eric

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
11 oct. 2020 à 09:40
Re,
post 12 : 3f)... si aucun REM, le composant est 'NM' dans toutes les versions.
Comment peut-on avoir un REM absent de tous les BOM si leur liste est issue des BOM ?
Je pense qu'il faudrait ajouter un BOM virtuel 'DEFAUT-0-0' avec la liste de ces REM ex-nihilo
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
11 oct. 2020 à 12:41
Est-ce que les caractères | et ; sont (et seront) toujours absents des REM ?
Si non, m'en fournir 2.
0
En général, le nombre de BOM est inférieur à 10 mais parfois cela peu monté à 15, voir 20 mais c'est très rare.

La colonne BASE est une version "virtuelle" qui correspond au maximum de composant monté.
Je remplie cette colonne avec le premier REM que je trouve dans une BOM en allant de gauche à droite.
Elle me sert à générer mon programme avec le plus de composant renseigner, pour gérer le moins possible de différence ensuite.

Trier les BOM par le nombre de composants est juste plus pratique pour moi par la suite. Pas forcement nécessaire en automatique pour l'instant car facile à contrôler lors de la copie des colonnes issue des fichiers clients.

Comme expliquer au dessus, un composant peut être non monté dans toutes les versions et donc ne pas avoir de REM renseigner. D’où la liste complète des composants dans l'onglet 'Parts' et la version de BASE qui rassemble le plus d'info possible sur tout les composants.

Dans les autres exemples fournit, je ne vois pas de "|" et de ";". De mémoire, le ";" peut être présent mais pas "|"
Au pire, si ces caractères sont gênant, ils peuvent être remplacé dans tout les REM de toutes les BOM par ",".
0
Bonjour,

Je viens d'essayer les fonctions 'valeurS' et 'valeur' et elles fonctionnent pour la plupart des BOM de mes différents clients, à quelques exceptions prêt, évidement ...

Ci-dessous le lien vers un fichier avec les exceptions:
https://www.cjoint.com/c/JJmgHLqCU8i
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 12 oct. 2020 à 22:58
Bonjour,

J'ai voulu avancer ce qui était en cours : la feuille version.
Je verrai les cas particuliers ensuite.

Comme expliquer au dessus, un composant peut être non monté dans toutes les versions et donc ne pas avoir de REM renseigner. D’où la liste complète des composants dans l'onglet 'Parts' et la version de BASE qui rassemble le plus d'info possible sur tout les composants.
Si tu veux bien, on reste avec mon idée d'une feuille dédiée à ces composants. La feuille parts est vouée à disparaitre.
Toute feuille dont le nom commence par BOM-VIRTUEL- voit ses Part recensés mais est non listée dans Version.

Un bouton MAJ dans Version!A1 raz la feuille et la reconstruit.
Plus de formule dedans.
pour faire bonne mesure j'ai aussi mis tes MFC (c'est gourmand en ressource, si plusieurs milliers ça se ressent) avec des couleurs en dur. De toute façon indispensable si tu veux vraiment trier les BOM.
Regarde si l'ensemble te parait cohérent (bonds REM, couleurs ok, etc)

En B j'ai simplifié et laissé une formule.
A contrôler. Si nok me préciser les conditions et le résultat voulu
https://mon-partage.fr/f/mpY5azSK/
eric

PS : je n'avais pas vu ton post 32 perdu au milieu...
Il me parait compliqué de supprimer la feuille Parts, ceci est la liste des tous les composants issue des données clients.
Je pensais qu'elle était fabriquée depuis les BOM
Si ce que je t'ai proposé te complique les choses je peux me servir de Parts

Je ne comprend pas => liste des REM à partir de D1
Normal, il faut lire liste des BOM en D1:Dx
En tête de module de la macro tu as une constante Const col1BOM = 4
à modifier si tu veux te libérer des colonnes devant en cas de besoin.
eric

0
Je réitère et insiste un peu, l'onglet Parts me parait indispensable, il est le seul fichier à lister la totalité des composants d'une carte au sens large. Cela va des composants électroniques mais aussi des étiquettes d'identifications présent sur la carte, les éventuelles vis, radiateurs, ...
Au pire, cette liste peut être intégré directement dans la feuille "Version" - Colonne A, triée par ordre chrono. de A-Z.

Indispensable, tout comme la colonne BASE dans l'onglet "Version". Cette version virtuelle, la plus complète possible, est le point départ de notre programme de test ensuite.

Sinon, dans l'onglet "Version", plus de formule où je finissais par me perdre, COOL.
Il me manque 2-3 colorations sous conditions mais je les rajouterai à la fin.
Dans la colonne B, rien à dire, peut-être que cette colonne sera supprimée lorsque l'on attaquera l'onglet Recap Diff.

Ah, ok pour la liste des BOM à partir de D1 et si j'ai bien compris, modifiable avec la variable col1BOM. Si col1BOM=6, liste des BOM à partir de F pour libérer 2 colonnes au départ.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 14 oct. 2020 à 09:26
Bonjour,

t'inquiète, j'en avais tenu compte.
Version est pour ainsi dire fini, avec le retour de Parts pour la liste.
Je fais encore qq contrôles ce matin et tu l'auras ensuit à tester.
Par contre ceux là n'ont pas de REM dans cette feuille et n'en auront pas.

Pour la fonction, j'ai ajouté une partie des cas particuliers.
Il me reste des lignes en orange où tu dois me dire ce que tu veux en résultat.
Contrôle quand même ceux que je n'ai pas surlignés.
Pour les CMS il faudrait que tu trouves d'autres types (capa, etc) car m'est avis que tous sont différents.
https://mon-partage.fr/f/koTxANz9/
eric

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 14 oct. 2020 à 10:22
suite...
venant d'avoir un coup de chaud sur mon PC je préfère te livrer la version des fois que ça se renouvelle et que j'ai des difficultés à y accéder.
Je suis relativement confiant bien que n'ayant pas fini tous les contrôles. A toi d'être vigilant et d'être exhaustif.

ok pour la liste des BOM à partir de D1
Voilà, tu as compris le principe. Mais non testé, à toi de le faire à l'occasion.
Comme tu seras susceptible d'y mettre des formules voilà ce que j'ai prévu :
lors de la raz de la feuille je préserve les cellules ligne 2 jusqu'à cette colonne.
En fin de réalisation je recopie toutes les formules et les formats (y compris MFC) du nombre de lignes nécessaires.
Les colonnes A:C ne doivent pas bouger.
Les MFC restent donc sur ces 3 colonnes pour tes évolutions. J'ai simplifié les tiennes, regarde si c'est ok car j'ai fait à l'à-peu-près vu que j'avais plein de #REF dedans suite à mes manips.
Voir aussi la formule en B2.

La dernière version de la fonction y est :
https://mon-partage.fr/f/UDTsYkBx/
eric
0
Recap des MFC:

Colonnes D,E,F,...: si contenu ='NM' => Gris, si contenu de D,E,F,... == de contenu de C => Jaune.
Colonne C: si contenu de NM => Gris.
Colonne A: si contenu ='NM' => Gris, si un des contenu de D,E,F == du contenu de C => Jaune.

Formule B2:
Si C2='NM' => NM ALL VERSION
Si un des contenu de D,E,F == du contenu de C => VERSION.

Voilou pour les MFC.

La colonne B, peut-être masquer/cacher, le résultat est juste utilisé dans l'onglet Recap Diff.

J’essaie de faire des essais avec d'autre BOM dans la journée.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
14 oct. 2020 à 11:28
Les MFC sur A:C tu peux les faire à ton goût, elles sont en théorie conservées.
Au-delà (D et +) me signaler les défauts avec les détails en précisant la cellule que j'adapte la macro.
Là je ne sais pas si c'est un récapitulatif que tu fais ou si tu signales un pb...
Déposer un fichier à jour avec un détail des anomalies quand tu auras fini tes contrôles.

Pour la fonction, rester sur le fichier du post 36 pour les tests. Idem, déposer un fichier avec tes remarques. Une seule ligne par cas particulier suffit, inutile de surcharger.
0
Pour les D et+, aucune remarques pour la remonté d'info.

Par contre, lorsque je fais MAJ, onglet 'Version', colonne A, cela me supprime les composants NM dans toutes les versions sauf pour ATT400.

Exemple: C104,C105 et C106, composants présent dans l'onglet 'Parts' mais pas dans l'onglet 'Version'.

Je te redis pour la fonction, si nouveau cas particulier.
0
J'y suis allé peut-être un peu fort ...

J'ai chargé un autre exemple avec seulement 3 versions et j'ai donc gardé que 3 onglets de versions (PB3261000, PB3265800 et PB3265500)
Et malheureusement la Macro s’arrête rapidement ...

=> Traitement-des-diff-de-BOM-TS124---projet1.7.xlsm
https://www.cjoint.com/c/JJooD0mXgmi

Petite question, le résultat de VAL et TOL dans les onglets de version sont MAJ lorsque que l'on appui sur le bouton MAJ ?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 14 oct. 2020 à 17:47
Le pb c'est que tu es un peu trop lent. Il va falloir faire un effort, pas sûr que je puisse y consacrer trop de jours. En temps ordinaire je me limite aux questions qui se règlent 1 jour ou 2 maxi...
Tu es resté sur la version 1.4 d'il y a 2 jours alors que je t'ai mis une 1.6 (qui corrige cette ano) au post 37.
Tu peux refaire tous les tests. Numérote ta version 1.6.1 en ajoutant un chiffre et non 1.7 qu'on s'y retrouve
Dans Parts il ne doit plus y avoir qu'une seule colonne A. La macro s'occupe du tri et attend les données ici, en A.

Et tu n'as toujours pas téléchargé le fichier de test de la fonction du post 36 qui a lui aussi évolué et dont j'attend le retour.
En fait on travaille les 2 trucs en parallèle : fonction et remplissage des feuilles

Petite question, le résultat de VAL et TOL dans les onglets de version sont MAJ lorsque que l'on appui sur le bouton MAJ ?
oui. Je raz le maximum et recalcule l'intégralité du classeur à la MAJ.
eric

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 14 oct. 2020 à 18:23
PS : je viens de voir que je n'avais pas mis la dernière version de la fonction dans la 1.6
Prend celle-ci pour tester v1.6 :supprimé, voir post 44
Pour la fonction j'ai vu que maintenant les IC, Q etc sortaient à tort.
C'est le pb des cas particuliers qu'on rajoute. On les intégre mais ça abime l'existant qu'il faut recorriger... Je vois plus tard
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
Modifié le 14 oct. 2020 à 18:28
Fichier précédent supprimé, j'ai corrigé la fonction.
Donc à tester :
v 1.6 avec la dernière fonction : https://mon-partage.fr/f/lxSHxZjx/
fichier test fonction : https://mon-partage.fr/f/G4jlZPrl/
Désolé pour le faux départ

Et j'ai regardé ton fichier 1.7 : ça peut pas le faire, tes noms de feuilles ne sont pas au format x-x-x attendu. Je pensais qu'on s'était mis d'accord là-dessus. Il faut que je puisse les distinguer de toutes les autres
Renomme-les si tu veux tester.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
15 oct. 2020 à 06:54
Bonjour,

essaie d'être plus réactif qu'on en finisse cette semaine.
Je ne garanti rien pour la semaine prochaine.
eric
0
Le nom et le nombre de version de BOM change pour chaque projet.

Si le nom des versions et donc les onglets sont en dur dans la Macro, il vaut mieux les appelé version1, Version2, Version3,...

La macro prend t'elle en compte le nombre de Version et donc d'onglet.
Si non, n'est-il pas préférable d'avoir une console de config pour rentrer le nom des versions et leurs nombres au démarrage.
0
J'avais testé la fonction 'VAL' et 'TOL' de ton fichier et remonté un fichier avec des nouvelles particularités.

Il reste encore des cas particuliers. voir explication dans fichier joint.
https://www.cjoint.com/c/JJplAvjwa6i

En ce qui concerne la recopie dans l'onglet version, tout me semble correct.

Et désolé pour les réponses tardives, je suis actuellement en remote Control avec un client en Estonie...
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
15 oct. 2020 à 18:14
Bonjour,

le soucis c'est que moi ça commence à être chaud en temps disponible. Déjà aujourd'hui, et encore demain.

Pour L680 => Val=100u et TOL=30
Pour les L et D tu avais dis que Valeur suffisait. Il faut une exception si Tol est présente ?
eric

0
Oui, exception si Tol est présent.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
19 oct. 2020 à 11:02
Bonjour,

la fonction ne se prête pas facilement à l'adaptation aux cas que tu as ajouté.
Il faut que je la refasse entièrement.
Peut-être dans la journée, sinon mercredi. Normalement j'ai tous les éléments mais au cas où jette un oeil de temps en temps.
Je te rappelle que si tu t'inscris, tu peux être alerter par mail d'un nouveau post.
eric
0
Pas de Pb, de mon coté j'ai réussi à traiter le projet en cours.

Je reçois une notification et un mail juste en mettant mon adresse mail avec mes réponses.
Merci.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 20 oct. 2020 à 01:15
J'ai fini plus tard que prévu...
J'ai essayé de bien séparer les étapes même si le code est plus long, avec qq commentaires.
Comme ça si tu as des nouveaux formats, avec des notions de programmation et un peu de logique tu pourras faire évoluer.

Si tu pouvais trouver du temps demain (edit : aujourd'hui) pour tester qu'on traite les ano tant que s'est frais stp
https://mon-partage.fr/f/bSqajfPo/
eric

0