Microsoft 365 fonction index Match

Calou83

XLDnaute Nouveau
Bonjour à toutes et tous,

j'ai un fichier avec 2 onglets : doublerecherche et recherche_feuille
j'ai créé le code ci-dessous : lorsque j'exécute la macro voici le code erreur : Erreur 13 incompatibilité de type
Je cherche partout dans les forums mais je ne trouve pas de solution.

VB:
Sub jeTeste2()
    Dim myrange As Range
    Set myrange = Range("ListeRef")
    Dim MyRange2 As Range
    Set MyRange2 = Range("ListeMagasin")
    Dim MyTable As Range
    Set MyTable = Worksheets("doublerecherche").Range("STOCK")
    
      
    Worksheets("Recherche_feuille").Range("MAG_1") = Application.WorksheetFunction.Index(MyTable, _
            Application.Match(Worksheets("Recherche_feuille").Range("test2"), Worksheets("doublerecherche").Range("ListeRef"), 0), _
            Application.Match(Worksheets("Recherche_feuille").Range("$b$11"), Worksheets("doublerecherche").Range("ListeMagasin"), 0))

End Sub

Avez-vous une idée ? Merci pour votre aide
 

Pièces jointes

  • Classeur Test.xlsm
    28 KB · Affichages: 8
Solution
Je ne sais pas bien comment tu procèdes
Ecris-tu le magasin manuellement en A1 et ensuite tu lances la macro ?
Bon j'ai mis un on error resume next chez moi même s'il trouve pas cela ne fait pas d'erreur mais selon les options cela varie
Voici une nouvelle version
Bruno
VB:
Sub Bruno()
Dim col%, lig%, lg%, i%
Feuil1.Select
On Error Resume Next
col = Application.Match([A1], Rows(11), 0)
If Err <> 0 Then Exit Sub
i = Application.Match([A1], Feuil7.Rows(1), 0)
For lg = 12 To [A65000].End(3).Row
lig = Application.Match(Cells(lg, 1), Feuil7.[A:A], 0)
Cells(lg, col) = Feuil7.Cells(lig, i)
Next
End Sub

Dranreb

XLDnaute Barbatruc
Bonjour.
Apparemment c'est parce que vous spécifiez un plage de plusieurs cellules comme 1er argument de Application.Match, alors ça renvoie aussi un tableau de tous ces résultats, ce qui n'est pas un argument 2 valide pour la Application.WorksheetFunction.Index
 

Calou83

XLDnaute Nouveau
Bonjour,

Merci pour votre réponse.
Le formule fonctionne dans le tableau avec la plage nommée test2.
=SIERREUR(INDEX(STOCK;EQUIV(test2;ListeRef;0);EQUIV($B$11;ListeMagasin;0));"")
comment puis-je le traduire en VBA

Encore merci et bonne journée
 

Calou83

XLDnaute Nouveau
Moi je préparerais le résultat dans un tableau dynamique que je verserais à la fin dans toute la plage.
Mais si la formule fonctionne installez la, quitte à affecter à la fin la valeur de la plage à elle même si vous ne voulez pas la garder.
Merci, pour info mon fichier à plus de 35000 lignes et les formules index equiv ralentissent considérablement le fichier c'est pourquoi je souhaitais passer le vba.
 

Statistiques des forums

Discussions
313 272
Messages
2 096 730
Membres
106 734
dernier inscrit
Adrien974