Microsoft 365 chercher un mot dans une cellule pour affecter une donnée dans la ligne trouvée

chrisfly

XLDnaute Nouveau
Bonjour,
je débute débute en VBA. j'ai trouvé un début de code sur le forum pour faire ce que je souhaite mais sans succès.
j'ai un tableau excel avec 2 colonnes. dans la première colonne il y a X lignes contenant des phrases.
dans la deuxième colonne je voudrais affecter une valeur (par exemple le mot "fruit") quand dans la première colonne on trouve le mot pomme ou poire ou banane contenu dans la phrase.
j'ai une question subsidiaire, les majuscules et les minuscules dans la colonne 1 ont elles de l'importance ?
merci d'avance pour vos lumières.
chris
 

chrisfly

XLDnaute Nouveau
bonjour Staple 1600 et merci à Micheldu52. j'ai préparé un fichier pour illustrer mon besoin. ce sera compliqué avec seulement une fonction excel car je vais avoir plusieurs catégories (je ne peux pas envoyer le vrai fichier car c'est pour mon boulot et pas communicable). imaginons un inventaire et que pour chaque objet j'y affecte une catégorie. on affecte la catégorie en fonction d'un mot qu'on trouve ou pas dans la colonne phrase qui définit l'objet. j'ai indiqué (uniquement pour les besoins exemple car cette colonne n'existe pas dans la réalité) une troisième colonne pour préciser le mot clef qui permettrait de définir la catégorie. j'ai besoin de VBA car il y a beaucoup de lignes et une dizaine de catégorie et potentiellement de nouvelles à venir. voilà j'espère que c'est clair avec l'Excel en pj. merci beaucoup.
 

Pièces jointes

  • ex affectation catégorie.xlsx
    18.5 KB · Affichages: 9

micheldu52

XLDnaute Occasionnel
Bonjour,

Dis moi si le fichier toto ci-joint, va dans le sens de ce que tu souhaites? (si oui dans l'onglet travail, il n'y a pas de limites de nombre d'exemples)

Après, si ca t'aide on peut creuser cette approche

Cordialement,

Michel

(pour tester remplace rouge-gorge par pivoine)
 

chrisfly

XLDnaute Nouveau
Bonjour, merci encore pour cette aide, mais mon besoin est de faire remplir en automatique la colonne B de l'onglet travail en ayant paramétré dans une macro le fait que quand dans une boucle allant de 1 à X lignes, quand je trouve le mot pivoine dans la cellule de la colonne A (cellule qui peut contenir plusieurs mots comme "pivoine fanée"), alors la macro saisit dans la même ligne mais colonne B le mot fleur. et ainsi de suite. je ne sais pas si je suis très claire .... en fait le travail peut se faire en filtrant sur la colonne A le mot pivoine et en remplissant à la main la colonne B, mais je voudrais automatiser. car mes occurrences en colonne A vont être par ex : pivoine fanée, pivoine à donner, la magnifique pivoine, etc le filtre serait sur pivoine et le mot à saisir en colonne B serait fleur. merci encore et pas d'urgence dans la réponse. je continue aussi de cresuer de mon côté. Chris
 

fanch55

XLDnaute Barbatruc
Salut à Tous,
ChrisFly, comme tu sembles vouloir faire du VBA,
ci-joint un fichier Excel sans macros ( par sécurité )
tu devras insérer le code suivant dans un Module
VB:
Option Explicit
Public Function Cat(ByVal Phrase As String) As String
Dim MS_Range As Range
Dim Cell     As Range
Dim Elem    As Variant
Cat = vbNullString
Set MS_Range = Sheets("Param").ListObjects("Param").ListColumns("MotClef").DataBodyRange
   
    For Each Elem In Split("- , . ;'")
        Phrase = Replace(Phrase, Elem, " ")
    Next
   
    For Each Elem In Split(Phrase)
        ' on n'utilise pas le Find car erreur 50290 aléatoire ...
        For Each Cell In MS_Range
            If Elem Like Cell Then
                Cat = Cell.Offset(0, -1)
                Exit Function
            End If
        Next
    Next
End Function
Puis celui-ci dans le code de la feuille Param
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Feuil1").Calculate
End Sub
A voir par la suite si c'est adapté à un grand nombre d'articles...
J'avais bien pensé au powerquery, mais c'est délicat à modifier et expliquer rapidement ... :confused:
 

Pièces jointes

  • affectation catégorie-1.xlsx
    36.5 KB · Affichages: 7
Dernière édition:

chrisfly

XLDnaute Nouveau
Bonjour à tous, Chris, Fanch55 et Micheldu52 merci à tous les 3 pour toutes ces options de solution. je vais regarder celle qui s'applique au mieux à mon fichier et à ses nombreuses lignes. je ne connaissais pas powerquery mais je vais aussi creuser car j'ai un autre fichier dans un autre contexte et cette fonction me fera gagner du temps de traitement. très bonne semaine. Chris
 

Discussions similaires

Statistiques des forums

Discussions
312 187
Messages
2 086 024
Membres
103 097
dernier inscrit
Benduch