recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

KROMS

XLDnaute Nouveau
Bonjour à tous,

Je suis nouvelle sur la liste et je suis une buse en macros.

Je suis à la recherche d'une fonction personnalisée qui pourrait me lister dans un classeur qui contient un très grand nombre d'onglets, toutes les occurrences d'une chaîne de caractères.

En l'occurrence, dans le cas qui m'occuppe, idéalement :

1-saisir dans une msgbox la chaîne de caractères qui m'intéresse (par exple "président"
2- dans un nouvel onglet "résultat" qui se créerait automatiquement, lister l'ensemble des cellules qui contiennent cette chaîne (y compris "vice-président" par exemple) AINSI que l'adresse où cette information est contenue.

:confused:J'ai également une question subsidiaire : comment peut-on rechercher la 2nde, troisième, ... nième occurrence d'un terme ?

Merci d'avance
 

Pièces jointes

  • file.xls
    21.5 KB · Affichages: 307

JNP

XLDnaute Barbatruc
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

Bonjour Kroms et bienvenue, salut TotoTiti :),
Tu peux déjà regarder ce post, il y a une macro qui liste la recherche dans tous les classeurs ouverts. Il sort le résultat en TXT et ne fouille que A1:A500, mais c'est facilement adaptable ;).
Pour la question subsidiaire, ça dépends ce que tu entends par là :rolleyes:...
Savoir de la combientième occurence il s'agit, ou être sûr d'avoir toutes les occurences ?
Bon courage :cool:
 

KROMS

XLDnaute Nouveau
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

Bonjour KROMS,

Bienvenue sur XLD,

Je suppose que la commande Rechercher
Dans : Classeur
Bouton Rechercher tout

ne répond pas à ton besoin ?

Bonjour et merci de ta réponse. En fait, je vais avoir besoin de partir de l'adresse de la donnée pour faire d'autres recherches à partir de ce point de départ ! ! !
Et malheureusement, je ne vois pas comment on peut "exporter" les résultats d'un rechercher tout...

merci à vous tous
 

KROMS

XLDnaute Nouveau
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

bonjour,

réponse très intéressante et merci, mais qui ne "cite" malheureusement pas le contenu de la cellule... En appelant par exemple les "présidents", je peux avoir besoin de ne cibler que les "présidents" et pas les "vice-président".

Une copine m'a donné le code suivant que je soumets à la liste car je me demande s'il explre effectivement l'ensemble des onglets d'un classeur et ne dévie pas l'adresse de cellule. Quelqu'un aurait-il le courage (et le talent) de vérifier ?
Merci d'avance

Sub Rechercher_ds_ttes_les_feuilles()
'
' Macro2 Macro
'
' Touche de raccourci du clavier: Ctrl+Maj+R
'Dim Tableau As Variant

Dim Montab As Variant

Dim plage As Range, c As Range
Dim i As Integer, j As Integer, k As Integer, posit As Long, li As Integer, col As Integer, d As Integer, cpt As Integer
Dim str As String

'Set plage = ActiveSheet.Range("a1", Range("a1").SpecialCells(xlCellTypeLastCell))

str = InputBox("Entrer la chaine a rechercher: ")

If str = "" Then Exit Sub

If str <> "" Then
k = 1

Feuille_existe

For cpt = 2 To Worksheets.Count

Worksheets(cpt).Select

li = Range("a1").SpecialCells(xlCellTypeLastCell).Row
col = Range("a1").SpecialCells(xlCellTypeLastCell).Column

ReDim Tableau(li, col)

Tableau = Range(Cells(1, 1), Cells(li, col)).Value


For i = 1 To li
For j = 1 To col
If InStr(LCase(Tableau(i, j)), str) <> 0 Then
k = k + 1
Sheets("Resultat").Cells(k, 1).Value = Worksheets(cpt).Name
Sheets("Resultat").Cells(k, 2).Value = Tableau(i, j)
Sheets("Resultat").Cells(k, 3).Value = Cells(i, j).Address
Else: k = k
End If
Next j
Next i
' Stocker ds Montab les elements filtres par str

Next cpt

End If


If k < 1 Then MsgBox "la Chaine n existe pas dans la plage"
'Else
'---------------------------
'Inserer une feuil de calcul


'For i = 1 To k
'Range("a" & i + 1).Value = Montab(i)
'Next i
'Call Entete

'End If

Sheets("Resultat").Select
Sheets("Resultat").Range("a1").Value = "Onglet"
Sheets("Resultat").Range("b1").Value = "Valeur Cellule"
Sheets("Resultat").Range("C1").Value = "Adresse Cellule"

Columns("C:C").Replace What:="$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

