Comment concaténer des éléments à ma formule ?

massol

XLDnaute Junior
Bonjour,

Dans la cellule B4 de mon fichier, je récupère une valeur issue d'un fichier EXCEL fermé (fichier "synthese.xls"). Pour cela j'utilise la commande suivante :

='C:\Users\jmassol\Desktop\recup\[synthese.xls]Feuil1'!$B2

Le problème c'est qu'en fait la donnée à récupérer (et donc le fichier "synthèse.xls") se situe dans le dossier 'C:\Users\jmassol\Desktop\recup\UB4840'.

Le dernier terme (UB4840) est une variable qui apparait dans la cellule A4. Cette valeur est le résultat d'une concaténation.

1- Comment dois-je modifier ma commande pour concaténer 'C:\Users\jmassol\Desktop\recup\' et 'UB4840' de sorte à obtenir 'C:\Users\jmassol\Desktop\recup\UB4840' ?

2- Le nom du fichier dans lequel se trouve la donnée à récupérer est également une variable (valeur entre crochet proposée au début = variable). Celle-ci apparait dans la cellule F4. Comment dois-je modifier ma commande pour que le nom du fichier à scruter soit une variable ?

3- Même question pour l'onglet ("Feuil1" dans la ligne de commande proposée au départ).

En vous remerciant par avance.

Cdlt.
Jérôme.
 

chris

XLDnaute Barbatruc
Bonjour

On peut utiliser INDIRECT pour créer une adresse par concaténation seulement si le fichier cité est ouvert sinon il faut passer par VBA

Edit : ta question posée ailleurs l'est dan la partir Macros et VBA Donc tu as déjà la réponse
 

massol

XLDnaute Junior
Bonjour,

Je vais essayer de préciser les choses.

Je dispose d'un fichier d'entrée des données (fichier "input.xlsm").
Toutes les informations contenues dans ce fichier sont saisies manuellement (certaines données utilisent des listes de validation).
Ce fichier se situe dans le dossier "C:\Users\jmassol\Desktop\IDS".

On trouve en dessous de ce dossier des sous-dossiers; Par exemple :
C:\Users\jmassol\Desktop\IDS\ID4840
C:\Users\jmassol\Desktop\IDS\ID5459
C:\Users\jmassol\Desktop\IDS\ID9784
C:\Users\jmassol\Desktop\IDS\....

A partir du fichier "input.xlsm" je créé autant de fiche que de sous-dossiers. Chaque fiche est renommée en "ID4840.xlsm", "ID5459.xlsm", ...suivant le nom du sous-dossier.

On trouve :
le fichier "ID4840.xlsm" dans le sous-dossier "C:\Users\jmassol\Desktop\IDS\ID4840"
le fichier "ID5459.xlsm" dans le sous-dossier "C:\Users\jmassol\Desktop\IDS\ID5459"
....

Dans le fichier "suivi.xlsm" j'ai récupéré une macro qui scrute le dossier "C:\Users\jmassol\Desktop\IDS" et extrait les noms des sous-dossiers.
En fait cette macro me remplit le tableau à partir de la cellule B6. Tous les sous-dossiers trouvés sont affichés à partir de B6 et en descendant.

Mon souhait :
Remplir automatiquement le tableau "suivi.xls" à partir des fiches situées dans les sous-dossiers ID4840, ID5459, ...
Par exemple, on devrait retrouver en cellule F6 (fichier "suivi.xls", onglet "Feuil1" la valeur de la cellule C3 du fichier "ID4840.xlsm" (onglet "LAST_LOOP").

Pour l'heure j'essaie de m'en sortir SANS DEVELOPPER de macro supplémentaire. En fait j'essaie d'utiliser la commande ci-dessous qui devrait permettre de récupérer les valeurs de différents fichiers fermés (j'insiste sur mot "fichiers fermés").

Supposons que je veuille récupérer dans le fichier "suivi.xls" en cellule F6 la valeur "Content" qui se trouve dans le fichier ID4840. Cette valeur est située dans le fichier ID4840.xlsm en cellule C3.
Voici la commande que je propose (trouvée dans un forum) :

='C:\Users\ng40483\Desktop\IDS\ID4840\ [ID4840.xlsm]LAST_LOOP'!$C$3

Cette fonction semble fonctionner mais je dois indiquer le dossier du fichier ID4840..... Si vous avez une (des) suggestions je suis preneur.

Un grand merci par avance.

Cdlt.
Jérôme.
 

Pièces jointes

  • Suivi.xlsm
    17.9 KB · Affichages: 17
  • Input.xlsm
    20.5 KB · Affichages: 15
  • ID4840.xlsx
    16.8 KB · Affichages: 15

massol

XLDnaute Junior
Bonjour,

J'ai testé la commande INDIRECT avec des fichiers bidons.

J'ai pour cela :

