Regarder Facultatif Variante Il peut s'agir de l'une des constantes XlLookAt suivantes : xlWhole ou xlPart.
Détermine si la recherche correspond à des cellules entières ou partielles.
Public Function FindWord(ByVal sWord As String, Optional vPlage As Variant, Optional wSheet As Variant = "ActiveSheet") As String() Dim bVerifPlage As Boolean, rStartCell As Range If Not wSheet = "ActiveSheet" Then Sheets(wSheet).Select 'vérification de la feuille à traiter If Not IsMissing(vPlage) Then bVerifPlage = True 'vérification d'une possible plage Dim cMyAddress As New Collection Dim sRes() As String Dim ParseRange() As String If bVerifPlage = False Then ' s'il n'y pas de plage, on vérifie dans toute la feuille Cells.Find(What:=sWord, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate: cMyAddress.Add ActiveCell.Address Set rStartCell = ActiveCell Do Cells.FindNext(After:=ActiveCell).Activate: cMyAddress.Add ActiveCell.Address Loop While ActiveCell.Address <> Range(rStartCell).Address ' on place l'adresse des cellules dans un tableau de données ' il sera facile de savoir après quelles cellules contiennent ' les données recherchées. (où même sélectionner ces cellules) ReDim sRes(cMyAddress.Count - 1) For i = 0 To cMyAddress.Count - 1 sRes(i) = cMyAddress.Item(i + 1) Next i Else ' s'il y pas une plage, on vérifie seulement dedans Dim rPlage As Range Set rPlage = vPlage ' on instancie l'objet (plage) en récupérant sa valeur ParseRange = Split(CStr(rPlage.Address), ":") ' ici je récupère la dernière cellule de recherche, afin de la sélectionner ' comme ça, le résultat sera chronologique (sinon, la recherche s'effectue ' depuis la cellule sélectionnée) Range(ParseRange(1)).Select rPlage.Find(What:=sWord, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate: cMyAddress.Add ActiveCell.Address Set rStartCell = ActiveCell Do rPlage.FindNext(After:=ActiveCell).Activate: cMyAddress.Add ActiveCell.Address Loop While ActiveCell.Address <> Range(rStartCell.Address).Address ' on place l'adresse des cellules dans un tableau de données ' il sera facile de savoir après quelles cellules contiennent ' les données recherchées. (où même sélectionner ces cellules) ReDim sRes(cMyAddress.Count - 2) For i = 0 To cMyAddress.Count - 2 sRes(i) = cMyAddress.Item(i + 1) Next i ' rPlage = Nothing End If FindWord sRes: Set cMyAddress Nothing: Erase sRes End Function
RECHERCHEV(code;table;ColonneRésultat;Vrai ou faux)
Sub recherche() Dim ValeurCherche As String Dim Plage As Range ValeurCherche = InputBox("Entrez une valeur") If Trim(ValeurCherche) <> "" Then With Sheets("Feuil1").Range("A:A") 'Recherche dans colonne A Set Plage = .Find(What:=ValeurCherche, _ After:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:= False) If Not Plage Is Nothing Then Application.Goto Plage, True 'valeur trouvé Else MsgBox "Recheche nulle" 'value non trouvé End If End With End If End Sub
Workbooks.Open Filename: =mais le fichier peut être déplacé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionWorksheetFunction.VLookup()mais je n'arrive pas à programmer les conditions spécifiées plus haut