XL pour MAC Liens Hypertexte VBA semi auto

nobodyuse

XLDnaute Occasionnel
Bonjour le Fil

J'ai un fichier Excel placé sur serveur qui sera utilisé par plusieurs personnes
Ce fichier qui doit contenir sur chacune des lignes (+de 1000 lignes prévisionnel) de la colonne E un lien vers un fichier (qui ne sera pas le même a chaque fois) qui sera placé toujours dans le même dossier sur le serveur
Y 'a t'il moyen a l'aide d'une macro de "pré-remplir" la cellules pour qu'il n'y ai plus qu'a ajouter le nom du fichier et que ce soit fonctionnel (plutôt de pré-remplir une formule de type:)
VB:
=LIEN_HYPERTEXTE("....\...\...\...\....\";"Liens à insérer")
que chaque utilisateur devra compléter afin que ce soir fonctionnel pour les autres

je n'ai rien trouvé ici qui pourrai m'aider

j’espère avoir été clair
Merci ;)
 
Solution
re,

un truc comme ça, par exemple, tu peux même déclarer une constante pour ton chemin si tu veux.

Cordialement, @+
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    'pour tester, entrez "forum-excel.7" en cellule A1
 
    If Not Intersect(Range("A1:A1000"), Target) Is Nothing Then
        Dim File_Path$
 
        File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini
 
        On Error GoTo Gere_Erreurs
        ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
        On Error GoTo 0
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
    MsgBox "Fichier ou page web introuvable : " & File_Path & Target.Value, vbOKOnly + vbInformation
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target...
Bonjour nobodyuse, le forum

Une macro peut parfaitement créer un lien hypertexte en ayant le chemin et le nom de fichier, on peut le faire avec une événementielle qui agira sur l'entrée du nom de fichier, le chemin peut être stocké en dur ou dans une cellule. Si tes nommages de fichiers sont modélisés, on peut lier la création du lien à l'existence du fichier. Que préfères tu ? à la rigueur, mets une feuille exemple sur la façon dont tu veux organiser les données.

Bien cordialement, @+
 

nobodyuse

XLDnaute Occasionnel
Bonjour nobodyuse, le forum

Une macro peut parfaitement créer un lien hypertexte en ayant le chemin et le nom de fichier, on peut le faire avec une événementielle qui agira sur l'entrée du nom de fichier, le chemin peut être stocké en dur ou dans une cellule. Si tes nommages de fichiers sont modélisés, on peut lier la création du lien à l'existence du fichier. Que préfères tu ? à la rigueur, mets une feuille exemple sur la façon dont tu veux organiser les données.

Bien cordialement, @+
Bonjour nobodyuse, le forum

Une macro peut parfaitement créer un lien hypertexte en ayant le chemin et le nom de fichier, on peut le faire avec une événementielle qui agira sur l'entrée du nom de fichier, le chemin peut être stocké en dur ou dans une cellule. Si tes nommages de fichiers sont modélisés, on peut lier la création du lien à l'existence du fichier. Que préfères tu ? à la rigueur, mets une feuille exemple sur la façon dont tu veux organiser les données.

Bien cordialement, @+
Bonsoir yeahou
Les fichiers sont nommé de manière aléatoire par un ordinateur.
Il n’y a donc pas de trame

l’idée serai de stocké en dur au moyen d’une macro dans les cellules de la colonne E (E4 > E1004) de façon que les utilisateurs entrant les données n’ai pas renseigner que le nom de fichier (ex: « td36rd7l.ldf »)
Pour que les lecteurs utilisateurs du fichier n’ai que à cliquer sur la cellule pour être envoyé vers le fichier en question
 
Bonjour Nobodyuse, le forum

ce petit exemple tout simple lancera, sur une entrée de nom dans la plage A1:A1000, tout fichier ou page web de nom existant par rapport à un chemin prédéfini.
Essayes en entrant d'abord "forum-excel,7" en A1 puis "forum-excel.7"
Cela permet aussi de vérifier que le nom entré correspond bien à un lien accessible.
tu peux utiliser le même principe, une fois le nom créé, avec selection_change pour lancer le lien pour les utilisateurs

Bien cordialement, @+
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    'pour tester, entrez "forum-excel.7" en cellule A1
    
    If Not Intersect(Range("A1:A1000"), Target) Is Nothing Then
        Dim File_Path$
    
        File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini
    
        On Error GoTo Gere_Erreurs
        ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
        On Error GoTo 0
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
    MsgBox "Fichier ou page web introuvable : " & File_Path & Target.Value, vbOKOnly + vbInformation
End Sub
 
Dernière édition:
re,

un truc comme ça, par exemple, tu peux même déclarer une constante pour ton chemin si tu veux.

