charette63
Messages postés88Date d'inscriptionvendredi 2 avril 2004StatutMembreDernière intervention19 mai 2011
-
15 mai 2011 à 23:21
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
16 mai 2011 à 02:21
Bonsoir à tous et toutes,
j'ai des dossiers contenant treize classeurs excel qui ont une multitude de liaisons
L'utilisateur doit dupliquer annuellement le dossier mère (appelé template) et le renommer au "nom" de l'année.
Tout les dossiers comprennent des classeurs nommés similairement à l'exemple ci dessous:
Lorsque l'on remplace, par l'année, le terme "template" dans une cellule (dédiée)de la première feuille du classeur "fiche perso", l'année est retranscrite, par liaison, dans une cellule de chaque feuille de chaque classeur (donc facile à "retrouver")
Serait-il possible qu'une macro remarque que dans une cellule, la valeur n'est plus égale a "template" et le remplacer dans la liaison par la valeur de cette cellule.
j'ai bien cherché sur le net mais je n'ai rien trouvé qui ressemble à ma demande
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 mai 2011 à 00:30
Salut
Tu as bien décrit ton projet mais je n'ai pas saisi le sens de ta question.
Peux-tu donner un exemple plus précis.
Déjà, ce que tu appelles une liaison.
Est-ce simplement un truc du genre "= [Classeur1.xls]Feuil1!R2C1" stocké dans le FormulaR1C1 ?
" Serait-il possible qu'une macro remarque que dans une cellule, la valeur n'est plus égale a "template" "
Comment un programme pourrait-il "remarquer" cela ?
Comment ferait-il ? Chercher quelque chose qui existe, pas de souci, mais quelque chose qui n'existe pas ...
Un exemple s'impose.
Vala
Jack, =fr MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
charette63
Messages postés88Date d'inscriptionvendredi 2 avril 2004StatutMembreDernière intervention19 mai 2011 16 mai 2011 à 01:06
bonsoir Jack,
les liaisons dont je parle, sont des liaisons purement feuille de calcul excel, jusque là, rien à voir avec du VBA. Ces liaisons sont modifiable à partir de: édition-liaisons-modifier les liaisons dans la barre outil excel.
Déjà, ce que tu appelles une liaison.
Est-ce simplement un truc du genre "=[Classeur1.xls]Feuil1!R2C1" stocké dans le FormulaR1C1 ?
Voici comment ça se presente dans la barre des formules excel (la formule serait plus courte si le classeur "fiche perso nursing template" eut été ouvert)
'D:\horaire\service pause\service nursing\nursing template\[fiche perso nursing template.xls]Nom classeur'!B41
Comment un programme pourrait-il "remarquer" cela ?
Le nom template qui se trouve dans toutes mes liaisons "d'origine" est inscrit dans une cellule de chaque feuilles de chaque classeurs "template" en lieu et place de l'année (classeurs qui seront dupliqués années après années).
Lorsque les classeurs sont dupliqués, on doit les renommer (horaire 01 template devient horaire 01 2011 par ex.)
Lors de la première ouverture du classeur "fiche perso......" on doit inscrire l'année en cours dans une cellule précise, valeur qui sera, par liaison justement, modifiée dans chaque feuilles de chaque classeurs.
Dés lors,j'imagine une macro qui s'active à l'ouverture d'un classeur, et qui vérifie si la valeur de la cellule qui contient l'année a bien la même valeur que le dernier mot de mes liaisons. Et si pas, il modifie la liaison en remplaçant "template" par la valeur de la cellule.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 mai 2011 à 02:21
Ok.
Le mot "template" ne devant apparaitre que pour remplacer l'année, il te suffit de faire un 'Remplacer tout'.
Enregistre une macro pendant que tu fais un Remplacer + option 'dans les formules' : il remplacera aussi dans les noms de classeur entre crochet.
Il te suffira de le lancer à chaque démarrage, pas grave s'il n'en trouve pas.