Index(Equiv) sur toutes les feuilles d'un autre classeur

sishley

XLDnaute Nouveau
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:p200"), 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

  • exempledonnees.xlsx
    26.3 KB · Affichages: 42
  • exempledonnees.xlsx
    26.3 KB · Affichages: 43
  • exempledonnees.xlsx
    26.3 KB · Affichages: 50
  • EssaiRecherche.xlsm
    15.4 KB · Affichages: 34
  • EssaiRecherche.xlsm
    15.4 KB · Affichages: 36
  • EssaiRecherche.xlsm
    15.4 KB · Affichages: 35
Dernière édition:

sishley

XLDnaute Nouveau
Re : Index(Equiv) sur toutes les feuilles d'un autre classeur

Bonjour,

J'ai fait une faute dans ma formule en réalité:
y = WorksheetFunction.Index(Workbooks("Exempledonnees").S.Range("E1:Q200"), WorksheetFunction.Match(Workbooks("EssaiRecherche.xlsm").Feuil1.Cells(c2), Workbooks("Exempledonnees").S.Range("E10:E500"), 0), Workbooks("Exempledonnees").S.Range("P10:p500"))

Cependant j'ai toujours un renvoi de erreur de valeur

Merci
 

job75

XLDnaute Barbatruc
Re : Index(Equiv) sur toutes les feuilles d'un autre classeur

Bonjour sishley,

Vos fichiers sont assez folkloriques : il y a des espaces superflus partout, avant et après les données !!!

Alors on fait avec, essayez cette fonction :

Code:
Function MoyenneRecherche(c2 As Range) As Double
  Dim t As String, w As Worksheet, s As Double, n As Long
  Application.Volatile
  t = "*" & Trim(c2) & "*"
  For Each w In Workbooks("Exempledonnees").Worksheets
    s = s + Application.SumIf(w.[E:E], t, w.[P:P])
    n = n + Application.CountIf(w.[E:E], t)
  Next
  MoyenneRecherche = s / n
End Function
Elle utilise les fonctions SOMME.SI et NB.SI.

Qui recherchent les cellules contenant le texte en c2 (épuré des espaces superflus).

A+
 

sishley

XLDnaute Nouveau
Re : Index(Equiv) sur toutes les feuilles d'un autre classeur

Bonjour job 75, Bonjours à tous,

Je vous remercie pour votre aide. J'ai conscience que les fichiers données sont folklorique en réalité ces fichiers sont réalisés par d'autres personnes et proviennent d'un autre logiciel ( ils sont ensuite convertis en excel).

Votre fonction est plus ingénieuse que la mienne et contrairemment à la mienne il n'y a pas d'erreur de valeur affiché. J'ai cependant enlevé les espaces supeflus à l'aide d'excel, mais le programme semble ne pas trouver les valeurs indiqués puisque le résultats est 0. :(

Question de débutant à quoi sert le "*" ?

Je vous remercie encore pour votre aide.
 

job75

XLDnaute Barbatruc
Re : Index(Equiv) sur toutes les feuilles d'un autre classeur

Re,

L'astérisque * est ici un caractère générique.

Il permet de rechercher la valeur c2 (épurée) avec de part et d'autre n'importe quels caractères.

La fonction est en fait très simple et sur vos fichiers elle fonctionne.

Je ne peux pas vous aider plus, à vous de la tester correctement.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 530
dernier inscrit
Chess01