Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Si le mot X dans la colonne A, écrire Y dans la colonne B

Sameuls

XLDnaute Nouveau
Bonjour à tous ! C'est mon premier message je suis impatient d'avoir vos retours constructifs !

J'ai une problématique assez simple mais compliqué à mettre en oeuvre :

Dans ma colonne A, j'ai les intitulés de poste de mes clients, j'aimerais dans la colonne B les catégoriser en fonction de la direction à laquelle ils appartiennent.
Plus concrètement, je veux qui si dans ma colonne A la cellule contient "Ressources Humaines" ou "Recrutement" (dans une phrase qui peut être "responsable de recrutement), sur la même ligne dans la colonne B soit écrit "Direction des ressources humaines", en revanche si je trouve "Vente" ou "Biz Dev", soit écrit "Direction commercia
le" sur la même ligne dans la colonne B.

(A vous de me dire mais j'imagine soit toutes les infos dans la formule, soit un réferentiel sur une 2ème feuille ou la formule va chercher les mots de recherches pour la colonne A et les équivalences pour la colonne B)

Est-ce que cela vous parle et comment faire pour que ça fonctionne ? Evidemment j'aurai plus de "Directions" et plus de mots à chercher mais une fois qu'on a le principe pour 2 ça marche pour plus !

Un grand merci !
 
Dernière édition:

jmfmarques

XLDnaute Accro
Bonjour
c'est avant tout (et rien d'autre) un problème de conception.
il suffit :
- d'une feuille "dico" dont une plage P est réservée à un mot et à sa correspondance
- de subordonner (sur la feuille de saisie) et obliger la saisie en colonne A à une sélection dans la liste de la plage P
- de compléter la colonne B (sur la feuille de saisie) par la correspondance du mot en plage P
 

Sameuls

XLDnaute Nouveau
Bonjour jmfmarques merci beaucoup pour ta réactivité je n'en demandais pas tant !

Ok je crois que je visualise le principe, ma feuille 1 où j'ai en colonne A mes intitulés et en colonne B les directions qui seront générées, et en feuille 2 mon référentiel avec en colonne A les mots à chercher et en colonne B les correspondances.

Par contre je n'ai aucune idée de la formulaire qui permet de faire fonctionner tout ça et c'est bien mon problème :/ Il y a du SI, du Cherche, du OU, mais je ne suis pas assez spécialiste pour faire une formule qui fonctionne...
 

dg62

XLDnaute Barbatruc
Bonjour Sameuls, Jmfmarques

une piste
Code:
Sub recherchemot()
Dim cel As Range
Dim dico As Variant
Dim i As Integer
dico = ActiveWorkbook.Sheets(2).Range("A1:B6").Value

For Each cel In Range("A1:A5")
For i = 1 To UBound(dico)
If cel.Text Like "*" & dico(i, 1) & "*" Then
cel.Offset(0, 1) = dico(i, 2)
End If
Next i
Next cel
End Sub
 

Pièces jointes

  • chercheTxt.xlsm
    18.8 KB · Affichages: 17
Dernière édition:

Sameuls

XLDnaute Nouveau
Ah oui impressionnant ce petit bouton bravo et merci !

Je ne connaissais pas du tout cette manière de faire, je vais creuser j'ai bien trouvé le "gestionnaire de noms" qui semble gérer le référentiel.

Je vais essayer d'appliquer tout ça en réel. Un grand merci pour votre aide rapide !
 

dg62

XLDnaute Barbatruc
Quelques explications sur une variante du code
VB:
Sub recherchemot()
Dim cel As Range
Dim dico As Variant
Dim i As Long
Dim Maplage As Range
Dim derlig As Integer '
derlig = Range("A65536").End(xlUp).Row ' dernière ligne de votre colonne de recherche
Set Maplage = Range(Cells(1, 1), Cells(derlig, 1)) 'plage de recherche

dico = ActiveWorkbook.Sheets(2).Range("A1:B6").Value 'votre liste de référence sur la feuille 2 à modifier

For Each cel In Maplage  ' dans chaque cellule de la plage                       '
For i = 1 To UBound(dico) ' je cherche si
If cel.Text Like "*" & dico(i, 1) & "*" Then  'une valeur de mon dico existe
cel.Offset(0, 1) = dico(i, 2) ' si elle est trouvée la direction est placée en colonne B
End If
Next i
Next cel
End Sub
 

dg62

XLDnaute Barbatruc
Quelques modifs
VB:
Sub recherchemot()
' Déclaration des variables
Dim cel As Range
Dim dico As Variant
Dim i As Long
Dim Maplage As Range
Dim derlig As Long '
Dim derDico As Long
derDico = ActiveWorkbook.Sheets(2).Range("A65536").End(xlUp).Row ' dernière ligne du dico
derlig = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Row  ' dernière ligne de la colonne de recherche
Set Maplage = ActiveWorkbook.Sheets(1).Range(Cells(1, 1), Cells(derlig, 1)) 'plage de recherche
dico = ActiveWorkbook.Sheets(2).Range("A1:B" & derDico).Value ' remplissage du dico avec les valeurs de la feuille 2, colonne A et B
                                                              ' le tableau s'adapte automatiquement lors d'un ajout
For Each cel In Maplage  ' dans chaque cellule de la plage                       '
    For i = 1 To UBound(dico) ' je cherche si
        If cel.Text Like "*" & dico(i, 1) & "*" Then  'une valeur de mon dico existe
            cel.Offset(0, 1) = dico(i, 2) ' si elle est trouvée la direction est placée en colonne B
        End If
    Next i
Next cel
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…