Erreur dans la fonction Match

Bonjour,

Dans le fichier exemple, j’ai dans la ligne 1, des dates sous forme de jours jj (de 21 à 28).

En voulant chercher la date du 23, j’applique ce code avec la fonction match :

Sub AppMatch()
    Dim Col As Integer
    Dim Jour As Integer

    Jour = 23
    Col = Application.Match(Jour, Range("1:1"), 0)
    'Col = Application.Match(Jour, Format(Range("A1:H1"), "d"), 0)

End Sub

Mais voila, ça me déclenche une erreur :

Incompatibilité de type

Dans la fonction Application.Match, pourtant la valeur 23 se trouve bien dans la colonne C.

Une explication ?

Merci.

15appmatch.zip (7.59 Ko)

Bonsoir

apt a écrit :

Une explication ?

Je vais essayer

En format date

Tu cherches une date (23/01/1900) dans une liste de dates du 21/11/2012 au 28/11/2012

En format nombre

Tu cherches un nombre (23) dans une liste de nombre de 41234 à 41241

Donc dans tous les cas il ne trouve pas et te renvoie une erreur (avec la formule Excel EQUIV() cela serait #N/A), mais comme tu as typé ta variable Col en Integer il y à incompatibilité de type

Modification de ta macro

Option Explicit

Sub AppMatch()
Dim Col
Dim Jour As Integer

  Jour = 23
  Col = Application.Match(CSng(DateSerial(2012, 11, Jour)), Range("A1:H1"), 0)
  If Not IsError(Col) Then
    MsgBox "Le jour se situe en colonne : " & Col
  Else
    MsgBox "Jour " & Jour & " non trouvé"
  End If
End Sub

Bonjour Banzai64,

Merci pour la réponse.

Il n'y a pas moyen pour trouver "23" en modifiant le format de la cellule ?

Bonjour à tous,

En A1, tu remplaces ta date par

=JOUR(DATE(2012;11;21))

Tu obtiens ainsi un nombre entier correspondant au jour.

A+

Bonjour frangy,

Merci pour la formule.

Ça marche maintenant.

Rechercher des sujets similaires à "erreur fonction match"