Le fonction Find ne trouve pas tout
Bonjour
J'utilise la fonction find pour trouver des valeurs, et afficher dans une listbox des informations correspondantes (qui sont sur la même ligne).
Ceci fait, je trouve beaucoup moins de valeurs qu'une recherche classic via Ctrl+F.
1 -Par exemple le je recherche le mot "ESCA" qui se trouve dans plein de case, mais il n'en trouve que quelque une...
2- Autre chose, est il possible qu'il ne prenne pas en compte les majuscules dans le terme recherché, et dans les valeurs qu'il cherche afin de pouvoir trouver: Esca, ESCA, esca...?
Merci
Mon code:
Sub search()
If TextSearch <> "" Then
Dim w As Worksheet
For Each w In Worksheets
Set Result = w.Cells.Find("*" + TextSearch + "*", , LookAt:=xlPart)
Set Result = w.Cells.Find(TextSearch, LookAt:=xlPart, MatchCase:=True)
If Not Result Is Nothing Then
FirstAddress = Result.Address
Do
FirstAddress = Result.Address
j = Range(FirstAddress).Row 'designe j = ligne de le cellule selectionnée
Recherche.ListBox1.ColumnCount = 4
Recherche.ListBox1.ColumnWidths = "50;200;10;50"
Recherche.ListBox1.AddItem w.Cells(j, "B").Value
Recherche.ListBox1.List(Recherche.ListBox1.ListCount - 1, 1) = w.Cells(j, "C").Value
Recherche.ListBox1.List(Recherche.ListBox1.ListCount - 1, 2) = w.Name
Recherche.ListBox1.List(Recherche.ListBox1.ListCount - 1, 3) = FirstAddress
Loop While Not Result Is Nothing And Result.Address <> FirstAddress
End If
Next w
End If
End Sub
Ce que je trouve via la macro (3 resultats)
Ce que je trouve via la Ctrl + F (521 resultats)
Est ce par rapport au varialble Look at? look In? MatchCase? MatchByte?
https://msdn.microsoft.com/fr-fr/library/office/ff839746.aspx
Mercii
Bonjour
Crdlt
Voilà mais il s'agissait d'un document confidentiel, j'ai donc supprimé presque toutes des valeurs des cellules.
Merci
Bonjour,
Je pense que la seconde moitié de cette page peut vraiment t'aider (la réponse à ta deuxième question y est également) :
https://www.excel-pratique.com/fr/vba/conditions_suite.php
Et un tuto vidéo en cas de besoin : https://www.blog-excel.com/creer-un-champ-de-recherche-vba/
Cordialement,
Okay merci,
1) je nai pas utiliser la fonction Find, mais jai demander de regarder dans chaques cellules des collone B et C (pas plus de collones sinon ca bug, vus la talle du fichier).
2) Pour que les variable ne prenne pas en compte les majuscules (A=a),
Placez "Option Compare Text" au dessus de tout les sub.
Merci encore!
Public TextSearch As String
Public xlApp As Excel.Application
Public xlWB As Excel.Workbook
Public Rowselect As String
Public Row As Worksheet
Public CaseSelect As String
Public C As Range
Public w As Worksheet
Option Compare Text
Sub Macro1()
Load Recherche: Recherche.Show:
'If TestF = True Then 'Si testf est vrais
End Sub
Sub search()
If TextSearch <> "" Then
Recherche.ListBox1.ColumnCount = 4
Recherche.ListBox1.ColumnWidths = "50;200;50;50"
For Each w In Worksheets
' Dim R As Range
'For Each R In w.Rows
'Dim C As Range
For Each C In w.UsedRange.Columns("B").Cells
If C.Value Like "*" + TextSearch + "*" Then
Call listboxsearchadditem
End If
Next C
For Each C In w.UsedRange.Columns("C").Cells
If C.Value Like "*" + TextSearch + "*" Then
Call listboxsearchadditem
End If
Next C
Next w
End If
Recherche.TextBoxSearch.Value = TextSearch
End Sub
Sub listboxsearchadditem()
Recherche.ListBox1.AddItem Cells(C.Row, "B").Value
Recherche.ListBox1.List(Recherche.ListBox1.ListCount - 1, 1) = w.Cells(C.Row, "C").Value
Recherche.ListBox1.List(Recherche.ListBox1.ListCount - 1, 2) = w.Name
Recherche.ListBox1.List(Recherche.ListBox1.ListCount - 1, 3) = C.Address
End Sub
Bonjour
Voici avec paramétrage.
Les variables publics sont à proscrire
Bonjour
Merci beaucoup, en effet ton code est fonctionnel et élégant!
Pourquoi les variables public sont elles à proscrire? je m'en sert car elle sont plus simple à utiliser entre les différents procédés.
Bonjour
Avantage des variables public :
-pas besoin de paramétrer, accessible partout dans le programmes.
Inconvénients:
- Utilisent de l'espace mémoire tout au long du programme.
- Lorsqu'il y a plusieurs millier de ligne de code, difficile de savoir d'ou un éventuel problème d'initialisation peut provenir.
- Lorsqu’utilisé par plusieurs fonction, entre généralement en conflit, surtout si ces fonctions sont elle aussi public.
- Empêche le "Multi-tasking"