XL 2010 comment extraire des mots

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 !

STEPH63000

XLDnaute Nouveau
bonjour je cherche une solution pour extraire est compter des groupes de mots en feuille 1 colonne b.
je m'explique: je voudrais savoir combien j'ai de fois 1 baguette ou 2 baguettes ou 3 baguettes ou 1 baguette ancienne ou 2 baguettes ancienne etc........
réponse du calcul en onglet baguette.
merci d'avance je vous joint mon fichier
 

Pièces jointes

Bonsoir Steph
Je ne sais pas si tu souhaites une solution VBA , ou par formules, pour les formules je laisse la place à nos spécialites.
En VBA je pense que quelque chose est possible, mais celà demanderait une petite réorganisation de ta liste de commandes car je suppose que l'exemple des baguettes n'est pas exhaustif (tu auras d'autres articles à compter, n'est-ce pas ?)

PS J'ai l'impression que ta demande concerne des commandes à livrer pendant ce confinement et je suppose que tu fais celà bénévolement, donc si je peux t'aider ce sera volontier.

Bien à toi, à vous
@+Thierry
 
Bonjour
il faudrait déjà commencer par corriger les fautes d’orthographe
2 baguettes ancienne
2 baguette ancienne
mais bon
si on laisse tel quel par exemple

=NB.SI(B2:B50;"*2 baguette* ancienne*")

exemple 2 tu a 7 baguettes anciennes
=(NB.SI(B2:B50;"*2 baguette* ancienne*")*2)+NB.SI(B2:B50;"1 baguette* ancienne*")
 
Bonsoir @STEPH63000 🙂, @_Thierry 🙂, @patricktoulon 😉,

Une version avec une fonction personnalisée écrite en VBA.
La fonction s'appelle : Quantite(Plage , Quoi) où :
  • Plage est la plage de cellules où on recherche le texte
  • Quoi est le texte qu'on recherche
Exemple: =Quantite(Feuil1!$B$2:$B$199;A1). On recherche dans la plage $B$2:$B$199 de la feuille Feuil1 le texte de la cellule A1.

Il est indispensable que les différents produits au sein d'une même ligne de commande soient séparés par le signe +.

nota : Une amélioration serait de remplacer les caractères accentués par les mêmes caractères mais non accentués. Je compte le faire mais je ne retrouve pas la fonction... Si quelqu'un en a une sous le code, ça m'éviterait de la réécrire.

=> voir la version la dernière version v2 incluant la non prise en compte des accents ICI
 

Pièces jointes

Dernière édition:
Bonjour @Staple1600 🙂

Si quelqu'un en a une sous le code, ça m'éviterait de la réécrire.
Je me réponds (ça distrait le confinement) 😉.

Voici la v2 avec la suppression des accents et des lettres liées.

le code dans module1:
Code:
Function Quantite(Plage As Range, ByVal Quoi As String)
Dim x, i&, s, n&
   Quoi = SansAccent(Quoi)
   For Each x In Plage: n = n + Combien(SansAccent(x), Quoi): Next x
   If n > 0 Then Quantite = n Else Quantite = vbNullString
End Function

Function Combien(ByVal Dans As String, ByVal Quoi As String) As Long
Dim i&, s, n&
   Quoi = LCase(Application.Trim(SansPlurielenS(Quoi)))
   s = EclaterCmde(Dans)
   For i = LBound(s) To UBound(s)
      s(i) = LCase(Application.Trim(SansPlurielenS(s(i))))
      If Not (Left(s(i), 1) >= "1" And Left(s(i), 1) <= "9") Then s(i) = "1 " & s(i)
      If s(i) = Quoi Then n = n + 1
   Next i
   Combien = n
End Function

Function EclaterCmde(ByVal x As String)
   EclaterCmde = Split("0+ " & Application.Trim(LCase(x)), "+")
End Function

Function SansPlurielenS(ByVal x As String)
Dim i&, s
      s = Split(x)
      For i = LBound(s) To UBound(s)
         If LCase(Right(s(i), 1)) = "s" Then s(i) = Left(s(i), Len(s(i)) - 1)
      Next i
   SansPlurielenS = Join(s)
End Function

Function SansAccent(ByVal x)
Const lettresAvec = "Ÿ,À,Á,Â,Ã,Ä,Å,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ñ,Ò,Ó,Ô,Õ,Ö,Ù,Ú,Û,Ü,Ý,à,á,â,ã,ä,å,ç,è,é,ê,ë,ì,í,î,ï,ñ,ò,ó,ô,õ,ö,ù,ú,û,ü,ý,ÿ"
Const lettresSans = "Y,A,A,A,A,A,A,C,E,E,E,E,I,I,I,I,N,O,O,O,O,O,U,U,U,U,Y,a,a,a,a,a,a,c,e,e,e,e,i,i,i,i,n,o,o,o,o,o,u,u,u,u,y,y"
Dim i&, j&
   For i = 1 To Len(x)
      j = InStr(lettresAvec, Mid(x, i, 1))
      If j > 0 Then x = Replace(x, Mid(x, i, 1), Mid(lettresSans, j, 1))
   Next i
   x = Replace(x, UCase("œ"), "OE"): x = Replace(x, "œ", "oe")
   x = Replace(x, UCase("æ"), "AE"): x = Replace(x, "æ", "ae")
   SansAccent = x
End Function
 

Pièces jointes

Dernière édition:
e vois que tu n'as pas compris mon appel du pied

J'étais déjà parti dans l'écriture du code 🙁.Donc, j'ai continué.

Concernant , le lien que tu as mis à ma disposition. Cela fait deux fois en très peu de temps que tu m'indiques deux productions à moi que j'avais complètement oublié. Il suffit. J'ai l'impression qu'un autre s'est approprié ma mémoire 😛. Sans rire je commence à m'inquiéter pour moi 😵.
J'ai téléchargé mon vieux fichier. Il fonctionne encore. Au moins un truc qui ne se déglingue pas avec le temps.

Beau dommage. Ça me rappelle quelque souvenirs surtout la complainte du...

Quand à soulever son coude, ça m'a fait penser à descendre pour en décapsuler une (p'tite blonde) (sans rire une 1664 - sans alcool)
 
Dernière édition:
Re

•>mapomme
La pelle, le pied, une faveur 😉
Y a pas un mot qui fait tilt dans ces trois mots 😉 ?
(Rapport au message caché dans le message#6)
😉
Il est vrai qu'il est des appels du pied qui parfois aboutissent encore au 22 à Asnières...😉

EDITION: du dimanche matin (à l'heure des croissants)
Juste pour mapomme
Merci.
Signé: Tonton qui tousse 😉
 
Dernière édition:
Bonjour,
Avez-vous trouvé votre solution ?
Dans le cas contraire, je vous conseille déjà de mettre vos libellés baguettes dans une liste déroulante, ce qui vous permettra d éviter les erreurs de libellés et donc de détection du nombre de baguettes par la suite.
Ensuite, normalement la formule précédemment indiquée (nb.si) devrait totalement fonctionner.
De fait, afin de détecter les anomalies, effectuer cette formule (nb.si ou un simple un si(A1=« 1 baguette (...) »; 1;0) sur chaque cellule, ce qui vous permettra de détecter l erreur déjà. Bien souvent un espace supplémentaire, en debut, milieu ou fin de phrase peut provoquer cela... D où l utilité des listes déroulantes...
Enfin, j’ai une autre solution, mais essayez déjà celle là. Utilisez la formule substitute pour supprimer les espaces !

n’hesitez pas à me faire savoir si vous vous en êtes sorti et n hesitez pas à partager le fichier excel sur le forum.
 
Bonjour le fil

Une suggestion en passant
(qui impliquerai un petit remaniement)
01baguette.gif

Ce mode saisie permettrait à terme ne pas seulement dénombrer les baguettes mais de compter aussi le nombre de produits par nom
Et si tu rajoutes une colonne Date Commande, tu pourrais aussi sommer par jour/semaine/mois ou année.

Voila c'était la suggestion du matin (avec une bonne odeur de café chaud et de croissants en prime 😉)

Bonnes fêtes de pâques à tous.
 
merci mapomme pour la version v2. mais maintenant j'ai un autre problème dans mon fichier onglet boulangerie ça me comptabilise bien les 1 baguette, ou 2 baguettes etc.........
mais je voudrais pouvoir additionner le nombre total de baguettes par exemple, et ca ne marche pas car dans certaine cellule il apparais #valeur!
ci joint mon fichier
 

Pièces jointes

- 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

Discussions similaires

  • Question Question
Réponses
2
Affichages
435
Réponses
12
Affichages
682
Réponses
10
Affichages
283
Réponses
5
Affichages
162
Retour