Formule index+equiv sur matrice multi-feuille
Bonjour à vous,
Je souhaite réaliser une formule dans un classeur composer de 18 feuilles avec dans chaque une un tableau de même nature (nombre de colonne, nom des colonnes…..) mais dont le nombre de ligne diffère et est amener à être compléter.
La formule que je souhaite mettre en place est une formule INDEX+EQUIV afin de rechercher dans toutes les feuilles les infos souhaiter suivant un numéro de local sans voir a fouiller manuellement dans toutes les feuilles
Le souci rencontrer c'est la matrice de recherche qui ne me permet pas de sélectionné plusieurs feuilles.
j'ai fait quelque recherche sur internet et j'ai trouver une formule =Trf_plage(Ma Plage; "Feuil1:Feuil3") accompagner d'un VBA que je ne comprend pas trop (petit niv en VBA) à intégrer dans la formule a la place de la matrice mais quand j'essaie de l'utilisé une erreur se fait.
Voici le lien ou j'ai trouver mes info https://www.commentcamarche.net/faq/13258-formules-sur-matrice-multi-feuilles
Auriez vous une solution a me proposé? ou me permettre de comprendre cette formule afin que je puisse la faire fonctionné pour mon cas.
Je peux vous joindre mon fichier si besoin est d'avoir un visuel.
Merci
Bonjour,
le nom de la fonction dans le code fourni est M_charge et non trf_plage.
Function M_Charge(plage As Range, Optional feuilles As String = "") As Variant
Dim cel As Range, i As Long, j As Integer, tablo() As Variant, tablof() As Variant
Dim f As Integer, feuille1 As String, feuille2 As String
Application.Volatile ' Permet un recalcul automatique ' Définition de la feuille par défaut si aucune feuille n'est mentionnée
If feuilles = "" Then feuilles = ActiveSheet.Name & ":" & ActiveSheet.Name
i = -1
If InStr(feuilles, ",") > 0 Then ' traitement des feuilles non contigues (séparées par des virgules)
Do While InStr(feuilles, ",") > 0
i = i + 1
ReDim Preserve tablof(i)
tablof(i) = Left(feuilles, InStr(feuilles, ",") - 1)
feuilles = Mid(feuilles, InStr(feuilles, ",") + 1, Len(feuilles) - InStr(feuilles, ","))
Loop
End If
i = i + 1
ReDim Preserve tablof(i)
tablof(i) = feuilles
i = -1
For f = LBound(tablof) To UBound(tablof) ' traite les différent blocs de feuilles
feuilles = tablof(f)
If InStr(feuilles, ":") = 0 Then feuilles = feuilles & ":" & feuilles ' je crée le bloc la feuille est seule
' Récupération de la feuille de début et la feuille de fin
feuille1 = Left(feuilles, InStr(feuilles, ":") - 1)
feuille2 = Right(feuilles, Len(feuilles) - InStr(feuilles, ":")) ' Passage en revue de toutes les feuilles entre Feuille1 et Feuille2
For j = Sheets(feuille1).Index To Sheets(feuille2).Index ' Each ws In Sheets(feuilles)
For Each cel In plage ' Pour chacune des cellules de la plage
i = i + 1
ReDim Preserve tablo(i) ' J'incrémente la table en cours de création
tablo(i) = Sheets(j).Cells(cel.Row, cel.Column).Value ' Récupélation de la valeur
Next
Next j
Next f
M_Charge = tablo ' Affectation du tableau à la fonction (la matrice est créée)
End Function