Cordialement, @+
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    'pour tester, entrez "forum-excel.7" en cellule A1
 
    If Not Intersect(Range("A1:A1000"), Target) Is Nothing Then
        Dim File_Path$
 
        File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini
 
        On Error GoTo Gere_Erreurs
        ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
        On Error GoTo 0
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
    MsgBox "Fichier ou page web introuvable : " & File_Path & Target.Value, vbOKOnly + vbInformation
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim File_Path$

    File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini

    If Target.Count = 1 Then
        If Not Intersect(Range("A1:A1000"), Target) Is Nothing And Not Target.Value = "" Then
            On Error GoTo Gere_Erreurs
            ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
            On Error GoTo 0
        End If
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
End Sub
 
Dernière édition:

nobodyuse

XLDnaute Occasionnel
Bonjour Yeahou

Je dois me planter quelque par mais quand j’intègre la macro dans ma worksheep ça n'a pas l'air de fonctionner :/
(Sachant que cette macro est précédé d'une autre pour les dates)

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 14 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 17 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 18 And Target.Row > 1 Then Target.Offset(0, 2).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date + 365)
End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
   
    'pour tester, entrez "forum-excel.7" en cellule I1
   
    If Not Intersect(Range("I1:I1004"), Target) Is Nothing Then
        Dim File_Path$
   
        File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini
   
        On Error GoTo Gere_Erreurs
        ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
        On Error GoTo 0
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
    MsgBox "Fichier ou page web introuvable : " & File_Path & Target.Value, vbOKOnly + vbInformation
End Sub


et j'ai une erreur qui remonte:
"Nom ambigu détecté: Worksheet_Change"
 

nobodyuse

XLDnaute Occasionnel
re,

un truc comme ça, par exemple, tu peux même déclarer une constante pour ton chemin si tu veux.

Cordialement, @+
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    'pour tester, entrez "forum-excel.7" en cellule A1
 
    If Not Intersect(Range("A1:A1000"), Target) Is Nothing Then
        Dim File_Path$
 
        File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini
 
        On Error GoTo Gere_Erreurs
        ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
        On Error GoTo 0
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
    MsgBox "Fichier ou page web introuvable : " & File_Path & Target.Value, vbOKOnly + vbInformation
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim File_Path$

    File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini

    If Target.Count = 1 Then
        If Not Intersect(Range("A1:A1000"), Target) Is Nothing And Not Target.Value = "" Then
            On Error GoTo Gere_Erreurs
            ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
            On Error GoTo 0
        End If
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
End Sub
Yeahou

Bon j'ai refait sur mon Ordi Perso ca a l'air de fonctionner, l'erreur du au Nom venais du fait que les 2 macro portai un nom similaire
Je fini la mise en place et vais faire un test sur Serveur
je te dirai ;)

En tous cas merci
 
Re,
ca a l'air de fonctionner
Bien sûr que ça fonctionne, par contre, on ne peut pas faire deux procédures Worksheet_Change sur la même feuille, il faut les fusionner, d'où le nom ambigu.

Cordialement, @+
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 14 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 17 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 18 And Target.Row > 1 Then Target.Offset(0, 2).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date + 365)
  
    'pour tester, entrez "forum-excel.7" en cellule I1
  
    If Not Intersect(Range("I1:I1004"), Target) Is Nothing Then
        Dim File_Path$
  
        File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini
  
        On Error GoTo Gere_Erreurs
        ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
        On Error GoTo 0
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
    MsgBox "Fichier ou page web introuvable : " & File_Path & Target.Value, vbOKOnly + vbInformation
End Sub
 

nobodyuse

XLDnaute Occasionnel
Re,

Bien sûr que ça fonctionne, par contre, on ne peut pas faire deux procédures Worksheet_Change sur la même feuille, il faut les fusionner, d'où le nom ambigu.

Cordialement, @+
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 14 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 17 And Target.Row > 1 Then Target.Offset(0, 1).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date)
If Target.Column = 18 And Target.Row > 1 Then Target.Offset(0, 2).Value = IIf(Target.Value = "" Or IsEmpty(Target), Empty, Date + 365)
   
    'pour tester, entrez "forum-excel.7" en cellule A1
   
    If Not Intersect(Range("I1:I1004"), Target) Is Nothing Then
        Dim File_Path$
   
        File_Path = "https://www.excel-downloads.com/forums/" 'chemin prédéfini
   
        On Error GoTo Gere_Erreurs
        ThisWorkbook.FollowHyperlink Address:=File_Path & Target.Value
        On Error GoTo 0
    End If
    Exit Sub
Gere_Erreurs:
    Err.Clear
    MsgBox "Fichier ou page web introuvable : " & File_Path & Target.Value, vbOKOnly + vbInformation
End Sub

Dans le doute je ne l'ai pas fusionné mais j'ai changé le NOM de Worksheet_Change en WorksheetLink et ca fonctionne ;)

Je viens de le mettre sur serveur ca a l'air d'aller maintenant il reste plus qu'a faire tester par les utilisateurs habituel

Merci Beaucoup tu m'a simplifié la tache la ;)
 

Discussions similaires

Réponses
16
Affichages
653

Statistiques des forums

Discussions
315 134
Messages
2 116 614
Membres
112 812
dernier inscrit
jocelyne86360