Excel: référence à des feuilles extérieurs

Résolu/Fermé
Titi - 9 févr. 2011 à 16:41
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 - 15 févr. 2011 à 15:26
Bonjour,
Je rencontre actuellement un problème et je souhaiterais solliciter votre aide.

Je travaille sur un fichier Excel dont le nom change tous les jours (ex :4300-02-feb-2011, 4301-03-feb-2011, 4301-04-feb-2011...).
Mob but est de créer un fichier Excel qui puisse aller récupérer les valeurs d'une colonne de ce fichier de façon automatique. Il faut donc que j'arrive a écrire dans une cellule de façon automatique (='[4300-02-Feb-2011.xls]Page1'!$S$5, (='[4301-03-Feb-2011.xls]Page1'!$S$5, (='[4302-04-Feb-2011.xls]Page1'!$S$5...).

J'ai procédé de la sorte :
- Générer une ligne qui me créer les nombres (4300,4301,4302...)
- Générer les dates (02-Feb-2011, 03-Feb-2011, 04-Feb-2011...)
J'utilise ensuite la fonction concatenate : =CONCATENATE("'["&S3&".xls]Page1'!$S$") qui me donne m'affiche dans les cellules :
='[4300-01-Feb-2011.xls]Page1'!$S$,
='[4301-02-Feb-2011.xls]Page1'!$S$
='[4302-03-Feb-2011.xls]Page1'!$S$

J'incrémente ensuite une colonne B avec les valeurs des lignes des cellules de la colonne dont je veux récupérer les valeurs. ( Je veux récupéré S6 a S20 dont je créé une colonne dont les valeurs sont 6,7,8...20.)

J'utilise une nouvelle fois concatenate : =(CONCATENATE($S$4&$B7), J'obtiens affichés dans les cellules :
='[4300-01-Feb-2011.xls]Page1'!$S$6,
='[4300-01-Feb-2011.xls]Page1'!$S$7
='[4300-01-Feb-2011.xls]Page1'!$S$8
De même utilisant: = (CONCATENATE($S$4&$B8), =(CONCATENATE($S$4&$B9),
J'obtiens:
='[4301-02-Feb-2011.xls]Page1'!$S$6,
='[4301-02-Feb-2011.xls]Page1'!$S$7
='[4301-02-Feb-2011.xls]Page1'!$S$8

='[4302-03-Feb-2011.xls]Page1'!$S$6,
='[4302-03-Feb-2011.xls]Page1'!$S$7
='[4302-03-Feb-2011.xls]Page1'!$S$8

Premier problème il ne m'affiche pas les valeurs.
Première solution : copier/coller les résultats en faisant collage spécial et en choisissant valeur. : pas très pratique. J'ai les bonnes valeurs.
Deuxième solution utiliser la fonction indirect : =indirect((CONCATENATE($S$4&$B7)),cela marche, j'obtiens les nombres que je désire. Néanmoins cela fonctionne que si le fichier auxquels je fais référence est ouvert. Deuxième problème : il m'affiche #ref dans les cellules jusqu'a que j'ouvre à nouveau le fichier.
Quelqu'un pourrait m'aider svp.

Je vous remercie
A voir également:

22 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 9/02/2011 à 21:29
Bonjour,
Juste au passage, si vous travaillez avec un classeur fermé vous devez avoir le chemin du répertoire ; soit une formule de se genre (à adapter selon vos besoins) :
=INDIRECT("'C:\Documents and Settings\titi\Bureau\[4302-03-Feb-2011.xls]Page1'!$S$6")

Salutations.
Le Pingou
0
Bonjour,

J'ai essayé avec le chemin complet, le problème est le même, si le fichier est ouvert c'est bon sinon problème de référence.

christopher
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
10 févr. 2011 à 16:01
Bonjour,
Merci, j'ai peut-être mal compris se que vous désirez.
Le/s résultat/s doit/vent être dans une cellule ou plusieurs cellules ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 févr. 2011 à 18:53
Bonjour,

Tu peux ne pas ouvrir les classeurs avec une petite macro...

Si tes classeurs sont dans le m^me dossier, on pourrait parcourir le dosssier (on aurait donc pas à faire ta concaténation )et extraire les données par une boucle

Ci joint un petit exemple très simple (adapté de la macro dite de Walkenbach) pour te montrer le principe
https://www.cjoint.com/?3cksYXVKmTJ

Tu dis....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

@ Le Pingou: je désire copier le résultat de plusieurs cellules donc les résultats vont dans une plage de cellules. Si je réussis à copier pour une cellule ça marchera pour les autres...

@Michel:les classeurs ne sont pas dans le même dossier, je travaille sur mon disque C: et le fichier est sur un lecteur réseau.

merci de votre aide
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
10 févr. 2011 à 22:02
Bonjour,
En attendant votre réponse, j'ai réalisé un petit exemple selon se que j'ai compris en relisant votre message.
Proposition : https://www.cjoint.com/?3ckwcvb8wSN
0
Bonjour,

Merci de passer du temps à m'aider.

J'ai regardé ton fichier ça m'intéresse. J'ai modifié la présentation pour te montrer comment je souhaite faire.

Pour l'instant avec ta macro je peux appeler les cellules que je veux copier ensuite les déplacer dans la bonne colonne. Est-ce possible d'automatiser ce déplacement.

bonne journée


https://www.cjoint.com/?0clhzSWpYHz
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 11/02/2011 à 15:49
Bonjour,
Merci de votre réponse.
Oui il est possible d'automatiser sur le changement du nom du classeur (cellule A4) : est-ce bien le seul élément que vous modifiez ? Oui / Non, si non précisez .....
Selon votre exemple les résultats doivent être dans la colonne qui correspond à la date contenue dans le nom du classeur : Oui / non ?
Note: pouvez-vous indiquer les abbréviations du mois (Fev .......etc) utilisées dans le nom du classeur ...
J'adapterai le tout dès votre réponse.

Salutations.
Le Pingou
0
Bonjour,

le nom du classeur se décompose en deux termes: un numéro qui s'incrémente de 1 chaque jour et de la date du jour du rapport. Les mois sont an anglais.

L'idéal serait que je puisse renseigner deux noms de fichiers (exemple: 4300-02-feb-2001 et 4301-02-feb-2011) ou deux dates (02-feb-2011 et 03-feb-2011) et que je puisse récupérer les valeurs de ma colonne entre ces deux dates.

oui je souhaiterai que les résultats s'affiche sous la date dur rapport dont ils sont extraits pour donner le tableau que je vous ai envoyé.

je vous remercie encore une fois.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
11 févr. 2011 à 17:11
Bonjour,
Merci de votre réponse.
Pour 2 noms de classeur ou 2 dates s'est OK , je tiens compte des date effectives et non pas des dates qu'ils pourraient y avoir entre les deux (exemple : 2.5.2011 et 12.5.2011 càd le 2 et le 12 et non pas : 2,3,4,5,6...et12)
Un peu de patience...
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
11 févr. 2011 à 23:36
Bonjour,
Je vous laisse le soin de tester cette proposition : https://www.cjoint.com/?3clxJSpvToc
Je dois encore ajouter quelques contrôles ..... je le ferai selon votre réponse
0
Bonjour,

merci.

C'est presque parfait, je me posais jsute une petite question : est-ce possible de récupérer les valeurs entre deux noms de fichiers?

merci
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
12 févr. 2011 à 10:34
Bonjour,
Oui j'y ai pensé.
Le problème, c'est que j'ai le logiciel en français et dans se cas il me faudrait :
Le format exact de la date utiliser pour le nom du fichier et aussi celui du nombre devant la date ?
Exemple :
nombre -> 4300 pour le premier jour du mois ..et incrémenter de 1 jour suivant .... ?
date -> format(date ;jj-mmm-aaaa) ?
0
J'y avais pensé qu'il vous fallait ce détail, comme je vous l'ai dit précédemment la date se décompose en deux parties:

- un nombre qui s'incrémente de 1 par jour: nombre
- la date du jour du rapport sous la forme: dd-mmm-aaaa (les mois en anglais)

ça donne : nombre-dd-mmm-aaaa.xls


Si je vous donne les noms de deux fichiers vous pouvez déduire les noms de ceux qui se trouvent entre eux. Je ne peux pas vous donner aujourd'hui le nom d'un fichier exact car je n'ai pas accès à mes documents. je le pourrai demain.

J'avais pensé à quelque chose:

créer 2 champs qui se subdiviserait en 2 chacun:

- le premier: on renseignerait le numéro et la date de début

- le deuxième: on renseignerait le numéro et la date de fin

ainsi on en concaténant on aurait les noms de fichiers...


je ne sais si c'est possible

je vous remercie du temps que vous consacrez à mon problème.

enjoy your week end

Titi
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
12 févr. 2011 à 11:04
Bonjour,
Merci, c'est parfait.
Je vais le modifier selon mes disponibilités du week-end.
Salutations.
Le Pingou
0
4300n'est pas le premier jour du mois, c'est un nombre qui s'incrémente de 1 chaque de l'année et ainsi de suite et ne se remet pas à zéro...
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
12 févr. 2011 à 11:11
Bonjour,
Merci.
Donc ce nombre est fixe pour l'année en cours .....?
Salutations.
Le Pingou
0
Non il est pas fixe, il change tous les jours et s'incrémente de 1.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 12/02/2011 à 16:59
Bonjour,
Ma proposition selon les adaptations demandées : https://www.cjoint.com/?3cmqLEYnTw
Chez moi c'est parfait, j'espère que la version anglaise ne posera pas de problème !

Salutations.
Le Pingou
0
Bonjour,

j'ai testé la version et il y a un problème lors de l'exécution. J'ai utilisé ma version personnel d'excel (excel 2010 en français). Demain je testerais avec ma version anglaise du boulot. J'ai essayé avec les mois en français et en anglais et le problème est le même.

Pour tester j'ai juste créer trois fichiers que je vous joins.

http://www.cijoint.fr/cjlink.php?file=cj201102/cijaSLmpdP.xlsm

http://www.cijoint.fr/cjlink.php?file=cj201102/cijggHHiAs.xls
http://www.cijoint.fr/cjlink.php?file=cj201102/cij3NIS0xp.xls
http://www.cijoint.fr/cjlink.php?file=cj201102/cijYBGswvq.xls


merci de votre patience.

Titi
0
la macro bug à la ligne:
RecupValeur = ExecuteExcel4Macro(Cible)
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
12 févr. 2011 à 22:24
Bonjour,
C'est sans intéret sans le message d'erreur.
Qu'elle est donc ce message ?
Merci
Salutations.
Le Pingou
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 12/02/2011 à 20:50
Bonjour,
Cette erreur est étonnante car avec la version https://forums.commentcamarche.net/forum/affich-20809103-excel-reference-a-des-feuilles-exterieurs#11 vous avez dit que c'était correct et cette ligne d'instruction n'a pas changée.
Pouvez-vous recontrôler encore une fois les 2 fichiers?

Si vous dites que vous avez essayé les mois en français et en anglais sur votre version 2010 se n'est pas possible car l'abbréviation de la version française sera toujours avec 4 caractères : février= févr.

Salutations.
Le Pingou
0
Bonjour,

voici les fichiers sur lesquels je bosse.

Avec la version anglaise, pas d'erreurs.

Le seul probleme c'est qu'il affiche dans les cases: #ref

http://www.cijoint.fr/cjlink.php?file=cj201102/cijTdJasLv.xls
http://www.cijoint.fr/cjlink.php?file=cj201102/cijgGipgk1.xls

cordialement

Titi
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
13 févr. 2011 à 15:04
Bonjour,
Je viens de réaliser un essai avec vos fichiers est tout et parfait.
Je pense que le problème est chez vous, contrôler que les cellules vertes soient correctement renseignées ... ?
C`est étonnant de travailler un dimanche, que faites-vous ?
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
13 févr. 2011 à 22:05
Bonjour,
J'ai modifié cette version. Elle est utilisable indépendamment de la langue du logiciel installé.
Version 02 : https://www.cjoint.com/?3cnwfrsadrU
0