Bonsoir à tous,
Je sollicite votre aide et votre temps 🙂() pour me débloquer, mes recherches étant infructueuses. Je cherche à effectuer une formule Index( Equiv) sur toutes les feuilles d'un classeur (dont le nombre de feuille varie (je ne peut donc pas mettre le nom des feuilles)). Le but étant d'effectuer la moyenne de de toutes ces données récupérées. De plus certaines données n'existent tout simplement pas pour certains produits (il s'agit de phase de production, certains produits ne possédent pas ces phases). Voila mon code ainsi que des fichiers exemple ( les données sont fausses (je les ai générés aléatoirement mais ça n'a pas d'incidence sur le code)).
J'ai l'impression que c'est au niveau de la déclaration de S que ça pose probleme mais c'est qu'une intuition de noob.
"Public Function MoyenneRecherche(c2 As Range)
Dim S As Worksheets
Dim yt As Integer
Dim tot As Double, y As Double
Application.Volatile
Workbooks("Exempledonnees").Activate
For Each S In Workbooks("Exempledonnees")
y = WorksheetFunction.Index(Range("P1😛200"), WorksheetFunction.Match(Workbooks("EssaiRecherche.xlsm").Feuil1.Cells(c2), Workbooks("Exempledonnees").S.Range("E10:E500"), 0))
If y <> "" Then yt = yt + 1
tot = tot + y
Next S
If yt <> 0 Then MoyenneRecheche = tot / yt
End Function"
Je vous remercie par avance.
Je sollicite votre aide et votre temps 🙂() pour me débloquer, mes recherches étant infructueuses. Je cherche à effectuer une formule Index( Equiv) sur toutes les feuilles d'un classeur (dont le nombre de feuille varie (je ne peut donc pas mettre le nom des feuilles)). Le but étant d'effectuer la moyenne de de toutes ces données récupérées. De plus certaines données n'existent tout simplement pas pour certains produits (il s'agit de phase de production, certains produits ne possédent pas ces phases). Voila mon code ainsi que des fichiers exemple ( les données sont fausses (je les ai générés aléatoirement mais ça n'a pas d'incidence sur le code)).
J'ai l'impression que c'est au niveau de la déclaration de S que ça pose probleme mais c'est qu'une intuition de noob.
"Public Function MoyenneRecherche(c2 As Range)
Dim S As Worksheets
Dim yt As Integer
Dim tot As Double, y As Double
Application.Volatile
Workbooks("Exempledonnees").Activate
For Each S In Workbooks("Exempledonnees")
y = WorksheetFunction.Index(Range("P1😛200"), WorksheetFunction.Match(Workbooks("EssaiRecherche.xlsm").Feuil1.Cells(c2), Workbooks("Exempledonnees").S.Range("E10:E500"), 0))
If y <> "" Then yt = yt + 1
tot = tot + y
Next S
If yt <> 0 Then MoyenneRecheche = tot / yt
End Function"
Je vous remercie par avance.
Pièces jointes
Dernière édition: