FORCER A UTILISER BLOC-NOTES lors de l'ouverture
Bonjour,
je suis face à un petit probleme. J'ai crée un bout de code qui permet de crée des liens automatique, sauf que j'ai des fichier que je narrive pas a ouvrir directement en apuyer sur le lien, car c'est des fichier sans extention : msg excel : "aucune application est associer à se fichier".
L'idée est de forcé excel a ouvrir mon fichier apres un clique sur le lien avec bloc-notes ou wordpad .
Des idée pour faire sa ?
merci cdlt
Bonjour,
Il n'est pas malheureusement pas possible d'utiliser d'utiliser les événements 'Worksheet_SelectionChange' ou ' Worksheet_FollowHyperlink', le suivi du lien hypertexte se faisant avant leur déclenchement...
Une solution serait de générer des liens hypertextes vides (Address:=""), et de stocker le chemin du fichier à ouvrir dans la propriété ScreenTip de cette façon :
Public Sub CreateHyperLink(ByVal Target As Range, ByVal strLinkAddress As String, ByVal strTextDisplay As String)
If Target.Hyperlinks.Count = 0 Then 'Si la cellule ne contient pas de lien hypertexte alors...
Target.Hyperlinks.Add Anchor:=Target, Address:="", ScreenTip:=strLinkAddress, TextToDisplay:=strTextDisplay
'...Ajoute un lien hypertexte vide. Le lien est sauvegardé dans l'InfoBulle
End If
End SubEnsuite, l’événement FollowHyperlink peut être récupéré. Puisque le lien ne pointe sur rien aucun fichier n'est ouvert. On utilise alors l'instruction Shell pour ouvrir le fichier avec le bloc notes :
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Len(Target.Address) = 0 And Dir(Target.ScreenTip) <> "" Then
'Si le lien hypertexte est vide et que l'InfoBulle renvoit vers un fichier existant alors....
Shell "NotePad.exe " & Target.ScreenTip, vbNormalFocus 'L'ouvre avec NotePad"
End If
End SubCédric
merci pour ta réponse .
voici mon code il permet de recherche dans mon repertoire windows si le nom indiquer dans la celulle et present si oui il lui affecte un lien sauf que quand je clique decu sa ne marche pas car le fichier est sans extansion, on peu pas faire appelle a wordpad pour louvrir avec
strPath = "Z:\GIBBS-PROG CN ET PROTO\01-Gammes-Programmes automatiques\02-PROGRAMME\313\" 'Chemin du dossier contenant les programmes pour la machine 313
If Dir(strPath & Cells(i, 7).Text & "") <> "" Then 'Rechercher dans le chemin déclarer les fichiers correspondant au nom de la colonne 7 ligne + 1
F.Hyperlinks.Add Anchor:=F.Cells(i, 7), Address:=strPath & F.Cells(i, 7) & ".NCF", TextToDisplay:=F.Cells(i, 7).Value 'Si le nom trouver dans le dossier lui affacter le lien
F.Cells(i, 7).Font.Bold = True 'Liens en gras
F.Cells(i, 7).Interior.Color = RGB(174, 240, 194) 'Cellule en vertil est possible de faire une macro qui me permet d'ouvrir les lien de la colonne G avec notepad comme sa ?
Shell "NOTEPAD.EXE "colonne G:G "
Bonjour,
Dans ton code, remplace la ligne
F.Hyperlinks.Add Anchor:=F.Cells(i, 7), Address:=strPath & F.Cells(i, 7) & ".NCF", TextToDisplay:=F.Cells(i, 7).Value 'Si le nom trouver dans le dossier lui affacter le lienpar
F.Hyperlinks.Add Anchor:=F.Cells(i, 7), Address:="", ScreenTip:=strPath & F.Cells(i, 7) & ".NCF", TextToDisplay:=F.Cells(i, 7).Value 'Si le nom trouver dans le dossier lui affacter le lienDans le code associé à ta feuille, ajoute ce code :
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Len(Target.Address) = 0 And Dir(Target.ScreenTip) <> "" Then
'Si le lien hypertexte est vide et que l'InfoBulle renvoit vers un fichier existant alors....
Shell "NotePad.exe " & Target.ScreenTip, vbNormalFocus 'L'ouvre avec NotePad"
End If
End SubSinon, si tu veux pouvoir ouvrir tous les liens de ta feuille (sans cliquer sur les liens). On peut imaginer une solution de ce genre :
Dim Cell As Range
For Each Cell In F.UsedRange 'Pour chaque cellule de la feuille F
If Cell.Hyperlinks.Count > 0 Then 'Uniquement les cellules contenant un lien hypertexte
If Len(Cell.Hyperlinks(1).Address) = 0 And Dir(Cell.Hyperlinks(1).ScreenTip) <> "" Then
'Si le lien hypertexte est vide et que l'InfoBulle renvoit vers un fichier existant alors....
Shell "NotePad.exe " & Cell.Hyperlinks(1).ScreenTip, vbNormalFocus 'L'ouvre avec NotePad"
End If
End If
Next Cellj'ai essayer ton code mais il ne marche pas
cette fonction ne marche pas : Shell "NotePad.exe " & Target.ScreenTip, vbNormalFocus 'L'ouvre avec NotePad"
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Shell "NotePad.exe " & Target.ScreenTip, vbNormalFocus 'L'ouvre avec NotePad"
End Sub
ne marche pas ....
As-tu remplacé ta procédure qui génère les liens hypertexte ?
Le plus simple serait de joindre un classeur
oui, enfaite le fichier que j'ai est sans extension donc excel ne c'est pas l'ouvrir . l'idée est de l'ouvrir directement avec notepad ou wordpad lors du clique sur le lien .
Peux-tu joindre ton classeur ? Ça me permettra de cibler plus justement ce qui bloque