Lire des Infos à partir d'un classeur fermé (et oui encore ...)

Michel1664

XLDnaute Nouveau
Bonjour à vous :)
Voilà mon épineux problème à l'aide d'un exemple simplifié pour ESSAYER d'être le plus explicite possible !
(Je tiens à précisé que j'ai bien utilisé la fonction rechercher mais même si j'ai trouvé des problèmes similaires au mien, je n'y suis pas arrivé)

Dans mon classeur actif "Récap.xls" :

En A1 : du texte, donnant le chemin ou se trouve les classeurs fermés source, Ex: D:\Travail\
De A2, B2, C2 à N2 : du texte, donnant les noms des classeurs fermés source, Ex: Denis, Michel, Sandra, ...
En A3 : du texte, donnant le nom de l'onglet devant être recherché, Ex: Janvier, Février, Mars …
En A4
: du texte, donnant l'emplacement de la cellule, Ex: B1, B2, B3 …
Donc, comme j'aimerais récupérer ces infos en fonction de mes variables ci-dessus j'ai utilisé la commande concatener :
En A5 : une formule, =CONCATENER("'";A1;"[";A2;".xls]";A3;"'!";A4)
Qui me donne en réponse du texte : 'D:\Travail\[Denis.xls]Janvier'!B1

Ensuite comme je veux la réponse à cette formule (qui est en faite du texte), j'ai trouvé sur Internet une petite fonction personnalisée : EVAL :)

Exemple d'utilisation de "EVAL" :
En A1 un nombre : 25
En A2 du texte : (2*A1)-7
En A3 la formule : =eval(A2) -> résultat : 43


Alt-F11, Insertion / module, copier ce qui suit :

Public Function eval(inp)
Application.Volatile
If Left(inp, 1) <> "=" Then inp = "=" & inp
eval = Application.Evaluate(inp)
End Function

Mais voilà, en faisant =Eval(A5), j'obtiens un résultat UNIQUEMENT quand mon classeur source est ouvert :mad: (ce que je comprends absolument pas :confused: ).

Donc si quelqu'un aurais une idée sur le problème voir même une autre méthode à me proposer ...

Merci d'avance !
 
Dernière édition:

michel_m

XLDnaute Accro
Re : Lire des Infos à partir d'un classeur fermé (et oui encore ...)

Bonjour Michel (bonne fête avec retard)

Tu peux utiliser la macro dite de Walkenbach" pour rechercher des valeurs dans un fichier;

copiée d'un fil récent voici un exemple https://www.excel-downloads.com/threads/recuperer-valeurs-dun-autre-classeur.67508/

Sub lire_ferme()
Dim chemin As String
chemin = ThisWorkbook.Path
Range("A3") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R1C1")
Range("B4") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R2C2")
Range("C8") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R5C3")
Range("E9") = ExecuteExcel4Macro("'" & chemin & "\[source.xls]Feuil1'!R7C4")
End Sub

attention "'" s'écrit guillemet apostrophe guillemet !!
et R7C4 est la cellule D7 (row 7 column 4), donc au lieu d'écrire B1 tu écris R1C2...
je te conseille de donner un nom de variable à ta concaténation
par exemple
tavar=range("A5")


Autres solution pour lire dans un fichier fermé: tu as le WIKI page 6 de MichelXLD qui te donne des exemples
 
Dernière édition:

Michel1664

XLDnaute Nouveau
Re : Lire des Infos à partir d'un classeur fermé (et oui encore ...)

Merci Michel_m pour ta réponse (et bonne fête à toi aussi :) )

Si j'ai bien compris ta réponse renvoi au problème :
Par exemple, aller récupérer sur secondaire.xls, la valeur des cellules A1, B2, C5 et D7 pour les copier dans ma feuille (principal.xls) dans les cellules A3, B4, C8 et E9.

Seulement je ne suis pas tout à fait confronté à cela !

Dans le fichier joint : (en rouge les variables)
En A1 : Je rentre une date
En B3 : Un répertoire (normalement cette variable ne sera "jamais" changée)
En J3 à J... : les noms des classeurs fermés (sera mis à jour assez occasionnellement)

Avec ces variables il faut qu'Excel me remplisse automatiquement mes tableaux présent sur la feuille (en faites, il y aura autant de tableaux que de fichiers source fermés).

Toute la difficulté réside dans le fait que l'emplacement des cellules à rechercher dans mes classeurs source fermés est VARIABLE en fonction de la date tappée en cellule A1 ! (et plus accesoirement du répertoire et des noms de fichiers)

En relisant mon premier post, je remarque que je n'avais peut-être pas bien exposé ce point :D

Remarque : Dans mes tableaux je comptais ajouter la formule =EVAL( .......... ) (voir mon premier message) pour qu'il m'affiche effectivement le résultat (puisqu'avec =concatener je n'ai pour le moment que du texte et non une formule !!!)
 

Pièces jointes

  • Recap.xls
    26.5 KB · Affichages: 76
  • Recap.xls
    26.5 KB · Affichages: 78
  • Recap.xls
    26.5 KB · Affichages: 76
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 934
Membres
103 404
dernier inscrit
sultan87