Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

créer un lien, ouvrir et enregister à partir d'un modèle Excel

20 réponses
Avatar
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

10 réponses

1 2
Avatar
FFO
Salut à toi

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 !!!!!
Avatar
Greg
Bonjour et merci FFO pour ta proposition.
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" a écrit dans le message de
news:
Salut à toi

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 !!!!!



Avatar
FFO
Rebonjour à toi

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é !!!!!
Avatar
Greg
Re!

Effectivement, avec tes indications, certains problèmes sont résolus.

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"



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"?


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



Je me doutais mais je voulais la confirmation d'un expert. Merci...

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"




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".

Fais déjà toutes ces adaptations et renouvelles tes essais car les
difficultés suivantes doivent vraisemblablement en découler



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
Avatar
FFO
Rebonjour à toi

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é !!!!!!!
Avatar
Greg
Rebonjour,

Concernant le lien, j'ai opté pour un "X" tout simple en D7. Ca fonctionne
impeccable.

Pour le reste, j'ai fait des essais dans tous les sens et ne trouvant pas la
solution, j'ai créé moi aussi des classeurs pour essayer. Pour éviter de
m'embourber dans des explications approximatives, je t'ai fait une sorte de
petit diapo sous excel (je sais, c'est pas fait pour, mais j'étais sur que
tu avais l'application...). Tu y retrouveras les étapes dans les différentes
feuilles:

http://cjoint.com/?hpqi0LM23c voici les étapes telle que moi je les vis
sur ma machine.

et voici les 2 fichiers excel qui m'ont permis de faire les essais. Tous les
2 ont été placés sur le bureau dans un dossier appelé essai2.

La base: http://cjoint.com/?hpqlg3bhvc et le modèle:
http://cjoint.com/?hpqlTFHnkl

La seule solution que j'ai trouvée, c'est d'éventuellement appeler « S11 »,
« S1 » et remplacer ainsi le « S1 » existant. Mais c'est un peu lourd à
effectuer et l'automatisation perd un peu de son charme...

J'espère que tu comprendras mon erreur. Certainement se situe t-elle dans le
code que j'ai trifouillé. Le voici au cas où:

Sub Créer_Lien()
Chemin = "C:UsersuserDesktopessai2"
Nom = Range("B7") & ".xls"
ActiveSheet.Hyperlinks.Add Anchor:=Range("D7"), Address:= _
Chemin & Nom, TextToDisplay:= _
Range("D7") & "X"
Source = Application.GetSaveAsFilename(Chemin)
FileCopy Source, Chemin & Nom
Workbooks.Open (Chemin & Nom)
End Sub

à plus et encore merci pour ta patience.

Greg


"FFO" a écrit dans le message de
news:
Rebonjour à toi

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é !!!!!!!



Avatar
Greg
Nota Bene: ... aussi ai-je pris conscience que les cellules devront être
relatives à la ligne où la cellule est active, mais toujours en collone B et
D.

S1 en B7, lien en D7
S2 en B8, lien en B8
etc...

Comment faire évoluer le code?


"Greg" a écrit dans le message de
news:
Rebonjour,

Concernant le lien, j'ai opté pour un "X" tout simple en D7. Ca fonctionne
impeccable.

Pour le reste, j'ai fait des essais dans tous les sens et ne trouvant pas
la solution, j'ai créé moi aussi des classeurs pour essayer. Pour éviter
de m'embourber dans des explications approximatives, je t'ai fait une
sorte de petit diapo sous excel (je sais, c'est pas fait pour, mais
j'étais sur que tu avais l'application...). Tu y retrouveras les étapes
dans les différentes feuilles:

http://cjoint.com/?hpqi0LM23c voici les étapes telle que moi je les vis
sur ma machine.

et voici les 2 fichiers excel qui m'ont permis de faire les essais. Tous
les 2 ont été placés sur le bureau dans un dossier appelé essai2.

La base: http://cjoint.com/?hpqlg3bhvc et le modèle:
http://cjoint.com/?hpqlTFHnkl

La seule solution que j'ai trouvée, c'est d'éventuellement appeler «
S11 », « S1 » et remplacer ainsi le « S1 » existant. Mais c'est un peu
lourd à effectuer et l'automatisation perd un peu de son charme...

J'espère que tu comprendras mon erreur. Certainement se situe t-elle dans
le code que j'ai trifouillé. Le voici au cas où:

Sub Créer_Lien()
Chemin = "C:UsersuserDesktopessai2"
Nom = Range("B7") & ".xls"
ActiveSheet.Hyperlinks.Add Anchor:=Range("D7"), Address:= _
Chemin & Nom, TextToDisplay:= _
Range("D7") & "X"
Source = Application.GetSaveAsFilename(Chemin)
FileCopy Source, Chemin & Nom
Workbooks.Open (Chemin & Nom)
End Sub

à plus et encore merci pour ta patience.

Greg


"FFO" a écrit dans le message de
news:
Rebonjour à toi

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é !!!!!!!






Avatar
FFO
Rebonjour à toi


Peux tu me dire lorsque tu ouvres le fichier S1.xls nouvellement créé par le
code soit en doublecliquant dessus, soit par Fichier/ouvrir de l'application
Excel soit en activant le lien Hypertexte (l'ayant refermé au paravant car
ouvert par le code) quel nom porte t'il vue d'Excel

Merci de ta réponse avec les 3 manières décrites
Avatar
FFO
Rebonjour à toi

Je te propose cette variante qui produit exactement le même effet mais peut
être sans ta déconvenue récalcitrante :

Chemin = "E:Chemin"
ChDrive (E)
ChDir (Chemin)
Source = Application.GetOpenFilename()
If Source <> "Faux" Then
Nom = Range("B7") & ".xls"
ActiveSheet.Hyperlinks.Add Anchor:=Range("F7"), Address:= _
Chemin & Nom, TextToDisplay:= _
Range("F7") & " VOIR LE LIEN"
Workbooks.Open (Source)
ActiveWorkbook.SaveAs (Chemin & Nom)
End If

Adaptes :

Chemin = "E:Chemin" (du chemin du répertoire de tes modèles)
ChDrive (E) (de la lettre du lecteur de ton disque dur)

et les lignes pour créer ton lien Hypertexte :

ActiveSheet.Hyperlinks.Add Anchor:=Range("F7"), Address:= _
Chemin & Nom, TextToDisplay:= _
Range("F7") & " VOIR LE LIEN"

En fonction de ce que tu souhaites

Fais des essais et dis moi !!!!!
Avatar
Greg
Re!

Alors, voilà les
en doublecliquant dessus, soit par Fichier/ouvrir de l'application
Excel soit en activant le lien Hypertexte (l'ayant refermé au paravant car
ouvert par le code) quel nom porte t'il vue d'Excel

Merci de ta réponse avec les 3 manières décrites



1 2