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

XL 2016 VBA Normaliser une description de produits

Vero2782

XLDnaute Nouveau
Bonjour,

J'ai différentes description de produit en colone A et j'aimerais enlever l'information superflue de cette description pour laisser que la description du produit en colone C.

exemple de description de produit : en colone A
Chips 25% moins de sel 141g/6
Savon à main l'orange 500ml/12
Lotion orig. 50ml
etc.

Résultat attentu en colone C
Chips 25% moins de sel
Savon à main l'orange
Lotion orig.

Dans ma feuille excel j'ai fait :
colone B =min(find({1,2,3,4,5,6,7,8,9},A1&"0123456789"))
Colone C = left(A1,B1-1)
(même avec mes formule excel, j'ai décidé d'abandonner pour les chips... tant pis pour le 25% moins de sel mais idéalement, j'aurais aimé le garder dans la description.)

J'aimerais trouver trouver la façon VBA de faire ses opérations. Actuellement, j'ai essayé une Worksheetfunction mais les accolades { } et les guillemets me cause problème.
Range(C1)=application.Worksheetfunction.min(find({1,2,3,4,5,6,7,8,9},A1&"0123456789"))

J'ai aussi essayé avec Formulaarray et ça ne fonctionne pas plus...
Range(C1)=formulaarray=min(find(1,2,3,4,5,6,7,8,9,A1&"0123456789"))

À chaque fois que j'ai des accolades dans mes formules, je galère vraiment plus sur VBA.

Merci

Véro
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Vero2782,

Essayez la fonction personnalisée PRODUITcourt(X) ci-dessous :
VB:
Function PRODUITcourt(X) As String
Dim T

  PRODUITcourt = X
  T = Split(X)
  If T(UBound(T)) Like "#*" And UBound(T) > 0 Then
    ReDim Preserve T(0 To UBound(T) - 1)
    PRODUITcourt = Join(T)
  End If
End Function
 

Pièces jointes

  • Vero2782- ProduitCourt- v1.xlsm
    14.2 KB · Affichages: 39

JHA

XLDnaute Barbatruc
Bonjour à tous,

Peut être en recherchant le dernier espace de la phrase.
A essayer pour le texte en "A2"
Code:
=GAUCHE(A2;MAX(SI(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)=" ";LIGNE(INDIRECT("1:"&NBCAR(A2))))))
Formule à valider en matricielle (Ctrl+Maj+Entrée)

Edit:
Une autre formule (non matricielle) qui recherche le dernier espace de la phrase.
Code:
=GAUCHE(A2;CHERCHE("Ω";SUBSTITUE(A2;" ";"Ω";NBCAR(A2)-NBCAR(SUBSTITUE(A2;" ";"")))))
à valider par entrée

JHA
 
Dernière édition:

Vero2782

XLDnaute Nouveau
Bonjour à vous deux,

Premièrement merci beaucoup de vos réponses.

Ma Pomme : C'était exactement ça que j'avais besoin et ça fonctionne mieux que mes formules originales ça correspond 100% a ce que je cherchais. En plus, j'ai appris a créer un fonction avec ton code c'est un 2 dans 1 pour moi ! Un gros Merci !

JHA : J'ai essayé les deux formules, elle n'ont pas fonctionné pour moi. Peut-être dû à ma traduction français-anglais (même si je crois avoir utiliser les mêmes fonctions).

Encore merci et bonne soirée !

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