Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2011, 16h59   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 30
Points : 14
Points : 14
Par défaut Problème de lien Hypertexte sur disque réseau

Bonjour.

Dans une formulaire (userform), je fais sélectionner un fichier par l'utilisateur puis je récupére le lien de ce fichier. Exemple : Y:\LeDossier\LeFichier.pdf

Ensuite, dans une feuille Excel, j'insére ce lien sous forme de lien hypertexte afin que l'utilisateur puisse ouvrir ce fichier en un clic. Je fais une commande du type :

Code :
Feuille.Hyperlinks.Add Anchor:=Feuille.Range("A5").Offset(i, 0), Address:=Formulaire.TextBox1.Value, TextToDisplay:=Formulaire.TextBox1.Value
Voici mon problème, le fameux lecteur Y:\ est un lecteur commun entreprise. Même si le lien est créé avec "Y:\LeDossier\LeFichier.pdf" en réalité Excel créé un lien du type : "\\NomEntreprise.loc\Communs\NomDeMonService\LeDossier\LeFichier.pdf".

Si ce lien vient juste d'être créé, cela fonctionne. Si je ferme et je ré-ouvre le fichier, le lien est mort. Si j'enregistre le fichier, le lien est mort aussi.

A l'ouverture, j'ai fait une boucle pour recréer tous les liens de la liste. Par contre pour l'enregistrement, je ne sais pas quoi faire. J'ai fait une boucle sur un événement du type "SelectionChange" mais l'utilisateur fait un premier clic, le lien ne fonctionne pas et ma boucle se lance. Cela fonctionnera qu'au deuxième clic. Comme je suis un peu perfectionniste, j'aimerais que cela fonctionne dès le premier et sans message d'erreur...

J'ai détecté le problème à la fermeture du fichier et à l'enregistrement mais j'appréhende de le rencontrer dans d'autres cas de figure.

Est-ce que quelqu'un peut m'aider? Me dire si je peux gérer autrement ces liens afin qui ne meurent pas. Ou alors, comment recréer le lien sur un SelectionChange avant qu'Excel essaye d'ouvrir celui existant mais mort?

Je ne sais pas si je vais avoir des réponses avec un poste aussi long mais si vous avez pris le temps de me lire et encore mieux, de me répondre, je vous remercie très sincérement!

Emmanuel.
man_coef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 17h03   #2
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 30
Points : 14
Points : 14
Pour ceux qui ont le même problème de lien hypertext pointant sur des disques réseau, voici l'alternative que j'ai trouvé :

Dans mon cas, l'utilisateur saisie plusieurs informations dans un formulaire (userform). Il peut aussi joindre un fichier aux info saisies.

L'utilisateur sélectionne un fichier et je récupére le lien (exemple Y:\LeDossier\LeFichier.pdf)

Une fois que l'utilisateur valide sa saisie, toutes les infos sont insérées dans un tableau pour faire une sorte de base de données. Dans ce tableau, j'insère purement et simple le lien dans une cellule SANS créer de lien hypertext. Lors de cette insertion de données, je mets une valeur dans une cellule pour bloquer l'événement Worksheet_SelectionChange de la feuille de mon tableau.
Code :
Sheets("Variables").Range("A1").Value = "Inser"
Ensuite, j'utilise Worksheet_SelectionChange pour la feuille du tableau afin d'afficher les fichiers correspondants aux liens. Lorsque l'utilisateur sélectionne une cellule de la colonne contenant les liens, j'exécute une commande du type :
Code :
lngErr = ShellExecute(0, "OPEN", LienContenuDansLeTableau, "", "", 0)
Sauf si la cellule A1 de la feuille "Variable" est non vide (pour ne pas éxécuter ces commandes lors de l'insertion...

Au préalable, je vérifie que Target correspond qu'à une ceule est unique cellule pour éviter de planter la macro.

Voilà, avec cette méthode, le lien ne meurt jamais même si le fichier est en réseau.

Emmanuel.
man_coef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h02.


 
 
 
 
Partenaires

Hébergement Web