etpisculrien
XLDnaute Occasionnel
Bonjour à vous les expert(e)s
J'aurais besoin de vous concernant un projet car je ne trouve pas où est l'erreur dans mon code. Je vous explique :
J'ai une formule sur une feuille Excel qui me permet de faire un "genre de RechercheV entre 2 dates", ce pour identifier l'utilisateur d'un véhicule en fonction de la date. La formule fonctionne très bien mais est très gourmande en ressource ce qui fait que cela met un temps infini pour calculer la feuille (j'ai près de 10000 lignes).
Du coup, pour que ça aille plus vite, j'essaie de convertir ma formule en VBA pour pouvoir la traiter dans un tableau-Array, ce qui devrait être beaucoup plus rapide.
Là où je bloque c'est pour convertir la formule suivante : =SIERREUR(@INDIRECT("'Date_vehicule'!D"&SOMMEPROD(((Date_vehicule!A:A)=I2)*(A2>=(Date_vehicule!B:B))*(A2<=(Date_vehicule!C:C));LIGNE(Date_vehicule!D)));"")
en une formule VBA à intégrer dans mon code suivant :
Sub FORMULE()
Dim TABLE, I As Integer
TABLE = Range("A2:M1000").Value
For I = 1 To 999
TABLE(I, 1) = WorksheetFunction.INDIRECT(Sheets("Date_vehicule").Range("D") & WorksheetFunction.SumProduct(((Sheets("Date_vehicule").Range("A:A")) = TABLE(I, 9)) * (TABLE(I, 1) >= (Sheets("Date_vehicule").Range("B:B"))) * (TABLE(I, 1) <= (Sheets("Date_vehicule").Range("C:C"))), WorksheetFunction.Row(Sheets("Date_vehicule").Range("D"))))
Next I
Range("M2:M1000").Value = TABLE
End Sub
Si quelqu'un pouvait m'aider, je n'ai plus de cheveux et je commence à attaquer la peau de mon crâne...
Merci d'avance
Je mets un exemple de mon fichier pour mieux comprendre (PS : éviter de lancer le calcul sinon ça risque de prendre du temps)
J'aurais besoin de vous concernant un projet car je ne trouve pas où est l'erreur dans mon code. Je vous explique :
J'ai une formule sur une feuille Excel qui me permet de faire un "genre de RechercheV entre 2 dates", ce pour identifier l'utilisateur d'un véhicule en fonction de la date. La formule fonctionne très bien mais est très gourmande en ressource ce qui fait que cela met un temps infini pour calculer la feuille (j'ai près de 10000 lignes).
Du coup, pour que ça aille plus vite, j'essaie de convertir ma formule en VBA pour pouvoir la traiter dans un tableau-Array, ce qui devrait être beaucoup plus rapide.
Là où je bloque c'est pour convertir la formule suivante : =SIERREUR(@INDIRECT("'Date_vehicule'!D"&SOMMEPROD(((Date_vehicule!A:A)=I2)*(A2>=(Date_vehicule!B:B))*(A2<=(Date_vehicule!C:C));LIGNE(Date_vehicule!D)));"")
en une formule VBA à intégrer dans mon code suivant :
Sub FORMULE()
Dim TABLE, I As Integer
TABLE = Range("A2:M1000").Value
For I = 1 To 999
TABLE(I, 1) = WorksheetFunction.INDIRECT(Sheets("Date_vehicule").Range("D") & WorksheetFunction.SumProduct(((Sheets("Date_vehicule").Range("A:A")) = TABLE(I, 9)) * (TABLE(I, 1) >= (Sheets("Date_vehicule").Range("B:B"))) * (TABLE(I, 1) <= (Sheets("Date_vehicule").Range("C:C"))), WorksheetFunction.Row(Sheets("Date_vehicule").Range("D"))))
Next I
Range("M2:M1000").Value = TABLE
End Sub
Si quelqu'un pouvait m'aider, je n'ai plus de cheveux et je commence à attaquer la peau de mon crâne...
Merci d'avance
Je mets un exemple de mon fichier pour mieux comprendre (PS : éviter de lancer le calcul sinon ça risque de prendre du temps)