Microsoft 365 Récupérer la valeur d'une cellule d'un autre fichier

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 !

Diane272727

XLDnaute Junior
Bonjour,

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).

Si vous avez des idées je suis preneuse 🙂

Merci beaucoup pour votre aide.
 
Solution
Merci beaucoup, mais j'ai besoin d'avoir le résultat de façon automatique, donc sans bouton 😉
Alors téléchargez où il faut les fichiers joints.

Le chemin en C2 et le nom du fichier en C3 sont à adapter si nécessaire.

La macro dans ThisWorkbook :
VB:
Private Sub Workbook_Activate()
Dim chemin$, fichier$, feuille$
chemin = [C2]
fichier = [C3]
feuille = "test"
Application.DisplayAlerts = False
On Error Resume Next
[C4] = "='" & chemin & "[" & fichier & "]" & feuille & "'!P2"
[C4] = [C4].Value
End Sub
Elle se déclenche quand on ouvre ou active le fichier de la macro.
Bonsoir Diane272727,

Le chemin et le nom du fichier peuvent être modifiés, il vaut mieux utiliser la méthode GetOpenFileName :
VB:
Sub Recherche()
Dim fichier As Variant, chemin$, feuille$
fichier = Application.GetOpenFilename("Fichiers .xlsx (*.xlsx),*.xlsx")
If fichier = False Then Exit Sub
chemin = Left(fichier, InStrRev(fichier, "\"))
fichier = Mid(fichier, Len(chemin) + 1)
feuille = "test"
On Error Resume Next
[C2] = "='" & chemin & "[" & fichier & "]" & feuille & "'!P2"
End Sub
Bonne nuit.
 

Pièces jointes

Bonjour,

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).

Si vous avez des idées je suis preneuse 🙂

Merci beaucoup pour votre aide.
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

Eric
 
Merci , mais j
Bonsoir Diane272727,

Le chemin et le nom du fichier peuvent être modifiés, il vaut mieux utiliser la méthode GetOpenFileName :
VB:
Sub Recherche()
Dim fichier As Variant, chemin$, feuille$
fichier = Application.GetOpenFilename("Fichiers .xlsx (*.xlsx),*.xlsx")
If fichier = False Then Exit Sub
chemin = Left(fichier, InStrRev(fichier, "\"))
fichier = Mid(fichier, Len(chemin) + 1)
feuille = "test"
On Error Resume Next
[C2] = "='" & chemin & "[" & fichier & "]" & feuille & "'!P2"
End Sub
Bonne nuit.
Merci beaucoup, mais j'ai besoin d'avoir le résultat de façon automatique, donc sans bouton 😉
 
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

Eric
Meric beaucoup. J'ai mis le code VBA et les infos dans la col A, mais ça ne lance rien. Pourrais tu m'aider ? merci beaucoup
 

Pièces jointes

Merci beaucoup, mais j'ai besoin d'avoir le résultat de façon automatique, donc sans bouton 😉
Alors téléchargez où il faut les fichiers joints.

Le chemin en C2 et le nom du fichier en C3 sont à adapter si nécessaire.

La macro dans ThisWorkbook :
VB:
Private Sub Workbook_Activate()
Dim chemin$, fichier$, feuille$
chemin = [C2]
fichier = [C3]
feuille = "test"
Application.DisplayAlerts = False
On Error Resume Next
[C4] = "='" & chemin & "[" & fichier & "]" & feuille & "'!P2"
[C4] = [C4].Value
End Sub
Elle se déclenche quand on ouvre ou active le fichier de la macro.
 

Pièces jointes

UN GRAND MERCI CA FONCTIONNE TRES BIEN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! belle fin de journée
Alors téléchargez où il faut les fichiers joints.

Le chemin en C2 et le nom du fichier en C3 sont à adapter si nécessaire.

La macro dans ThisWorkbook :
VB:
Private Sub Workbook_Activate()
Dim chemin$, fichier$, feuille$
chemin = [C2]
fichier = [C3]
feuille = "test"
Application.DisplayAlerts = False
On Error Resume Next
[C4] = "='" & chemin & "[" & fichier & "]" & feuille & "'!P2"
[C4] = [C4].Value
End Sub
Elle se déclenche quand on ouvre ou active le fichier de la macro.
 
- 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