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

  • Initiateur de la discussion Initiateur de la discussion sishley
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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😛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:
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😛500"))

Cependant j'ai toujours un renvoi de erreur de valeur

Merci
 
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+
 
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.
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour