Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 15h35   #1
Invité de passage
 
Inscription : mars 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 14
Points : 4
Points : 4
Par défaut Liaisons avec fichiers fermés

Bonjour à tous,

Je dispose d'un fichier source dans lequel je dois aller régulièrement chercher des données.
Ceci ne pose aucun problème et la syntaxe est assez simple :

=[Source.xls]Feuil1!$A$12
Cet affichage a lieu lorsque le fichier Source.xls est ouvert

Par contre, si ce fichier Source.xls est fermé, la cellule affichera
='c:\répertoire\sous-dossier\[Source.xls]Feuil1'!$A$12

Ma contrainte : Je dois gérer des nom de fichiers différents et qui sont fermés
En outre, à l'aide de la fonction CELLULE("filename";A1) je dispose de toutes les informations qui me permettent de déterminer le fichier sur lequel je dois aller chercher des données.

Je peux donc dans une chaine de caractères, reconstituer l'adresse précise pour récupérer mes données sur fichier fermé :
='c:\répertoire\sous-dossier\[Autresource.xls]Feuil1'!$A$12

La fonction INDIRECT() ne me permet pas de rendre cette chaîne de caractères opérationnelle, car elle ne marche que sur les fichiers ouverts.

Auriez-vous une syntaxe qui me permette de rendre cette chaîne active et d'aller chercher les données sur Autresource.xls ?

Je vous précise que je suis nul en VBA et que je souhaite diffuser des fichiers sans macros.

Merci d'avance pour votre aide et bonne journée
William-Michel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 19h45   #2
Nouveau Membre du Club
 
Homme Patrick
Utilisateur passionné
Inscription : décembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 50
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Utilisateur passionné
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2010
Messages : 17
Points : 34
Points : 34
Bonjour William-Michel,forum ,

Pourrais tu essayer, par exemple :
=sommeprod(--('c:\répertoire\sous-dossier\[Autresource.xls]Feuil1'!$A$12))

Mais je ne suis pas sur du tout d'avoir bien compris ce que tu voulais.

Amicalement
spepok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 21h09   #3
Invité de passage
 
Inscription : mars 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 14
Points : 4
Points : 4
Bonsoir Spepok et merci pour ta réponse

J'ai essayé l'utilisation de sommeprod avec ta syntaxe, mais malheureusement ça ne marche pas. le message d'erreur #VALEUR!

Je vais essayer d'être plus explicite et décrire le contexte :

Dans une société, un utilisateur récupère périodiquement des fichiers (nombre variable de fichier selon les mois) qui contiennent un chiffre d'affaires.

Je dois réaliser pour un utilisateur un fichier (total.xls) qui additionnera tous les chiffres d'affaires. Cet utilisateur

est très novice et je souhaite lui alléger la procédure autant que possible, en l'occurrence lui permettre d'ouvrir le

fichier total.xls sans qu'il ait besoin d'ouvrir tous les fichiers contenant les données à totaliser.

le fichier total.xls contient déjà sous formes de chaînes de caractères le chemin et le nom des fichiers sur lesquels il

faut récupérer les données.

Je souhaite d'éviter d'écrire "en dur" dans les cellules qui vont récupérer les données. En effet, si jamais ce groupe de

fichiers devait être déplacé d'un répertoire à un autre, les adresses deviendraient inopérantes et obsolètes.

Dans le fichier total.xls, je souhaite pouvoir changer ce chemin et concaténer les cellules me permettant d'obtenir une adresse complète pour lire la cellule choisie dans le fichier source.xls ou autresource.xls.

Prenons un exemple dans le fichier total.xls :

Cellule A1="C:\répertoire\sous-dossier\" (je mets les quotes pour bien montrer qu'il s'agir d'une chaîne de caractères)
Cellule A2="[Autresource.xls]Feuil1'!$A$12"
Cellule A3=A1&A2

La cellule A3 contient donc une chaîne complète, mais sous forme de caractères.

