Microsoft 365 chercher un mot dans une cellule et en coller une partie dans une case

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 !

Catsnroses

XLDnaute Nouveau
Bonjour,
J'ai un tableau excel dans lequel j'ai une case avec pleins d'articles séparés par un | .
La case ressemble à ça : 1.0 BLABLA | 2.0 ZIGZIG | 1.0 BLABLA1
Dans les colonnes adjacentes en en-tete de colonne, j'ai mis mes articles. Colonne 1 : BLABLA, colonne 2 ZIGZIG, colonne 3 BLABLA1...
Je souhaiterais que les quantités de mes articles (c'est le chiffre avant le nom) se ventilent tout seuls dans les bonnes cases sans le .0
Mon tableau fait plusieurs lignes et les articles ne sont jamais dans le même sens et peuvent être différents (mais j'ai une liste prédéterminés).
Je cherche un code qui aille regarder dans la cellule si elle contient un mot de la colonne et si oui, mette le nombre correspondant
Comment dois-je m'y prendre pour faire tout cela en vba ?
je joint un exemple

merci par avance.
 

Pièces jointes

Bonjour @Catsnroses 🙂,

Via une fonction personnalisée. Copier la formule en B5 vers la droite et vers le bas.
=QtePourDans(Pour, Dans)
  • Pour est la référence à rechercher
  • Dans est le texte dans lequel chercher
Le code dans module1:
VB:
Function QtePourDans(ByVal Pour, ByVal Dans)
Dim x, y
   QtePourDans = ""
   If Trim(Dans) = "" Then Exit Function
   For Each x In Split(Dans, "|")
      y = Split(Application.Trim(x) & " ")
      If LCase(y(1)) = LCase(Pour) Then If Left(y(0), 1) Like "#" Then QtePourDans = Val(y(0)): Exit Function
   Next x
End Function
 

Pièces jointes

Dernière édition:
Bonjour @Catsnroses 🙂,

Via une fonction personnalisée. Copier la formule en B5 vers la droite et vers le bas.
=QtePourDans(Pour, Dans)
  • Pour est la référence à rechercher
  • Dans est le texte dans lequel chercher
Le code dans module1:
VB:
Function QtePourDans(ByVal Pour, ByVal Dans)
Dim x, y
   QtePourDans = ""
   If Trim(Dans) = "" Then Exit Function
   For Each x In Split(Dans, "|")
      y = Split(Application.Trim(x) & " ")
      If LCase(y(1)) = LCase(Pour) Then If Left(y(0), 1) Like "#" Then QtePourDans = Val(y(0)): Exit Function
   Next x
End Function
Bonjour Mapomme, ça fonctionne nickel merci. Par contre j'ai oublié de préciser que des fois, j'ai un - avant la quantité de l'article et dans ce cas cela ne fonctionne pas 🥺. Que dois-je changer pour que cela puisse prendre en compte le negatif ?
 
Re,
des fois, j'ai un - avant la quantité de l'article et dans ce cas cela ne fonctionne pas 🥺. Que dois-je changer pour que cela puisse prendre en compte le negatif ?
Voir le fichier joint avec le code de la fonction dans module1.
 

Pièces jointes

bonjour,

je reviens sur ce code qui fonctionne super bien, sauf que maintenant j'ai de nouveaux fichier dont les articles apparaissent différemment. Voici comme ils apparaissent :
BLABLA1=1.0#ZAGZAG=1.0
J'ai essayé de bricoler la fonction pour que cela cherche a partie de la droite cette fois mais cela ne fonctionne pas. Je penses ne pas avoir saisi toutes les subtilités de la fonction précédente.
Merci pour votre aide.
 
- 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

Retour