Méthode WorksheetFunction.Match (Excel)

Renvoie la position relative d'un élément dans une matrice, qui correspond à une valeur spécifiée dans un ordre spécifié. Utilisez Match au lieu de l’une des fonctions Lookup lorsque vous avez besoin de la position d’un élément dans une plage au lieu de l’élément lui-même.

Syntaxe

expression. Match (Arg1, Arg2, Arg3)

Expression Variable qui représente un objet WorksheetFunction .

Parameters

Nom Requis/Facultatif Type de données Description
Arg1 Obligatoire Variant Lookup_value : valeur que vous utilisez pour rechercher la valeur souhaitée dans une table.
Arg2 Obligatoire Variant Lookup_array : plage contiguë de cellules contenant des valeurs de recherche possibles. Lookup_array doit être une matrice ou une référence à une matrice.
Arg3 Facultatif Variant Match_type : nombre -1, 0 ou 1. Type spécifie la manière dont Microsoft Excel recherche Lookup_value dans Lookup_array.

Valeur renvoyée

Double

Remarques

Lookup_value est la valeur que vous souhaitez faire correspondre dans lookup_array. Par exemple, lorsque vous recherchez un numéro dans un annuaire téléphonique, vous utilisez le nom de la personne comme valeur de recherche, mais le numéro de téléphone est la valeur souhaitée.

Lookup_value peut être une valeur (nombre, texte ou valeur logique) ou une référence de cellule à un nombre, du texte ou une valeur logique.

Si match_type est égal à 1, Match trouve la plus grande valeur inférieure ou égale à lookup_value. Lookup_array doit être placée dans l'ordre croissant : ...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE.

Si match_type est égal à 0, Match recherche la première valeur qui est exactement égale à lookup_value. Lookup_array peut se trouver dans un ordre quelconque. Notez que Match ne respecte pas la casse.

Si match_type a la valeur -1, Match trouve la plus petite valeur supérieure ou égale à lookup_value. Lookup_array doit être placée dans l'ordre croissant : TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ..., etc.

Si match_type est omis, il est considéré comme égal à 1.

La correspondance retourne la position de la valeur correspondante dans lookup_array, et non la valeur elle-même. Par exemple, MATCH("b",{"a","b","c"},0) retourne 2, la position relative de « b » dans le tableau {"a","b","c"}.

La correspondance ne fait pas la distinction entre les lettres majuscules et minuscules lors de la mise en correspondance de valeurs de texte.

Si Match ne parvient pas à trouver une correspondance, elle retourne la valeur d’erreur #N/A.

Si match_type la valeur 0, vous pouvez utiliser des caractères génériques, des points d'interrogation (?) et des astérisques (*), dans lookup_value. Un point d'interrogation correspond à un caractère unique, un astérisque à une séquence de caractères. Si vous souhaitez rechercher un point d'interrogation ou un astérisque, entrez un tilde (~) avant le caractère.

Exemple

Pour chaque valeur de la première colonne de la première feuille de calcul, cet exemple recherche une valeur correspondante dans le classeur entier. Si la macro trouve une valeur correspondante, elle met en caractère gras la valeur d'origine dans la première feuille de calcul.

Sub HighlightMatches()
    Application.ScreenUpdating = False
    
    'Declare variables
    Dim var As Variant, iSheet As Integer, iRow As Long, iRowL As Long, bln As Boolean
       
       'Set up the count as the number of filled rows in the first column of Sheet1.
       iRowL = Cells(Rows.Count, 1).End(xlUp).Row
       
       'Cycle through all the cells in that column:
       For iRow = 1 To iRowL
          'For every cell that is not empty, search through the first column in each worksheet in the
          'workbook for a value that matches that cell value.

          If Not IsEmpty(Cells(iRow, 1)) Then
             For iSheet = ActiveSheet.Index + 1 To Worksheets.Count
                bln = False
                var = Application.Match(Cells(iRow, 1).Value, Worksheets(iSheet).Columns(1), 0)
                
                'If you find a matching value, indicate success by setting bln to true and exit the loop;
                'otherwise, continue searching until you reach the end of the workbook.
                If Not IsError(var) Then
                   bln = True
                   Exit For
                End If
             Next iSheet
          End If
          
          'If you don't find a matching value, don't bold the value in the original list;
          'if you do find a value, bold it.
          If bln = False Then
             Cells(iRow, 1).Font.Bold = False
             Else
             Cells(iRow, 1).Font.Bold = True
          End If
       Next iRow
    Application.ScreenUpdating = True
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.