Mon souci est de rendre cette chaîne active comme si elle était entrée en dur sous la forme

'C:\répertoire\sous-dossier\[Autresource.xls]Feuil1'!$A$12

... ce qui me permettrait de lire la cellule A12 de Autresource.xls sans problèmes.

Voilà. Bonne soirée à toi
William-Michel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 06h42   #4
Nouveau Membre du Club
 
Homme Patrick
Utilisateur passionné
Inscription : décembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 50
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Utilisateur passionné
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2010
Messages : 17
Points : 34
Points : 34
Bonjour William-Michel ,forum,

Avec "morefunction" à télécharger ici:
http://xcell05.free.fr/pages/telecha...x.html#Morefun

Citation:
=INDIRECT.EXT("'"&A1&A2)
Cela marche (testé sur des fichiers chez moi)
Merci à Laurent Longre

Amicalement
spepok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 08h44   #5
Invité de passage
 
Inscription : mars 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 14
Points : 4
Points : 4
Bonjour Spepok

J'avais connaissance de cette solution. Le problème est logistique, l'utilisateur qui doit utiliser le classeur de consolidation utilise différentes machines. Ca ne va pas être simple.

Un grand merci à toi et passe une bonne journée
William-Michel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 17h31   #6
Nouveau Membre du Club
 
Homme Patrick
Utilisateur passionné
Inscription : décembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 50
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Utilisateur passionné
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2010
Messages : 17
Points : 34
Points : 34
Re,

Désolé de n'avoir pu t'apporter une aide plus précieuse.
A bientôt au détour d'un autre sujet.

Amicalement
spepok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 22h35   #7
Invité de passage
 
Inscription : mars 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 14
Points : 4
Points : 4
Ne sois pas désolé Spepok. Au contraire le set de fonctions proposé par Laurent Longre est une vraie réponse au problème posé et je t'en remercie. C'est juste une question de contexte particulier.

Pour info, voici ce que j'ai décidé pour mon utilisateur :

- Je lui demande de créer un répertoire ad-hoc qui contiendra les fichiers à exploiter
- Je lui demande d'ouvrir la totalité des fichiers (Ctrl A et ouverture d'un fichier déclenchant Excel et l'ouverture de tous les autres fichiers).

Dans Total.xls, je crée une check-list qui va comparer les fichiers présents et ceux qui doivent être traités.

Pour faire apparaître les fichiers présents, j'active une macro élémentaire Excel 4 de type fichiers() et je place la formule suivante sur une vingtaine de lignes :

=SI(LIGNE()<NBVAL(Fichiers);INDEX(Fichiers;LIGNE());"")

Il sera donc facile de comparer si les fichiers présents correspondent bien à ceux qui doivent être traités.

Après, c'est de l'ergonomie pour l'utilisateur avec quelques formats conditionnels avec du rouge, du vert vif et du bleu !

Et puis cette fois INDIRECT() n'aura plus aucune excuse puisque les fichiers seront tous ouverts !

Bonne soirée
William-Michel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 01h55   #8
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 301
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 301
Points : 2 647
Points : 2 647
Bonjour,
Dans ce cas, tu peux aussi faire un enregistrement de l'environnement de travail.
Fichier/Enregistrer l'espace de travail... et tu lui donnes un nom. L'environnement sera enregistré avec le suffixe xlw
Ainsi quand l'utilisateur ouvrira ce fichier.
Tous les fichiers ouverts au moment de l'enregistrement vont s'ouvrir et le classeur actif sera celui qui l'était au moment de l'enregistrement.
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 11h07   #9
Invité de passage
 
Inscription : mars 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 14
Points : 4
Points : 4
Merci Corona,

Tu as raison, on ne pense pas suffisamment à la sauvegarde de l'environnement qui est très pratique.
Cela dit, dans un cas ou le nombre et le nom des fichiers est aléatoire, cette fonction n'est utile qu' "a posteriori".

Bonne journée
William-Michel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h35.


 
 
 
 
Partenaires

Hébergement Web