Formule pour convertir poids dans excel

Résolu
Sepion06 Messages postés 4 Statut Membre -  
Sepion06 Messages postés 4 Statut Membre -
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

4 réponses

  1. brucine Messages postés 25072 Date d'inscription   Statut Membre Dernière intervention   4 169
     
    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
    1. Sepion06 Messages postés 4 Statut Membre
       
      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
  2. PapyLuc51 Messages postés 4569 Date d'inscription   Statut Membre Dernière intervention   1 512
     
    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
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  4. Sepion06 Messages postés 4 Statut Membre
     
    Merci beaucoup pour cette fonction personnalisé !

    Bonne continuation
    0