créer un lien, ouvrir et enregister à partir d'un modèle Excel
Le
Greg
Bonjour,
J'ai un classeur que l'on pourrait appeler « synthèse », qui est une sorte
de sommaire. Chaque feuille de ce classeur correspond à une catégorie bien
précise, et renvoie à des classeurs bien spécifiques bâtis selon un modèle.
Je souhaite, avant de m'engager dans l'écriture de mon « sommaire », pouvoir
créer une macro qui allègerait l'utilisateur dans l'archivage, la création
de liens, l'ouverture du modèle etc.
Exemple : je suis en F7 et je lance la macro.
1- Création d'un lien hypertexte en F7
2- Ouverture d'une fenêtre d'enregistrement d'un document Excel s'appuyant
sur un modèle (dont la cible serait définie dans la macro)
3- Enregistrement du document qui s'appuie sur le modèle dont le nom est en
colonne B de la même ligne (ici, B7)
4- Ouverture du classeur directement après l'enregistrement, prêt à la
saisie.
Je ne sais pas si j'ai l'ordre juste des commandes (intuitivement, j'ai l'impression
qu'il y a quelque chose qui cloche.)
Est-ce envisageable ?
NB : Chaque feuille de mon classeur d'origine renvoie à un document modèle
particulier, je dois donc créer un code par feuille avec le modèle et la
cible du document.
Merci d'avance.
Greg
J'ai un classeur que l'on pourrait appeler « synthèse », qui est une sorte
de sommaire. Chaque feuille de ce classeur correspond à une catégorie bien
précise, et renvoie à des classeurs bien spécifiques bâtis selon un modèle.
Je souhaite, avant de m'engager dans l'écriture de mon « sommaire », pouvoir
créer une macro qui allègerait l'utilisateur dans l'archivage, la création
de liens, l'ouverture du modèle etc.
Exemple : je suis en F7 et je lance la macro.
1- Création d'un lien hypertexte en F7
2- Ouverture d'une fenêtre d'enregistrement d'un document Excel s'appuyant
sur un modèle (dont la cible serait définie dans la macro)
3- Enregistrement du document qui s'appuie sur le modèle dont le nom est en
colonne B de la même ligne (ici, B7)
4- Ouverture du classeur directement après l'enregistrement, prêt à la
saisie.
Je ne sais pas si j'ai l'ordre juste des commandes (intuitivement, j'ai l'impression
qu'il y a quelque chose qui cloche.)
Est-ce envisageable ?
NB : Chaque feuille de mon classeur d'origine renvoie à un document modèle
particulier, je dois donc créer un code par feuille avec le modèle et la
cible du document.
Merci d'avance.
Greg

Poser une question


Ce code devrait convenir :
Chemin = "C:Chemin"
Nom = Range("B7")
ActiveSheet.Hyperlinks.Add Anchor:=Range("F7"), Address:= _
Chemin & Nom, TextToDisplay:= _
Chemin & Nom
Source = Application.GetSaveAsFilename(Chemin)
FileCopy Source, Chemin & Nom
Workbooks.Open (Chemin & Nom)
Actualises :
Chemin = "C:Chemin"
du chemin du répertoire où doit s'effectuer le choix des modèle
Mets en B7 le nom du document Excel à enregistrer puis à réouvrir pour la
saisie
A l'exécution du code
Un lien Hypertexte sera créé en F7 avec l'adresse (Chemin) et le nom (B7)
Puis une boîte de dialogue s'ouvrira et t'invitera à sélectionner le modèle
Puis réalisera une copie enregistré dans le même répertoire avec le nom
présent en cellule B7
Puis ouvrira ce nouveau document pour la saisie
Celà devrait faire
Dis moi !!!!!
Le code fonctionne mais quelques retouches semblent nécessaires. Je reprends
la procédure :
- A l'exécution du code Un lien Hypertexte sera créé en F7 avec l'adresse
(Chemin) et le nom (B7)
Le problème est que la cellule F7 contient déjà un contenu, qui n’est pas
l’adresse du lien. Est-il possible de seulement créer le lien, ou mieux d’ajouter
à la fin du contenu VOIR LE LIEN. Si c’est un peu compliqué, on peut
envisager une cellule D7 où la macro écrirait un « X » en guise de lien (la
cellule n’étant pas assez grande pour recevoir le chemin)
- Puis une boîte de dialogue s'ouvrira et t'invitera à sélectionner le
modèle
C’est une boîte « enregistrer sous », est-ce normal ?
- Puis réalisera une copie enregistré dans le même répertoire avec le nom
présent en cellule B7
C’est le cas mais ce document est créé sans extension.
- Puis ouvrira ce nouveau document pour la saisie
- Le document qui s’ouvre n’est pas le même que celui qui vient d’être
enregistré. Dans mon cas, en B7, j’ai S1. « S1 » s’est donc créé dans la
commande précédente, comme je le disais sans extension. Et là, le fichier
qui s’est ouvert se nomme S11 et requiert un nouvel « enregistrer sous… ». J’ai
effectuer plusieurs essais, mais le résultat est toujours le même. De plus,
le classeur ouvert à partir du modèle demande à être enregistré. Or, par
défaut, il est du type Excel classique, demandant à changer le type pour
accepter les macro. Il faudrait donc que je crée une macro dans le modèle
pour qu’il propose un enregistrement par défaut en « excel acceptant les
macro »… et tant qu’à faire, indique le chemin par défaut pour ce modèle…
Est-ce réalisable ?
Voilà, j’ai essayé d’être le plus complet possible, à mon tout petit niveau.
Merci pour les efforts que demande mes attentes !
A plus
Greg
"FFO" news:
Résolvons les difficultés les unes aprés les autres car j'ai du mal à te
suivre
Tout d'abord pour la cellule F7 qui reçoit le lien Hypertexte tu peux
modifier ces lignes ainsi :
ActiveSheet.Hyperlinks.Add Anchor:=Range("F7"), Address:= _
Chemin & Nom, TextToDisplay:= _
Range("F7") & " VOIR LE LIEN"
Pour la boîte de dialogue dans la mesure où l'on réalise une copie d'un
modèle c'est équivalent à un enregistrez sous de ce modèle dans le même
répertoire mais avec un autre nom
Pour que la copie du modèle soit enregistrée dans le même répertoire avec un
nouveau nom pris dans la cellule B7 avec son extension il faut que cette
extension soit clairement spécifée dans cette cellule B7 en bout du nom
Sinon il faut le rajouter sur cette ligne ainsi :
Nom = Range("B7") & ".xls"
Mais je pense qu'il est préférable que l'extension soit avec le nom en
cellule B7
Fais déjà toutes ces adaptations et renouvelles tes essais car les
difficultés suivantes doivent vraisemblablement en découler
Tiens moi informé !!!!!
Effectivement, avec tes indications, certains problèmes sont résolus.
Ce code permet en effet de créer le lien et d'écrire "voir le lien" en bout
d'écriture. Par contre, c'est toute la cellule qui est concerné par le lien.
N'est-il pas possible de créer la zone cliquable uniquement sur "voir le
lien"?
Je me doutais mais je voulais la confirmation d'un expert. Merci...
J'ai opté pour l'option code, qui fonctionne parfaitement de mon point de
vue, ce qui m'évite de créer une référence "informatique" dans un document
"administratif".
En fait, à la création du document avec la boïte de dialogue, un fichier
excel se crée bien (avec, bizarrement, les dates et heures de modifications
du document modéle) dans le dossier. Par contre, le fichier qui s'ouvre et
sur lequel on peut faire la saisie ne porte pas le même nom. Dans mon cas,
en B7 j'ai "S1"; le premier fichier qui se crée est donc "S1". Celui qui
s'ouvre sur lequel on peut saisir se nomme "S11" (comme si "S1" était déjà
pris...) et requiert un enregistrement pour apparaïtre lui aussi par défaut
dans le dossier du modèle.
Néanmoins, j'ai l'impression qu'on a fait un pas...
à plus
Greg
content que l'on avance !!!!!
Pour ce qui concerne le lien Hypertexte on ne peux pas le faire porter par
une partie de la cellule
C'est du tout ou rien
Tu peux éventuellement changer de cellule si tu souhaites garder intact la
cellule F7
Pour celà il faut adapter ces lignes :
ActiveSheet.Hyperlinks.Add Anchor:=Range("F7"), Address:= _
Chemin & Nom, TextToDisplay:= _
Range("F7") & " VOIR LE LIEN"
"Greg" wrote:
La partie Range("F7") pour une autre cellule
Le texte à faire paraitre avec la partie :
Range("F7") & " VOIR LE LIEN"
Essaies de te débrouiller ou dis moi ce que tu souhaites exactement
En ce qui concerne le fichier créé
Il est normale qu'il prenne l'heure et la date de son modèle dans la mesure
où s'en est une copie
Par contre si tu réalises de la saisie dans ce document sa nouvelle
sauvegarde prendra la date et l'heure de l'enregistrement réalisé
Pour le nom S11 au lieu de S1 j'ai moi même réalisé des essais avec cette
appellation le document ouvert est bien S1.xls
As tu essayé de le fermer et de le réouvrir et de voir le nom qu'il a dans
l'application Excel
Soit en doublecliquant dans le répertoire soit par Fichier/Ouvrir à partir
d'excel
Dans mon code pour l'ouvrir je fais appel à lui par cette ligne :
Workbooks.Open (Chemin & Nom)
Avec Chemin le chemin de son répertoire et Nom le Nom obtenu en B7
Essaies le lien Hypertexte créé
Essaies un autre Nom
Tiens moi informé !!!!!!!