Convertir formule en VBA

kakemphaton

XLDnaute Junior
Bonjour,

Je rencontre actuellement des problèmes de lenteurs avec ma formule (mon référentiel fait 5 000 lignes) et ma zone de recherche 10 000 lignes. Je voulais donc la tester en vba, mais je n'y arrive pas.

En pièce jointe, une version très light.

Formule matricielle :

Code:
{=SI(SOMME(ESTNUM(CHERCHE(Dictionnaire!$A$2:Dictionnaire!$A$5501;D2))*1)=0;"Non trouvé";INDEX(Dictionnaire!$B$2:Dictionnaire!$B$5501;EQUIV(VRAI;ESTNUM(CHERCHE(Dictionnaire!$A$2:Dictionnaire!$A$5501;D2));0)))}

Cette formule recherche dans la colonne D de ma feuille traitement. Si un des mots de la cellule est présent dans la feuille dictionnaire, il indique la catégorie, si non "Non trouvé".

Cette formule permet de ne pas être sensible à la casse et si, dans mon dictionnaire le mot lait est présent et dans la cellule le mot laiterie est présent, il va le considérer comme OK, il contient la racine lait.

Si quelqu'un peut m'aider... merci d'avance
 

Pièces jointes

  • Exemple.xlsm
    25.7 KB · Affichages: 72
  • Exemple.xlsm
    25.7 KB · Affichages: 69
  • Exemple.xlsm
    25.7 KB · Affichages: 63

kakemphaton

XLDnaute Junior
Re : Convertir formule en VBA

Bonjour pierrejean,

Merci pour cet essai. Il y a juste un petit souci, j'ai dû mal m'exprimer.

Exemple avec cette Phrase : vaccins divers dont hepatite B.

En essayant avec mon dictionnaire, la macro me renvoie ces divers éléments : vaccin ; divers travaux ; Divers vins.

Or, il devrait me renvoyer que le mot vaccin, car dans cette phrase, je ne retrouve pas "divers travaux" ou "divers vins", mais uniquement vaccin.

La dernière phrase de ma demande a dû être confuse.

Désolé

Merci
 

kakemphaton

XLDnaute Junior
Re : Convertir formule en VBA

Hello le forum,

J'ai essayé ce code provenant d'ici https://www.excel-downloads.com/threads/macro-vba-rechercher-une-cellule-contenant.166707/

Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche

With Sheets("AVANT") 'prend en compte l'onglet "AVANT" (à adapter à ton cas)
    'boucle sur toutes les cellules éditées cel de la colonne A (en partant de la ligne 2)
    For Each cel In .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
        'définit la recherche r (recherche la valeur de la cellule en partie dans la colonne A de l'onglet "BASE")
        Set r = Sheets("BASE").Columns(1).Find(cel.Value, , xlValues, xlPart)
        'si il existe au moins une occurrence trouvée, place dals la colonne I de cel la valeur de la colonne C de r
        If Not r Is Nothing Then cel.Offset(0, 1).Value = r.Offset(0, 1).Value
    Next cel 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "AVANT"
End Sub

La macro semble OK; cependant, elle ne fonctionne que sur des recherches exactes (si la cellule ne contient que vaccins OK; mais si la cellule contient besoins en vaccins alpha, cela ne marche plus).

merci
 

kakemphaton

XLDnaute Junior
Re : Convertir formule en VBA

Bonsoir pierrejean,

Merci de ton aide. mais, je viens d'essayer et si j'incorpore dan mon dictionnaire, les mots suivants :

Gestion des achats
Securite informatique

Et si j'ai cette phrase : Achat de consommables informatiques

Je vais obtenir les 2 au lieu d'aucun

Merci de t'être penché sur mon problème
 

Discussions similaires

Statistiques des forums

Discussions
312 079
Messages
2 085 131
Membres
102 789
dernier inscrit
raoul6768