Formule pour convertir poids dans excel

Résolu/Fermé
Sepion06 Messages postés 3 Date d'inscription samedi 25 juin 2022 Statut Membre Dernière intervention 4 juillet 2022 - Modifié le 25 juin 2022 à 10:12
Sepion06 Messages postés 3 Date d'inscription samedi 25 juin 2022 Statut Membre Dernière intervention 4 juillet 2022 - 4 juil. 2022 à 13:29
Bonjour les humains,

Après moulte recherche dans mon cerveau, sur youtube, divers forum, site spécialisé dans les fonctions Excel, je n'ai pas trouver de solution à mon problème.

J'ai le tableau excel d'un fournisseur de produit frais, les données sont rentré de différente façon dans la même colonne.
J'ai réussi à retirer les lettres et les "." en revanche je n'arrive pas à homogénéiser les résultats :

Env. 2.5KG
2.5 KG
125g
125g
2 x 125g

Le résultat attendu est le suivant :

2500
2500
125
125
250

Merci d'avance :)




Configuration: Configuration: Windows / Chrome 102.0.0.0
A voir également:

4 réponses

brucine Messages postés 15371 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 27 juin 2024 2 069
25 juin 2022 à 10:15
Bonjour,

Je ne peux pas vérifier directement, mon PC est planté, il me semble de mémoire que si une cellule texte C1 contient 2.5 il suffit d'écrire =C2*1 pour la transformer en nombre (2,5) sans quoi il faut rechercher et remplacer tous les points pour les remplacer par des virgules.

Tu ne peux pas davantage supprimer l'unité de masse sans quoi Excel n'a aucun moyen de faire la différence entre 2,5 g et 2,5 kg: il faut appliquer une conditionnelle multipliant par 1000 si par exemple DROITE(C2;2)="KG".

Reste le problème des lots 2 x 125 g: on ne peut procéder de la même manière qu'en reconnaissant le caractère "x" s'il ne figure pas ailleurs (c'est improbable) ou par sa position si elle est toujours la même, la quantité toujours inférieure à 10 et le contenant toujours inférieur à 1000: de même manière, on fera alors une conditionnelle STXT(C2;3;1)="x" conduisant dans l'affirmative à multiplier le résultat converti en nombre par CNUM du caractère de gauche STXT(C2;1;1) par celui de la masse unitaire, si sur 3 caractères STXT(C2;5;3).
1
Sepion06 Messages postés 3 Date d'inscription samedi 25 juin 2022 Statut Membre Dernière intervention 4 juillet 2022
25 juin 2022 à 10:35
Merci pour ta réponse,

J'y vois un peut plus claire. J'ai bien remplacé les "." par une "," je cherche maintenant à écrire une formule équivalente à celle si :
Exemple : 1,5
SI la cellule contient "," ALORS *1000

Exemple : 2 x 125
SI la cellule contient "x" ALORS remplacer "x" par "*" (pour multiplier 2*125) RESULTAT attendu : 250

J'essaye de différente manière mais sans succès.
0
PapyLuc51 Messages postés 4349 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 24 juin 2024 1 424
25 juin 2022 à 11:15
Bonjour,

J'ai vu cette petite vidéo YouTube il n'y pas bien longtemps sur la création d'une fonction personnalisée pour extraire les nombres.

Tu peux peut-être t'en servir après avoir remplacé les point par les virgules

Cordialement
0
via55 Messages postés 14432 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 21 juin 2024 2 713
27 juin 2022 à 00:44
Bonsoir à tous

Avec en A2 le texte épuré de tout ce qui n'est pas chiffres ou x, et avec le point remplacé par une virgule, formule pour multiplier les nombres décimaux par 1000 ou effectuer l'opération x :
=SI(NB.SI(A2;"*x*")=1;CNUM(GAUCHE(A2;TROUVE("x";A2)-1))*CNUM(DROITE(A2;NBCAR(A2)-TROUVE("x";A2)));SI(ENT(A2)<>A2;A2*1000;A2))

Ou sinon pour tout faire traiter par fonction personnalisée en VBA (suppression des textes, remplacement des points, conversion des kg en g et multiplication par quantités) voilà la fonction personnalisée à copier et coller dans un module de l'éditeur VBA (Alt + F11 pour ouvrir l'éditeur - Insertion Module - copier-coller la macro dans la plage
Function extrairenb(item)
a = WorksheetFunction.Substitute(item, "Env. ", "")
b = WorksheetFunction.Substitute(a, ".", ",")
If b <> a Then multi = 1000 Else multi = 1
c = WorksheetFunction.Substitute(b, "KG", "")
d = WorksheetFunction.Substitute(c, "g", "")
If Len(d) > 5 Then
espac = WorksheetFunction.Find("x", d)
pd = Left(d, espac - 1) * Right(d, Len(d) - espac)
extrairenb = pd
Else
extrairenb = d * multi
End If
End Function

La fonction perso s'emploie ensuite comme toute fonction Excel selon la syntaxe = extrairenb(cellule de la chaîne à traiter)

Cdlmnt
Via
0
Sepion06 Messages postés 3 Date d'inscription samedi 25 juin 2022 Statut Membre Dernière intervention 4 juillet 2022
4 juil. 2022 à 13:29
Merci beaucoup pour cette fonction personnalisé !

Bonne continuation
0