Bonjour,
Je cherche à récupérer des données d'une feuille à une autre dans un fichier de plus de 140 000 lignes.
Mon code y parviens très bien avec:
Mais le passage par l'inscription de la formule dans les cellules est très long, j'essaie donc de calculer le résultat directement par VBA mais n'y parviens pas.Code:
1
2 Selection.FormulaArray = _ "=IF(OR(R2C19<>""TROUVER"",ISERROR(INDEX(BdD!R2C1:R144765C64,SMALL(IF(R2C15=BdD!R2C28:R144765C28,ROW(BdD!R2C28:R144765C28))," & i & ")-1,1))),"""",INDEX(BdD!R2C1:R144765C64,SMALL(IF(R2C15=BdD!R2C28:R144765C28,ROW(BdD!R2C28:R144765C28))," & i & ")-1,1))"
La formule obtenue est:
J'ai commencé par le commencement:Code:={SI(OU($S$2<>"TROUVER";ESTERREUR(INDEX(BdD!$A$2:$BL$144765;PETITE.VALEUR(SI($O$2=BdD!$AV$2:$AV$144765;LIGNE(BdD!$AV$2:$AV$144765));1)-1;1)));"";INDEX(BdD!$A$2:$BL$144765;PETITE.VALEUR(SI($O$2=BdD!$AV$2:$AV$144765;LIGNE(BdD!$AV$2:$AV$144765));1)-1;1))}
, aucun problème mais à partir de l'introduction duCode:LIGNE(BdD!$AV$2:$AV$144765)
ça ne va plus:Code:SI
ne pose pas de problème mais:Code:IIf(Range("O2").Value = Range("BdD!AV2").Value, Range("BdD!AV2:AV144765").Row, 0)
ne fonctionne plus: "Erreur d'exécution '13': Incompatibilité de type" et en voulant passer sur une formule matricielle:Code:IIf(Range("O2").Value = Range("BdD!AV2:AV144765").Value, Range("BdD!AV2:AV144765").Row, 0)
Idem.Code:Evaluate(IIf(Range("O2").Value = Range("BdD!AV2:AV144765").Value, Range("BdD!AV2:AV144765").Row, 0))
Le code entier:
Merci pour toute aide!!!!!!!Code:
1
2
3
4
5
6
7
8
9 Sub APPFUNCT() Dim x x = Evaluate(IIf(Range("O2").Value = Range("BdD!AV2:AV144765").Value, Range("BdD!AV2:AV144765").Row, 0)) Range("S4").Value = x End Sub