équivalent vba de la fonction excel "EQUIV"

double-ien

XLDnaute Junior
Bonjour les tiots biloutes...

Oui.... Est ce qu'il existe un équivalent en VBA de la fonction "EQUIV"....(utilisée pour faire des recherches dans une liste)


Merci beaucoup

Bonne journée à vous:cool:
 

double-ien

XLDnaute Junior
Re : équivalent vba de la fonction excel "EQUIV"

rebonjour...j'ai toujours un petit soucis...comment faire pour utiliser cette méthode si je veux faire mes recherche dans une liste que j'ai nommé...au lieu de range je veux mettre le nom de ma liste...je vois bien comment faire ça sous excel mais pas avec vba...merci beaucoup
 

Dull

XLDnaute Barbatruc
Re : équivalent vba de la fonction excel "EQUIV"

Salut double-ien, Jacques, Eric, le Forum

avec le code de BOISGONTIER si j'ai bien compris

Code:
 x=Application.Match("aa",Range([COLOR=Red][B]TonNom[/B][/COLOR]),0)
If IsError(x) Then
   MsgbBox "Inconnu"
Else
  Msgbox x
End if
Bonne Journée
 

Dull

XLDnaute Barbatruc
Re : équivalent vba de la fonction excel "EQUIV"

Re le fil

Heu... une petite erreur

Code:
 x=Application.Match("aa",Range([COLOR=Red][B]"[/B][B]TonNom"[/B][/COLOR]),0)
If IsError(x) Then
   MsgbBox "Inconnu"
Else
  Msgbox x
End if

j'avais oublié les " "

Désolé :eek:
 

GALOUGALOU

XLDnaute Accro
bonjour double ien bonjour le forum
dans le classeur ci-joint avec la fonction match l'adresse de la cellule avec
Enrichi (BBcode):
 MsgBox Sheets("Feuil1").Range("A" & Position).Address
cordialement
galougalou
 

Pièces jointes

  • match.xlsm
    16.8 KB · Affichages: 43

patricktoulon

XLDnaute Barbatruc
re
bonjour
oulah c'est un vieux fil ça
application.match ou worksheetfunction.match te retourne l'index pas la valeur parti de la tu peux déterminer l’adresse de la cellule
2 méthodes
Code:
'-----------------------------------------------------
'recherche dans  une colonne
'méthode 1
Sub test_sur_une_colonne()    'application.match
    With Range("A1:A100")
        recherche = "toto"
        x = WorksheetFunction.Match(recherche, .Cells, 0)
        If Not IsError(x) Then
            MsgBox Cells(x, .Column).Address
        End If
    End With
End Sub

'-----------------------------------------------------
'recherche dans  une ligne
'méthode 1
Sub test_sur_une_ligne()    'application.match
    recherche = "toto"
    With Range("A1:z1")
        x = WorksheetFunction.Match(recherche, .Cells, 0)
        If Not IsError(x) Then
            MsgBox Cells(.Row, x).Address
        End If
    End With
End Sub
'************************************************************************************************
'************************************************************************************************

'-----------------------------------------------------
'recherche dans  une colonne
'méthode 2 avec evaluation d'une formule "equiv"
Sub test_sur_une_colonne2()
    recherche = "toto"
    With Range("A1:A100")
        x = Evaluate(Replace("=MATCH(""recherche""," & .Address(0, 0) & ",0)", "recherche", recherche))
        MsgBox .Cells(x, 1).Address
    End With
End Sub

'-----------------------------------------------------
'recherche dans  une ligne
'méthode 2 avec evaluation d'une formule "equiv"
Sub test_sur_une_ligne2()
    recherche = "toto"
    With Range("A1:z1")
        x = Evaluate(Replace("=MATCH(""recherche""," & .Address(0, 0) & ",0)", "recherche", recherche))
        MsgBox .Cells(1, x).Address
    End With
End Sub
tu sais tout ;)
 

Lolote83

XLDnaute Barbatruc
Bonjour à tous, PatrickToulon.
Je profite de ton dernier post pour mettre en place ma formule mais j'y arrive pas
Je dois retrouver une date dans une liste de date d'une colonne
Avec la méthode 1
Code:
Sub test1()         'application.match
    With Range("C4:C370")
        recherche = CDate("01/02/2020")
        x = WorksheetFunction.Match(recherche, .Cells, 0)
        If Not IsError(x) Then
            MsgBox Cells(x, .Column).Address
        End If
    End With
End Sub

Avec la méthode 2
VB:
Sub test2()
    recherche = CDate("01/02/2020")
    With Range("C4:C370")
        x = Evaluate(Replace("=MATCH(""recherche""," & .Address(0, 0) & ",0)", "recherche", recherche))
        MsgBox .Cells(x, 1).Address
    End With
End Sub

alors que la formule en B2=EQUIV(DATE(2020;2;1);C4:C370;0) donne le bon résultat
Merci de me dire ou est mon erreur.
@+ Lolote83
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce qui ne va pas avec la méthode 1 c'est le MsgBox Cells(x, .Column) au lieu de soit Cells(.Row - 1 + x, .Column) soit .Cells(x, 1) soit .Rows(x) tout simplement
Ce qui ne va pas dans la méthode 2 c'est la recherche d'un nombre formé d'un jour divisé par un mois divisé par une année au lieu de la date. Il vaudrait mieux chercher sa convertion en Double. Ou à la rigueur … """ & Recherche & """*1 …
 

patricktoulon

XLDnaute Barbatruc
re bonjour lolote83
VB:
Sub test1()         'application.match
    With Range("C4:C370")
        recherche = CDate("30/05/2020")
       'selon les versions excel et les librairies installées le find de date devient un calvaire
       'alors le plus simple est de chercher le numéro de série de la date
       'attention aussi match te donne l'index du tableau pris en compte et non celui du sheets colonne entiere
       ' il faut donc ajouter "+.row-1)
       ' les deux fonctionnent chez moi
       x = WorksheetFunction.Match(recherche, .Cells, 0) + .Row - 1
        'ou
          x = WorksheetFunction.Match(CLng(recherche), .Cells, 0) + .Row - 1
       If Not IsError(x) Then
            MsgBox Cells(x, .Column).Address
        End If
    End With
End Sub

@Dranreb on c'est croisés
cela dit cdbl ou clng a voir si les date sont avec heure ou pas je n'ai jamais testé la différence
je réécris la méthode 2 et test et reviens
 

Discussions similaires

Statistiques des forums

Discussions
312 160
Messages
2 085 837
Membres
102 998
dernier inscrit
billABDELL