Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Microsoft 365Récupérer la data de plusieurs feuille
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 !
Function TrouveValeur(lig, ref As Range)
Application.Volatile
Dim w As Worksheet, c As Range
On Error Resume Next
Set w = Sheets(lig)
Set c = w.Cells.Find(ref, , xlValues)
TrouveValeur = ""
TrouveValeur = c.Offset(, 1)
End Function
Formule en Feuil1!A4 à tirer à droite et vers le bas : =TrouveValeur(LIGNE()-2;A$3)
Edit : pas besoin des variables w et c :
VB:
Function TrouveValeur(lig, ref As Range)
Application.Volatile
On Error Resume Next
TrouveValeur = ""
TrouveValeur = Sheets(lig).Cells.Find(ref, , xlValues).Offset(, 1)
End Function
Re, bonjour Job,
Dans le même ordre d'idée, un essai en PJ sans formule.
La table se remet à jour automatiquement lorsqu'on sélectionne la feuille Feuil1. Avec :
VB:
Sub Worksheet_Activate()
Dim L%, F
L = 4: [A4:C30].ClearContents
For Each F In Worksheets
If F.Name <> ActiveSheet.Name Then
On Error Resume Next
Cells(L, "A") = Sheets(F.Name).Cells.Find("ID", , xlValues).Offset(, 1)
Cells(L, "B") = Sheets(F.Name).Cells.Find("% Rate", , xlValues).Offset(, 1)
Cells(L, "C") = Sheets(F.Name).Cells.Find("Paie", , xlValues).Offset(, 1)
L = L + 1
End If
Next F
End Sub
Ma solution du post #3 est quand même très minimaliste.
Cette fonction va bien quelles que soient les positions des feuilles et seules celles contenant "ID" sont étudiées :
VB:
Function TrouveValeur(lig&, ref As Range)
Application.Volatile
Dim nomfeuille$, w As Worksheet, c As Range, n&, nf$
nomfeuille = Application.Caller.Parent.Name
For Each w In Worksheets
If w.Name <> nomfeuille Then
Set c = w.Cells.Find("ID", , xlValues, xlWhole)
If Not c Is Nothing Then n = n + 1: If n = lig Then nf = w.Name: Exit For
End If
Next
On Error Resume Next
TrouveValeur = ""
TrouveValeur = Sheets(nf).Cells.Find(ref, , xlValues, xlWhole).Offset(, 1)
End Function
Bonsoir Job,
Le souci d'une telle fonction est que si l'utilisateur change la feuille de place ou en ajoute une avant alors les résultats sont incorrectes.
De plus à chaque modification de valeur dans une quelconque fois tout le tableau sera réactualisé.
Deux soucis qu'on évite avec un Worksheet_Activate.
- 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