Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Récupérer des informations dans un autre fichier

titine06

XLDnaute Junior
Bonsoir le forum !

Je centralise les informations du fichier "titine2" dans un fichier "titine".
Je récupère les données de:
  • la celulle A2
  • le fichier titine2.xlsx
  • l'emplacement C:\Users\Samsung\Desktop\Inventaire\

Pour cela j'utilise une formule:
='C:\Users\Samsung\Desktop\Inventaire\[titine2.xlsx]Feuil1'!$A$2

Cependant, l'emplacement, le nom du fichier et la cellule à récupérer peuvent changer.
Je souhaite que cette formule se base de 3 cellules afin de déterminer l'emplacement, le fichier, et la cellule à récupérer:

- D3 pour la cellule
- E3 pour l'emplacement
- F3 pour le fichier

Merci d'avance


Titine
 

Pièces jointes

  • titine.xlsx
    9.6 KB · Affichages: 48
  • titine.xlsx
    9.6 KB · Affichages: 52
  • titine.xlsx
    9.6 KB · Affichages: 52

titooooo

XLDnaute Occasionnel
Re : Récupérer des informations dans un autre fichier

bonjour

concernant l’excellente formule

INDIRECT("'"&E3&"\["&F3&"]Feuil1'!"&TEXTE(D3;"@"))

serait il possible de choir aussi la feuille de destination

au lieu de feuille1 peut on mettre cette valeur comme variable
 

JCGL

XLDnaute Barbatruc
Re : Récupérer des informations dans un autre fichier

Bonjour à tous,

TiToooo : peux-tu essayer :

Code:
=INDIRECT("'"&D4&"["&E4&"]"&F4&"'!"&G4)

Bien que je n'en vois pas l’intérêt si le fichier est ouvert
Ceci suffirait :
Code:
=INDIRECT("'["&E4&"]"&F4&"'!"&G4)



A + à tous
 

Pièces jointes

  • Capture_3.png
    9.7 KB · Affichages: 108
  • Capture_3.png
    9.7 KB · Affichages: 111

JCGL

XLDnaute Barbatruc
Re : Récupérer des informations dans un autre fichier

Bonjour à tous,

Titine : un essai qui fonctionne chez moi

VB:
Option Explicit


Sub Test_pour_JCGL()
MsgBox "La cellule contient : " & RecupInfo(Cells(4, 4) & Cells(4, 5), Cells(4, 6), 5, 3), vbInformation, "Valeur..."
End Sub


Sub Test_pour_Titine()
MsgBox "La cellule contient : " & RecupInfo(Cells(3, 4) & Cells(3, 5), "Feuil1", 2, 1), vbInformation, "Valeur..."
End Sub


Function RecupInfo(Fichier As String, Feuille As String, Ligne As Long, Col As Integer)
With CreateObject("Excel.Application").Workbooks.Open(Fichier)
RecupInfo = .Worksheets(Feuille).Cells(Ligne, Col)
.Close False
End With
End Function

A + à tous
 

Pièces jointes

  • JC Essai sur Classeur Fermé.xlsm
    27.9 KB · Affichages: 45
  • JC Essai sur Classeur Fermé.xls
    53 KB · Affichages: 45
  • JC Essai sur Classeur Fermé.xls
    53 KB · Affichages: 56
  • JC Essai sur Classeur Fermé.xls
    53 KB · Affichages: 54

titine06

XLDnaute Junior
Re : Récupérer des informations dans un autre fichier

Bonjour JCGL, titooooo, le forum

Merci pour votre contribution!

