Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Application.Match pour rechercher une valeur quelconque

  • Initiateur de la discussion Initiateur de la discussion job75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

job75

XLDnaute Barbatruc
Bonjour à tous et à toutes,

Cette solution vient d'un fil de C@thy mais j'ouvre cette discussion pour facilement la retrouver :

Code:
Sub Rechercher()
Dim x As Variant, i As Variant
x = InputBox("Entrez la valeur texte, nombre, date, heure :", "Rechercher")
i = Replace(x, ".", Mid(1.1, 2, 1)) 'séparateur décimal de l'ordi
If IsNumeric(i) Then x = CDbl(i) Else If IsDate(x) Then x = CDbl(CDate(x))
i = Application.Match(x, [B:B], 0)
If IsNumeric(i) Then Cells(i, 2).Select 'valeur trouvée
End Sub
Quand je dis "valeur quelconque" cela exclut les valeurs logiques et les valeurs d'erreur.

Fichier joint.

A+
 

Pièces jointes

Re : Application.Match pour rechercher une valeur quelconque

Re,

Si l'on veut rechercher les valeurs logiques ou d'erreur il faut compléter par la méthode Find :

Code:
Sub Rechercher()
Dim x As Variant, i As Variant, c As Range
x = InputBox("Entrez la valeur texte, nombre, date, heure :", "Rechercher")
i = Replace(x, ".", Mid(1.1, 2, 1)) 'séparateur décimal de l'ordi
If IsNumeric(i) Then x = CDbl(i) Else If IsDate(x) Then x = CDbl(CDate(x))
i = Application.Match(x, [B:B], 0)
If IsNumeric(i) Then
  Cells(i, 2).Select
Else 'valeurs logiques TRUE-FALSE ou valeurs d'erreur
  Set c = [B:B].Find(x, , xlValues, xlWhole)
  If Not c Is Nothing Then c.Select
End If
End Sub
Pour les valeurs logiques entrer dans l'InputBox leur équivalent en anglais.

Fichier (3).

A+
 

Pièces jointes

Re : Application.Match pour rechercher une valeur quelconque

Bonjour le forum,

Merci R@chid, mais tout le monde n'est pas aussi méthodique.

Ici une recherche par ligne ou par colonne sur toute la feuille :

Code:
Private Sub CommandButton1_Click()
Dim x As Variant, i As Variant, r As Range
x = TextBox1
i = Replace(x, ".", Mid(1.1, 2, 1)) 'séparateur décimal de l'ordi
If IsNumeric(i) Then x = CDbl(i) Else If IsDate(x) Then x = CDbl(CDate(x))
With ActiveSheet.UsedRange
  For Each r In IIf(OptionButton1, .Rows, .Columns)
    i = Application.Match(x, r, 0)
    If IsNumeric(i) Then r.Cells(i).Select: Exit Sub
  Next
  'valeurs logiques et valeurs d'erreur
  If UCase(x) = "VRAI" Then x = "TRUE"
  If UCase(x) = "FAUX" Then x = "FALSE"
  Set r = .Find(x, , xlValues, xlWhole, IIf(OptionButton1, xlByRows, xlByColumns))
  If r Is Nothing Then MsgBox "Valeur introuvable": Exit Sub
  r.Select
End With
End Sub
Fichier (4).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…