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 Sub

Ensuite, 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 Sub

Cé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 vert

il 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 lien

par

   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 lien

Dans 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 Sub

Sinon, 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 Cell

j'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

Rechercher des sujets similaires à "forcer utiliser bloc notes lors ouverture"