JCGL, la macro fonctionne parfaitement: elle récupère les données où il le faut à l'aide d'un bouton (c'est vraiment ce que je cherchais ! )

J'aimerai cependant la modifier sur 2 points:
- j'aimerai que le résultat s'affiche dans une cellule E10 par exemple (et non pas dans une msgbox)
- j'aimerai que si l'emplacement ou le nom est erroné, un msgbox m'indique que le nom ou emplacement n'existe pas (au lieu de me renvoyer au "débeugage VBA"...)

Ces ajouts/modifications sont-ils possibles?

Encore merci pour ton aide précieuse JCGL !!

a bientôt !!

Titine
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Récupérer des informations dans un autre fichier

Bonjour à tous,

Dépose ce code dans la Sub Test_pour_Titine()

VB:
Sub Test_pour_Titine()
Dim Msg As String
On Error GoTo Msg
Cells(10, 5) = RecupInfo(Cells(3, 4) & Cells(3, 5), "Feuil1", 2, 1)
'MsgBox "La cellule contient : " & RecupInfo(Cells(3, 4) & Cells(3, 5), "Feuil1", 2, 1), vbInformation, "Valeur..."
Msg: MsgBox "Le fichier ou la feuille n'existe pas... Ou les deux :-)", vbCritical, "Oups...."
End Sub

A + à tous
 

titooooo

XLDnaute Occasionnel
Re : Récupérer des informations dans un autre fichier

Bonjour mes amis

ca ne marche pas avec les bouton
je lui donne bien l'emplacement et toutes les info mais toujours il me donne que le chemin est erroné
 

Pièces jointes

  • tetine.zip
    23.1 KB · Affichages: 27

Modeste

XLDnaute Barbatruc
Re : Récupérer des informations dans un autre fichier

Bonjour le fil,

@Titooooo: La macro proposée par JCGL fonctionne bien chez moi aussi. Je n'ai donc pas regardé au code, mais dans le nom du fichier à ouvrir (cellule C3), il y a deux 'r' à la fin de 'janvier'

... vérifie si ça règle ton souci ...
 

titooooo

XLDnaute Occasionnel
Re : Récupérer des informations dans un autre fichier

non ca règle pas mon souci malgré que j'ai tout vérifié , essaye toi meme avec le fichier à jour
 

Pièces jointes

  • tetine1.zip
    22.7 KB · Affichages: 32

JCGL

XLDnaute Barbatruc
Re : Récupérer des informations dans un autre fichier

Bonjour à tous,
Salut Modeste,

Tu as associé la macro faite pour Titine qui va chercher Feuil1...
Utilise le code fait pour moi qui va chercher le nom de la feuille... Mais en mettant les bonnes cellules sources.

Dans le fichier joint, il faut changer le chemin en B3

Plus le double rr de Janvier...

Merci Luc pour le SAV.
A++ l'ami

A + à tous
 

Pièces jointes

  • JC Essai sur Classeur Fermé.xls
    49 KB · Affichages: 41
  • JC Essai sur Classeur Fermé.xls
    49 KB · Affichages: 49
  • JC Essai sur Classeur Fermé.xls
    49 KB · Affichages: 50
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Récupérer des informations dans un autre fichier

Bonjour à tous,

Tu changes :
Cells(10, 5) = RecupInfo(Cells(3, 2) & Cells(3, 3), Cells(3, 4), 3, 8)
par
Cells(3, 6) = RecupInfo(Cells(3, 2) & Cells(3, 3), Cells(3, 4), 3, 8)
ou
Range("F3") = RecupInfo(Cells(3, 2) & Cells(3, 3), Cells(3, 4), 3, 8)

Il est important de chercher à comprendre le code pour pouvoir le refaire...

A + à tous
 

titine06

XLDnaute Junior
Re : Récupérer des informations dans un autre fichier

Bonjour à tous !!

Je vois que ce sujet interesse un peu de monde !

Donc en gros, ca fait 3h que je galère...
JCGL, j'utilise ton code de base (avant que tu n'ais fait les rectifications pour moi de msgbox) car j'essaie de comprendre pourquoi ca bloque.

Après plusieurs heures de tests.... je suis tombé sur un bug de je crois..

Parfois, la msgbox qui devrait afficher la valeur n'affiche rien, alors qu'il y a bien une valeur dans la cellule déterminée.
J'ai créé un fichier "Test" dans lequel, j'ai écris des valeurs différentes sur la plage: A2-C4

- je n'obtient ni "débeugage" ni valeur avec la macro JCGL
- j'obtient toujours la valeurs quelque soit la cellule cherchée : "a" avec la macro titine


Alors c'est tout de même étonnant tout ça.. je vous envois mes fichiers.
Est-ce une erreur de ma part?
C'est comme si, lorsque Recapinfo trouve une valeur, il ne réinitialise pas sa recherche...

Si quelqu'un a une idée?

Pour info, j'utilise excel 2007 en ce moment.. mais ce sont des fichiers 2003... j'ai également essayé en xlsx.. même problème.. ca pourrait provenir de là?

Merci à tous pour votre investissement.

Titine
 

Pièces jointes

  • test.xls
    16.5 KB · Affichages: 36
  • test.xls
    16.5 KB · Affichages: 36
  • test.xls
    16.5 KB · Affichages: 31
  • JC Essai sur Classeur Fermé.xls
    46 KB · Affichages: 37
  • JC Essai sur Classeur Fermé.xls
    46 KB · Affichages: 41
  • JC Essai sur Classeur Fermé.xls
    46 KB · Affichages: 36
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Récupérer des informations dans un autre fichier

Bonjour à tous,

Plu simple...

Tu renseignes les cellules D3 à G3

A + à tous
 

Pièces jointes

  • JC Essai sur Classeur Fermé 4 valeurs.xls
    47.5 KB · Affichages: 35
Dernière édition:

titine06

XLDnaute Junior
Re : Récupérer des informations dans un autre fichier

Rebonjour à tous !!! =)

Merci pour ta réponse

C'est vraiment étrange.... le problème persiste chez moi
ça n'affiche que la valeur présente dans A2 de mon ficher test: "a"

Ca marche bien chez toi? quelle version de office utilises-tu?

Encore merci

Titine
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…