1- Créé un fichier "ferme.xlsx" dans le dossier "C:\Documents and Settings\Jérôme\Bureau\ANDREU"
2- Dans le fichier "ferme.xlsx" (onglet "Feuil1" ) j'ai noté en cellule A1 la valeur 10, en cellule A2 la valeur 100, en cellule A3 la valeur 1200, en cellule A4 la valeur 15000 et enfin en cellule A5 la valeur 56789.
3- Une fois ces valeurs enregistrées dans ce fichier je l''ai fermé.

4- Ensuite j'ai créé sur le bureau (dossier "C:\Documents and Settings\Jérôme\Bureau" ) le fichier "tutu.xlsx".
5- Dans la cellule B1 (onglet Feuil1) j'ai noté --> C:\Documents and Settings\Jérôme\Bureau\ANDREU
6- Dans la cellule C4 (même onglet) j'ai tapé la commande --> =INDIRECT("'"&B1&"["&ferme.xlsx&"]Feuil1'!A1" ).

Dans la cellule C4 j'ai le texte --> #NOM?

Pouvez-vous m'aider à résoudre ma problématique ?

Pour mémoire : je souhaite récupérer d'un fichier fermé (j'insiste sur le mot "fermé" ) la valeur d'une cellule.

Un grand merci par avance.

Cordialement.
 

Pièces jointes

  • tutu.xlsx
    8.5 KB · Affichages: 11
  • ferme.xlsx
    8 KB · Affichages: 11

massol

XLDnaute Junior
J'ai essayé la ligne de commande suivante qui fonctionne très bien :

='I:\NDT\31-10-2018\IDS\ID4840\[Entry_form_ID4840.xlsm]ADD_INFOS'!$C7

Avec :
1- I:\NDT\31-10-2018\IDS\ID4840\ --> dossier dans lequel se trouve le fichier fermé.
2- Entry_form_ID4840.xlsm --> nom du fichier fermé.
3- ADD_INFOS --> onglet du fichier fermé où se trouve la valeur que je veux récupérer
4- C7 --> cellule où se trouve la valeur.

J'ai testé et cela fonctionne !! sauf que je voudrais que le nom du dossier soit une donnée provenant d'une cellule (par exemple cellule G4 onglet "feuil2" du fichier Entry_form_ID4840.xlsm ; idem pour le nom du fichier ; en fait je voudrais que toutes les valeurs indiquées en 1- 2- 3- et 4- proviennent de cellules identifiées.

Cdlt.
Jérôme.
 

massol

XLDnaute Junior
Qu'est-ce que tu ne comprends pas dans :
?
Bonsoir,

J oublie la fonction INDIRECT, on est d accord....

Par contre la ligne de commande proposée dans mon précédent message fonctionne, le fichier entre crochet étant fermé. Il n y a pas INDIRECT dans celle ci.

Je voudrais simplement que celle ci utilise des données situées dans des cellules qui peuvent être dans un autre onglet. J ai l impression d être très près de la solution mais il me manque la syntaxe précise :

='I:\NDT\31-10-2018\IDS\ID4840\[Entry_form_ID4840.xlsm]ADD_INFOS'!$C7

Comment modifier cette formule ??? Chaque élément apparaissant dans une cellule. Par exemple :

I:\NDT\31-10-2018\IDS\ID4840\ --> cellule H4
Entry_form_ID4840.xlsm ---> cellule G4
ADD_INFOS ---> cellule k4

Nous comprenons nous ?

Cdlt
Jérôme
 

massol

XLDnaute Junior
Bonjour,

J'ai essayé d'utiliser la fonction développée par Silkyroad (https://excel.developpez.com/faq/index.php?page=Recherche#IndirectClasseurFerme) mais j'ai le message : #VALEUR!

En regardant les commentaires plus haut indiqués par Silkyroad il est mentionné :

Vous devez préalablement activer la référence Microsoft ActiveX Data Objects x.x Library pour utiliser les exemples présentés dans ce tutoriel.

Dans l'éditeur de macros:
Menu Outils.
Références.
Cochez la ligne "Microsoft ActiveX Data Objects x.x Library".
Cliquez sur le bouton OK pour valider.

x.x dépend de la version installée sur votre poste.

Certains exemples proposés permettent de manipuler les tables et nécessitent d'activer la référence Microsoft ADO ext x.x for DLL and Security.

J'ai essayé plusieurs versions sans succès pour l'instant.
Le pb c'est qu'il y a de nombreuses possibilités de choix pour "Microsoft ActiveX Data Objects x.x Library" et "Microsoft ADO ext x.x for DLL and Security". Lesquels choisir ?
Je suis sous MS Office 2013 (15.0.5075.1000).

Peut-être mon pb se situe ailleurs ?

Merci.

Cdlt.
Jérôme.
 

Discussions similaires

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 153
dernier inscrit
SamirN