Macro sur classeur partagé [Résolu]

Signaler
Messages postés
16
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
16
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
31 mars 2010
-
Bonjour ,

J'ai cru comprendre qu'il n'était pas possible de partager un classeur qui contient une macro.
Ou du moins celle ci ne fonctionnera pas ou mal.

Ce qui est mon cas :
J'ai un classeur partagé sur lequel j'ai créé une macro qui créer un lien automatiquement dans une cellule en recuperant la valeur de celle ci pour l'inserer dans le lien:

Public iVerrou As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
    
    On Error Resume Next
    
    If iVerrou = False Then
        
        iVerrou = True
        If Target.Value <> "" Then
            If Target.Column = 8 Then
                sVal = Target.Value
                Cells(Target.Row, Target.Column).Select
                ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
                "https://############/#######.php?ID=" & sVal
            End If
        End If
        iVerrou = False
    
    End If
End Sub


Le comportement de la macro est completement HS une fois partagée.
Quelqu'un aurait il un moyen de contourner ce probleme, voir une solution qui n'utiliserais pas de macro (peut etre une fonction excel que je ne connais pas?)

Merci pour vos reponses.
Ben

2 réponses

Messages postés
106
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
22 avril 2010

Le problème ne viens pas de partager un fichier qui contient une macro.
La macro fonctionnera toujours même le fichier partagé (seul l'édition de la macro est impossible).
Cependant en partageant le fichier cela restreint certaines fonctionnalité comme la possibilité d'ajouter une liste de choix sur une cellule. La méthode "Hyperlinks" que utilise en fait partie.

Une des solutions serait d'ajouter la formule de lien hypertexte à ta cellule.

Public iVerrou As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
    
    On Error Resume Next
    
    If iVerrou = False Then
        
        iVerrou = True
        If Target.Value <> "" Then
            If Target.Column = 8 Then
                sVal = Target.Value
                Cells(Target.Row, Target.Column).Select
                Selection.Formula = "=HYPERLINK(""https://############/#######.php?ID=" & sVal & ""","""& Selection.Value & """)"
            End If
        End If
        iVerrou = False
    
    End If
End Sub


Cette formule :
Selection.Formula = "=HYPERLINK(""https://############/#######.php?ID=" & sVal & ""","""& Selection.Value & """)"
fonctionne avec un classeur verrouiller.
Elle correspond à la formule française de "=LIEN_HYPERTEXTE(URL,Valeur de la cellule)"
Seul inconvénient lors du clique sur la cellule c'est la formule qui apparait cependant la valeur de la cellule reste la même.
Messages postés
16
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
31 mars 2010

Bonjour a vous et merci de votre réponse cela marche parfaitement comme ceci.
Et le fait de voir la formule ne me dérange pas du tout du moment que les liens fonctionnent.

Merci encore.