VBA - Lien dynamique
gixix
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un fichier excel (2003) ayant pour but d'annualiser des données se trouvant sous forme mensuelle dans des fichiers distincts. Ce fichier fait donc référence à 12 fichiers mensuels ayant les noms suivants : XX_janvier_2008.xls / XX_février_2008.xls / ...
J'aimerais pouvoir automatiser le fichier afin de pouvoir le réutiliser pour 2009, 2010, ... sans avoir besoin de changer les références manuellement (Il y a pas mal de liaisons => risque d'oubli...). Les fichiers pour 2009 ont les mêmes noms mais avec 2009 à la fin : XX_janvier_2009.xls / XX_février_2009.xls / ...
Quelqu'un a-t-il une macro VBA (ou autre, mais je pense pas que ce soit faisable sans macro) qui me permettrait d'introduire dans une cellule l'année qui m'intéresse (2008, 2009, ...) et d'adapter automatiquement les liens vers les fichiers en fonction (XX_janvier_2008 ou XX_janvier_2009, ... en fonction de l'année mise dans une cellule).
Merci pour votre aide.
J'ai un fichier excel (2003) ayant pour but d'annualiser des données se trouvant sous forme mensuelle dans des fichiers distincts. Ce fichier fait donc référence à 12 fichiers mensuels ayant les noms suivants : XX_janvier_2008.xls / XX_février_2008.xls / ...
J'aimerais pouvoir automatiser le fichier afin de pouvoir le réutiliser pour 2009, 2010, ... sans avoir besoin de changer les références manuellement (Il y a pas mal de liaisons => risque d'oubli...). Les fichiers pour 2009 ont les mêmes noms mais avec 2009 à la fin : XX_janvier_2009.xls / XX_février_2009.xls / ...
Quelqu'un a-t-il une macro VBA (ou autre, mais je pense pas que ce soit faisable sans macro) qui me permettrait d'introduire dans une cellule l'année qui m'intéresse (2008, 2009, ...) et d'adapter automatiquement les liens vers les fichiers en fonction (XX_janvier_2008 ou XX_janvier_2009, ... en fonction de l'année mise dans une cellule).
Merci pour votre aide.
A voir également:
- VBA - Lien dynamique
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Tableau croisé dynamique - Guide
- Verificateur de lien - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
3 réponses
Bonjour,
sans macro!
ton année est saisie en B2 les noms des classeurs sont simplifiés dans ma proposition "an_2008, an_2009)... et je vais chercher la valeur de D5 dans la feuille 1
essaies:
=INDIRECT("[an_"&B2&".xls]Feuil1!$D$5")
sans macro!
ton année est saisie en B2 les noms des classeurs sont simplifiés dans ma proposition "an_2008, an_2009)... et je vais chercher la valeur de D5 dans la feuille 1
essaies:
=INDIRECT("[an_"&B2&".xls]Feuil1!$D$5")
Re,
tous les liens avec d'autres classeurs nécessitent une ouverture de la source (ou de répondre "oui" à la demande)...
mais tu peux passer par des fichiers fermés avec la technologie ADO ou si tu n'as pas beaucoup de transfert
cette macro dite de Walkenbach, par exemple:
tous les liens avec d'autres classeurs nécessitent une ouverture de la source (ou de répondre "oui" à la demande)...
mais tu peux passer par des fichiers fermés avec la technologie ADO ou si tu n'as pas beaucoup de transfert
cette macro dite de Walkenbach, par exemple:
chemin="c:\ ...etc" classeur="janvier_" & range("B2") 'cellule affectée avec millésime onglet="feuil1" ' modèle pour écrire param='C:\mes documents\riri\[Classeur1.xls]Classeur1Feuil3'!L1C1 param = "'" & chemin & "\[" & classeur & "]" & onglet & "'!R1C1" ' macro dite de John Walkenbach range("D4") = ExecuteExcel4Macro(param)
Hello Michel,
Merci pour tes réponses. Comme c'est la 1ère fois que je programme en VBA, ben suis tout à côté... Mais je me suis amusé ce soir a tenté 2-3 trucs et ben c'est pas si compliqué que ça au final.
Concernant ton algorithme, pourrais-tu me dire à quoi corresond le paramètre R1C1 ? Si je veux copier une cellule spécifique (genre D1), quel code dois-je mettre à la place du R1C1. De même, si je veux copier un bout de colonne (genre D1:D9), que dois-je mettre ?
Désolé pour ces questions basiques et merci pour l'aide, mais faut bien commencer un jour ;-)
Salutations.
Merci pour tes réponses. Comme c'est la 1ère fois que je programme en VBA, ben suis tout à côté... Mais je me suis amusé ce soir a tenté 2-3 trucs et ben c'est pas si compliqué que ça au final.
Concernant ton algorithme, pourrais-tu me dire à quoi corresond le paramètre R1C1 ? Si je veux copier une cellule spécifique (genre D1), quel code dois-je mettre à la place du R1C1. De même, si je veux copier un bout de colonne (genre D1:D9), que dois-je mettre ?
Désolé pour ces questions basiques et merci pour l'aide, mais faut bien commencer un jour ;-)
Salutations.
Ta solution n'est pas mal du tout (je ne connaissais pas cette façon de faire), mais semble nécessiter que tous mes fichiers liés soient ouverts pour que la mise à jour s'opère (si je n'ouvre pas le fichier lié, il m'apparait un #REF et dès que je l'ouvre ça se met à jour). Existe-il un moyen simple de corriger ce problème afin que quand j'ouvre le fichier général, je n'ai pas à ouvrir les 12 fichiers attachés ?
Merci d'avance.