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

  • Initiateur de la discussion Initiateur de la discussion Vero2782
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V

Vero2782

Guest
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
 
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

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:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…