Rechercher plusieurs mots dans une ligne : RecherchV/Vlookup/SI ?
helplease895
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai un fichier excel dans lequel je cherche plusieurs informations par ligne.
j'ai essayé rechercheV et nb si mais à chaque fois le message "un trop nombre d'argument apparaît, j'ai une 50 aine de mots clés à trouver ^^
Exemple :
Dans ligne A2 : Nous produisons des fours à pain, des fours électrique pour les petits et les grands.Si vous cherchez des bouilloires nous en avons aussi.
Je voudrais simplement extraire :
-Fours à pain,Fours électrique, Bouilloires
Il y a t'il un fonction qui permette de rechercher un nombre infini d'arguments pour simplement "coller" l'ensemble des argument présent dans la ligne/cellule/colonne souhaitée ?
Merci d'avance,
J'ai un fichier excel dans lequel je cherche plusieurs informations par ligne.
j'ai essayé rechercheV et nb si mais à chaque fois le message "un trop nombre d'argument apparaît, j'ai une 50 aine de mots clés à trouver ^^
Exemple :
Dans ligne A2 : Nous produisons des fours à pain, des fours électrique pour les petits et les grands.Si vous cherchez des bouilloires nous en avons aussi.
Je voudrais simplement extraire :
-Fours à pain,Fours électrique, Bouilloires
Il y a t'il un fonction qui permette de rechercher un nombre infini d'arguments pour simplement "coller" l'ensemble des argument présent dans la ligne/cellule/colonne souhaitée ?
Merci d'avance,
A voir également:
- Rechercher plusieurs mots dans une ligne : RecherchV/Vlookup/SI ?
- Partager photos en ligne - Guide
- Rechercher ou saisir une url - Guide
- Mètre en ligne - Guide
- Aller à la ligne dans une cellule excel - Guide
- Rechercher une chanson - Guide
3 réponses
Bonsoir,
quand vous parlez de ligne, c'est une ligne de texte dans une cellule ou alors plusieurs cellules sur une ligne de la feuille (par exemple la ligne 2) ?
Vous avez déjà les mots clefs dans d'autres cellule à trouver dans la/les phrase(s) ?
Il y aurait la possibilité d'utiliser la fonction CONCATENER en intégrant une recherche des mots clefs préalablement rentrés dans d'autres cellules mais au final ce serait inutile !
Perso, je ne vois pas comment solutionner précisément votre problème !
quand vous parlez de ligne, c'est une ligne de texte dans une cellule ou alors plusieurs cellules sur une ligne de la feuille (par exemple la ligne 2) ?
Vous avez déjà les mots clefs dans d'autres cellule à trouver dans la/les phrase(s) ?
Il y aurait la possibilité d'utiliser la fonction CONCATENER en intégrant une recherche des mots clefs préalablement rentrés dans d'autres cellules mais au final ce serait inutile !
Perso, je ne vois pas comment solutionner précisément votre problème !
Bonjour,
Créer une fonction personnaliser avec une grande quantité d'arguments n'est peut-être pas le plus judicieux.
Je vous propose une macro qui fait cela appliqué à plusieurs phrases dans la colonne A
il faut auparavant créer une liste des chaînes de texte à extraire en colonne G
https://mon-partage.fr/f/2kYdjaDk/
reste à cliquer sur le bouton
le code utilisé:
Cdlt
Créer une fonction personnaliser avec une grande quantité d'arguments n'est peut-être pas le plus judicieux.
Je vous propose une macro qui fait cela appliqué à plusieurs phrases dans la colonne A
il faut auparavant créer une liste des chaînes de texte à extraire en colonne G
https://mon-partage.fr/f/2kYdjaDk/
reste à cliquer sur le bouton
le code utilisé:
Sub Extract() Dim DerLig_Liste As Long, DerLig_Chaine As Long, i As Long, j As Long, NbCar As Long Dim Res As Variant, Texte As Variant Application.ScreenUpdating = False DerLig_Liste = Range("G" & Rows.Count).End(xlUp).Row DerLig_Chaine = Range("A" & Rows.Count).End(xlUp).Row For i = 2 To DerLig_Chaine Res = "" Texte = "" Chaine = Cells(i, "A") For j = 2 To DerLig_Liste NbCar = Len(Cells(j, "G")) On Error Resume Next Texte = Mid(Chaine, InStr(1, Chaine, Cells(j, "G"), 1), NbCar) If Err.Number = 0 Then Res = Res & ", " & Texte End If On Error GoTo 0 Next j Cells(i, "B") = Mid(Res, 3, Len(Res) - 2) Next i End Sub
Cdlt
Bonjour,
On peut aussi utiliser une fonction personnalisée :
Note : l'utilisation d'un tableau VBA (t) est beaucoup plus rapide que la lecture une par une des cellules de la plage "textes".
Exemple : https://mon-partage.fr/f/0Ki6KIh0/
--
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
On peut aussi utiliser une fonction personnalisée :
Option Explicit Function ExtraireTextesPhrase(textes As Range, phrase As Range) As Variant Dim t, p$, i&, r$ If phrase.Count <> 1 Then ExtraireTextesPhrase = CVErr(XlCVError.xlErrRef): Exit Function '#REF! ReDim t(1 To 1, 1 To 1) 'Pour le cas où "textes" ne représente qu'une seule cellule If textes.Count = 1 Then t(1, 1) = textes.Value Else t = textes.Value For i = 1 To UBound(t) If TypeName(t(i, 1)) = "String" Then If t(i, 1) <> "" And InStr(1, LCase(phrase), LCase(t(i, 1))) > 0 Then r = r & ", " & t(i, 1) End If End If Next i ExtraireTextesPhrase = Mid(r, 3) End Function
Note : l'utilisation d'un tableau VBA (t) est beaucoup plus rapide que la lecture une par une des cellules de la plage "textes".
Exemple : https://mon-partage.fr/f/0Ki6KIh0/
--
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Surtout quand il n'en faut qu'« une 50 aine »