Rechercher plusieurs mots dans une ligne : RecherchV/Vlookup/SI ?
Fermé
helplease895
Messages postés
10
Date d'inscription
lundi 18 mai 2020
Statut
Membre
Dernière intervention
23 août 2020
-
25 juil. 2020 à 15:16
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 26 juil. 2020 à 11:55
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 26 juil. 2020 à 11:55
A voir également:
- Rechercher plusieurs mots dans une ligne : RecherchV/Vlookup/SI ?
- Rechercher ou entrer l'adresse - Guide
- Aller à la ligne dans une cellule excel - Guide
- Partager photos en ligne - Guide
- Vente en ligne particulier - Guide
- Rechercher une adresse - Guide
3 réponses
Yoyo01000
Messages postés
1639
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
7 mars 2022
167
25 juil. 2020 à 21:04
25 juil. 2020 à 21:04
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 !
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
Modifié le 26 juil. 2020 à 07:55
Modifié le 26 juil. 2020 à 07:55
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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
26 juil. 2020 à 11:55
26 juil. 2020 à 11:55
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.
25 juil. 2020 à 21:07
Modifié le 25 juil. 2020 à 22:30
Surtout quand il n'en faut qu'« une 50 aine »