VBA - Categoriser par mots cles

  • Initiateur de la discussion Initiateur de la discussion titymax
  • 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 !

titymax

XLDnaute Occasionnel
Bonjour à tous,

Je reviens vers vous dans l'espoir que vous puissiez m'aider à résoudre la problématique suivante par VBA (macro).

Comme vous pourrez le voir dans l'exemple joint, je dois catégoriser des données à partir de mots clés contenus dans une base.

Un onglet "CATEGORIES" contient la liste des catégories en fonction de mots clés (base).
L'onglet "DONNEES " contient les données qui sont à répertoriées par catégories.

Ce que je souhaite, c'est pouvoir via une macro, aller écrire dans la colonne A, la catégorie à laquelle appartiennent les données correspondantes listées dans la colonne B en fonction des mots clés quelles contiennent.

EX : Ligne 2 colonne B nous avons " Les tendrons sont frais et épicés", cette donnée contient le mot clé "tendrons", la macro doit donc afficher en A2 la catégorie "CHARCUTERIE".

Merci d'avance pour votre aide précieuse.
 

Pièces jointes

Dernière édition:
Re : Categoriser par mots cles

Bonjour,
un essai via une fonction personnalisée :
Code:
Function Categorie(chaine As String, plage As Range) As String
Dim c As Range
For Each c In plage
  If LCase(chaine) Like "*" & LCase(c.Text) & "*" Then Categorie = c.Offset(0, 1).Text: Exit Function
Next c
End Function
et en A2 de l'ongler Données :
Code:
=Categorie(B2;CATEGORIES!$C$2:$C$8)
A+
 
Re : Categoriser par mots cles

Bonjour David,

Pour des raisons propres à mon application, je ne souhaite pas écrire de formules dans les cellules, je préfèrerais une solution purement macro qui une fois exécutée donne le même résultat.

Merci de m'avoir consacré du temps.
 
Re : VBA - Categoriser par mots cles

Bonjour le fil, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim D As Object 'déclare la variable D (DONNEES)
Dim C As Object 'déclare la variable C (CATEGORIES)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)

Set D = Sheets("DONNEES") 'définit l'onglet D
Set C = Sheets("CATEGORIES") 'définit l'onglet C
DL = C.Cells(Application.Rows.Count, 3).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 3 (=C) de l'onglet C
Set PL = C.Range("C2:C" & DL) 'définit la palge PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
    Set R = D.Columns(2).Find(CEL.Value, , xlValues, xlPart) 'définit la recherche R (Recherche le mot clé dans la colonne 2 (=B) de l'onglet D)
    If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
        PA = R.Address 'définit l'adresse de la première occurrence trouvée
        Do 'exécute
            R.Offset(0, -1).Value = CEL.Offset(0, 1).Value 'récupère la catégorie
            Set R = D.Columns(2).FindNext(R) 'redéfinit la recherche R (occurrence suivante)
        Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe de nouvelles occurrences ailleurs qu'en PA
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
End Sub
 
Re : VBA - Categoriser par mots cles

Bonjour Robert,

Merci bcp pour ce code, je m'en servirais peut être si jamais je rencontre des problèmes par la suite dans mon application.

En effet, avec la solution proposée par David, je suis arrivé à l'utiliser comme une macro en insérant dans le code de mon application un "Formula.Local" qui va bien et pour le moment ça fonctionne.

Bref, merci à vous deux et plus généralement à tous ceux qui ont pris le temps de s'intéressé de prés ou de loin à mon problème.

Bonne continuation à tous les forumeurs !!!

A+
 
- 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

Réponses
16
Affichages
2 K
Retour