'Entete
End Sub
 

JNP

XLDnaute Barbatruc
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

Re :),
KROMS à dit:
mais qui ne "cite" malheureusement pas le contenu de la cellule...
Ça, c'est pas vraiment un problème :rolleyes:. Il suffit de modifier la ligne
Code:
[COLOR=blue]Print[/COLOR] #1, Classeur.Name & " : " & Feuille.Name & " : " & Cellule.Address [COLOR=red][B]& " : " & Cellule.Text[/B][/COLOR]
Comme je l'ai dit, en dehors de ça, il y a juste à changer la plage de recherche et de mettre le résultat dans une feuille du classeur au lieu d'un fichier TXT ;).
Par rapport au code que tu proposes (il y a un # au dessus de la discussion pour mettre les balise...), il devrait fonctionner, mais les fonctions Find et FindNext sont (à mon avis) plus rapides que de fouiller toutes les cellules du fichier.
1-saisir dans une msgbox la chaîne de caractères qui m'intéresse (par exple "président"
2- dans un nouvel onglet "résultat" qui se créerait automatiquement, lister l'ensemble des cellules qui contiennent cette chaîne (y compris "vice-président" par exemple) AINSI que l'adresse où cette information est contenue.
KROMS à dit:
En appelant par exemple les "présidents", je peux avoir besoin de ne cibler que les "présidents" et pas les "vice-président".
Là, par contre, il faudrait savoir :p.
Dans le premier cas, Find ou InStr fonctionnera parfaitement. Dans le deuxième, il va falloir analyser la chaîne différement, et ce n'est pas de la tarte :D... Un InputBox ne diras pas si ta chaîne est inclusive ou exclusive, donc il va falloir prévoir un USF de contrôle (pas trop problématique). Par contre, derrière, l'analyse va devoir tenir compte des débuts ou fins de chaîne, espace avant ou après, etc. Personnellement, je ne vois guère que RegExp pour te tirer de là, mais ce n'est pas ce qu'il y a de plus facile :rolleyes:.
Je te laisse consulter ce fil qui te donnera une idée des possibilités de RegExp.
Bonne lecture :cool:
 

KROMS

XLDnaute Nouveau
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

Excellent, ça marche nickel !
Serait-il néanmoins possible que les résultats s'affichent directement dans un nouvel onglet du classeur intitulé "résultat recherche" ?
Idéalement, il faudrait, si cela est possible, qu'on ait une présentation du type
colonne 1 : adresse de la cellule, colonne 2 : chaîne de caractère trouvée

Merci à tous ! ! ! et bravo ! ! !
 

JNP

XLDnaute Barbatruc
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

Re :),
Serait-il néanmoins possible que les résultats s'affichent directement dans un nouvel onglet du classeur intitulé "résultat recherche" ?
Idéalement, il faudrait, si cela est possible, qu'on ait une présentation du type
colonne 1 : adresse de la cellule, colonne 2 : chaîne de caractère trouvée
Oui. Vois si le classeur joint te conviens. Par contre, je ne suis pas pour la création d'un onglet de recherche qui beuguera quand l'onglet sera existant, il est bien plus simple d'utiliser un onglet existant et de le nettoyer à chaque fois :rolleyes:.
Bonne journée :cool:
 

Pièces jointes

  • Recherche multi.xlsm
    20.3 KB · Affichages: 319

DoubleZero

XLDnaute Barbatruc
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

Bonjour à toutes et à tous,

Un grand Merci, BOISGONTIER :), car depuis que j’ai découvert le fichier de JNP, je m’évertue à tenter une création de liens, à partir des cellules mentionnées en colonnes B et C, pour accéder aux occurrences trouvées.

Votre fichier correspond donc magnifiquement à mes attentes.

Toutefois, lorsqu’un mot est mentionné plusieurs fois dans un même onglet (exemple : « alpha » - Feuil4), le récapitulatif présenté dans le feuillet « Temp » ne prend en compte que la première occurrence. Serait-il possible, s’il vous plaît, de remédier à cela :eek: ?

Je vous remercie pour aide.
 

Pièces jointes

  • 00 FormChercheMotToutClasseurFind.zip
    19.6 KB · Affichages: 86

DoubleZero

XLDnaute Barbatruc
Re : recherche de toutes les occurrences d'une chaîne de caractères dans un classeur

Re-bonjour,

Un très grand MERCI, BOISGONTIER :D, pour votre nouveau fichier qui recense, par onglet, l’ensemble des occurrences.

Pour ce qui concerner les hyperliens, je vais ouvrir une nouvelle discussion.

Encore merci et bonne soirée :).
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet