Convertir formule en VBA

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

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

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
 
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
 
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
 
- 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
38
Affichages
888
Retour