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 !
Je souhaite récupérer la valeur de la cellule P2 de l'onglet "test" d'un fichier B, dont le chemin et le nom du fichier on été créé dans une cellule du fichier A.
Voici en PJ le fichier A.
En A1 : chemin et nom du fichier B (qui a été créer à partir d'autres cellules) : ="\\toto\_AAA_" & Feuil2!A1 & Feuil2!A2 & Feuil2!A3 & ".xlsx"
A noter que je souhaite utiliser une formule, et que le fichier B sera fermé (donc fonction indirect inutilisable).
Je souhaite récupérer la valeur de la cellule P2 de l'onglet "test" d'un fichier B, dont le chemin et le nom du fichier on été créé dans une cellule du fichier A.
Voici en PJ le fichier A.
En A1 : chemin et nom du fichier B (qui a été créer à partir d'autres cellules) : ="\\toto\_AAA_" & Feuil2!A1 & Feuil2!A2 & Feuil2!A3 & ".xlsx"
A noter que je souhaite utiliser une formule, et que le fichier B sera fermé (donc fonction indirect inutilisable).
Bonjour,
Une autre méthode, sans choix ni ouverture de fichier :
Placer les infos dans 4 cellules distinctes (par exemple en A1, A2, A3 & A4
A1=Chemin du classeur (sans \ à la fin)
A2=Nom du classeur
A3=Nom de la feuille
A4=Référence de la cellule à extraire au format $L$C (ex $P$2)
La cellule A5 recevra le résultat
Si erreur un message est émis
VB:
Sub Extrait_Valeur()
Dim i As Integer, Dim a$
With ActiveSheet
a$ = .Range("A1") ' Nom du chemin (sans \ en fin)
' Double les apostrophes si présentes
a$ = Replace(a$, "'", "''", 1)
' Chaîne de liaison complète
a$ = "='" & a$ & "\[" & .Range("A2") & "]" & .Range("A3") & "'!" & .Range("A4")
Application.DisplayAlerts = False ' Pas de message d'alerte (sinon affiche la fenêtre choix de fichier)
On Error Resume Next
.Range("A5").Formula = a$ ' Place la formule en A5
i = Err.Number
On Error GoTo 0
Application.DisplayAlerts = True ' Rétablit les alertes
If i = 0 Then
' La cellule A5 Retourne True si erreur ("#REF!") = Chemin ou Fichier absent
If IsError(.Range("A5")) Then
MsgBox "Fichier absent ou référence incorrecte", vbCritical
Exit Sub
Else
' Aucune erreur
' A5 contient le résultat
End If
Else
' Erreur dans la formule
MsgBox "La formule est erronée (nom feuille ...)"
Exit Sub
End If
End With
End Sub
Bonjour,
Une autre méthode, sans choix ni ouverture de fichier :
Placer les infos dans 4 cellules distinctes (par exemple en A1, A2, A3 & A4
A1=Chemin du classeur (sans \ à la fin)
A2=Nom du classeur
A3=Nom de la feuille
A4=Référence de la cellule à extraire au format $L$C (ex $P$2)
La cellule A5 recevra le résultat
Si erreur un message est émis
VB:
Sub Extrait_Valeur()
Dim i As Integer, Dim a$
With ActiveSheet
a$ = .Range("A1") ' Nom du chemin (sans \ en fin)
' Double les apostrophes si présentes
a$ = Replace(a$, "'", "''", 1)
' Chaîne de liaison complète
a$ = "='" & a$ & "\[" & .Range("A2") & "]" & .Range("A3") & "'!" & .Range("A4")
Application.DisplayAlerts = False ' Pas de message d'alerte (sinon affiche la fenêtre choix de fichier)
On Error Resume Next
.Range("A5").Formula = a$ ' Place la formule en A5
i = Err.Number
On Error GoTo 0
Application.DisplayAlerts = True ' Rétablit les alertes
If i = 0 Then
' La cellule A5 Retourne True si erreur ("#REF!") = Chemin ou Fichier absent
If IsError(.Range("A5")) Then
MsgBox "Fichier absent ou référence incorrecte", vbCritical
Exit Sub
Else
' Aucune erreur
' A5 contient le résultat
End If
Else
' Erreur dans la formule
MsgBox "La formule est erronée (nom feuille ...)"
Exit Sub
End If
End With
End Sub
- 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