[Excel] Recherche multiple dans une cellule
Résolu
Mirage
-
Mirage -
Mirage -
Bonjour,
Je fait suite à un premier post qui consistait en l'extraction d'une donnée recherché dans une cellule.
Cependant, j'aimerai savoir si on pouvais adapter la macro, à la recherche de plusieurs textes (supérieur à 2 si possible)
Je vous joint le fichier avec la macro précédente.
J'espère que vous trouverez la solution.
Merci
https://www.cjoint.com/?BDciSKjSuGU
Je fait suite à un premier post qui consistait en l'extraction d'une donnée recherché dans une cellule.
Cependant, j'aimerai savoir si on pouvais adapter la macro, à la recherche de plusieurs textes (supérieur à 2 si possible)
Je vous joint le fichier avec la macro précédente.
J'espère que vous trouverez la solution.
Merci
https://www.cjoint.com/?BDciSKjSuGU
A voir également:
- [Excel] Recherche multiple dans une cellule
- Excel cellule choix multiple - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Proteger cellule excel - Guide
- Déplacer une colonne excel - Guide
4 réponses
Bonjour,
Ça me rajeunit un peu cette macro ! :o)
dans ce que tu veux, on ne travaillerait plus que sur 1 seule cellule ?
Ça me rajeunit un peu cette macro ! :o)
dans ce que tu veux, on ne travaillerait plus que sur 1 seule cellule ?
Alors, oui en fait on a toujours une seule cellule "source", par contre on a plusieurs cellules de sorties. (autant de cellule que de modèles trouvés).
Voila :)
Voila :)
Re,
la macro extrait les N mots de la sélection de la cellule active
la macro extrait les N mots de la sélection de la cellule active
Option Explicit
Sub extraire_mots()
Dim Col As Integer, Lig As Long, Texto As String
Dim T_mots(), derlig As Byte, cptr As Byte
'Initialisations
Application.ScreenUpdating = False
With ActiveCell
texto = UCase(ActiveCell)
Col = .Column + 1
Lig = .Row
End With
Range(Cells(Lig, Col), Cells(Lig + 10, Col)).Clear
'collecte des mots sélectionnés
With Sheets("param")
derlig = .Range("B250").End(xlUp).Row
T_mots = Application.Transpose(.Range("B2:B" & derlig).Value)
End With
'extraction des mots
For cptr = 1 To UBound(T_mots)
If texto Like "*" & UCase(T_mots(cptr)) & "*" Then
With Cells(Lig, Col)
.Value = T_mots(cptr)
.Borders.Weight = xlThin
End With
Lig = Lig + 1
End If
Next
End Sub
Merci beaucoup, ça fonctionne comme je l'espérais !
Je te tiens au courant si j'ai un souci avec :)
Je te tiens au courant si j'ai un souci avec :)
Après quelques temps d'utilisation, je viens de constater que la macro plante si l'onglet param dépasse les 256 modèles. J'ai tenté d'augmenter le nombre max de valeurs dans la macro:
derlig = .Range("B250").End(xlUp).Row > passage à 260 par exemple
mais ça ne fonctionne pas. Y a t-il un autre paramètre à changer? :)
derlig = .Range("B250").End(xlUp).Row > passage à 260 par exemple
mais ça ne fonctionne pas. Y a t-il un autre paramètre à changer? :)
Il faut simplement modifier les types des variables
en espèrant que...
Dim Col As Integer, Lig As Long, Texto As String
Dim T_mots(), derlig As Integer, cptr As Integer
'Initialisations
Application.ScreenUpdating = False
With ActiveCell
Texto = UCase(ActiveCell)
Col = .Column + 1
Lig = .Row
End With
Range(Cells(Lig, Col), Cells(Lig + 10, Col)).Clear
'collecte des mots sélectionnés
With Sheets("param")
derlig = .Range("B10000").End(xlUp).Row
en espèrant que...