IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Lien hypertexte forcer ouverture dans excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2010
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2010
    Messages : 160
    Par défaut Lien hypertexte forcer ouverture dans excel
    Bonjour à tous,

    J'utilisais avant assez habituellement ActiveSheet.Hyperlinks.Add afin de faciliter la navigation entre des fichiers Excel mais la problème je change de poste, les paramètres ne doivent plus être les mêmes et il m'ouvre tout en navigateur. Problème beaucoup moins de fonctionalités. J'ai beau chercher je ne trouve pas comment le forcer merci à vous.
    Cordialement.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si les fichiers à ouvrir se trouvent dans le même répertoire ou dans des sous-répertoires, il est plus simple d'utiliser la fonction LIEN_HYPERTEXTE

    Voir mon billet sur ce sujet Ouvrir un classeur à l'aide de la fonction LIEN_HYPERTEXTE
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2010
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2010
    Messages : 160
    Par défaut
    Merci pour votre réponse, j'ai le même problème avec la fonction lien qui m'ouvre le document dans mon navigateur. Je précise que mes documents excel sont sur sharepoint ca vient peut être de là

  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 192
    Billets dans le blog
    2

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je précise que mes documents excel sont sur sharepoint ca vient peut être de là
    J'ai eu le cas chez un client qui avait SharePoint, il faut convertir le chemin SharePoint.
    J'utilise la même technique pour OneDrive

    J'ai créé une fonction générique en VBA que j'invoque dans une cellule de la feuille où je place mes paramètres et j'utilise le chemin ainsi converti (cellule nommée) dans ma fonction LIEN_HYPERTEXTE en concaténant le path avec le nom du classeur à ouvrir

    Un exemple qui m'a servi de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test_Environ()
     Dim BaseRacineOneDrive
     Dim chemin, c, old_Path, new_Path
     BaseRacineOneDrive = Environ("OneDrive") & "\"
     chemin = ActiveWorkbook.FullName ' ActiveWorkbook.Path  ' pour avoir que le chemin
     c = InStr(1, chemin, "/Documents") + 10
     old_Path = Left(chemin, c)
     new_Path = Replace(Replace(chemin, old_Path, BaseRacineOneDrive), "/", "\") & "\"
     Debug.Print new_Path
    End Sub
    Code de la fonction générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Function GetLocalPath(Path As String, Optional OneDriveName As String) As String
      ' Renvoie le chemin local du classeur
      ' Author  : Philippe Tulliez (https://magicoffice.be)
      ' Version : 1.1
      ' Arguments
      '  Path           ' le chemin du classeur
      '  [OneDriveName] ' [d:=OneDrive] Environ ou EnvironCommercial
      '
      Dim LocalRootOneDrive As String
      Dim p As Integer
      Dim old_Path As String, new_Path As String
      If Len(OneDriveName) = 0 Then OneDriveName = "OneDrive"
      If Left(Path, 6) = "https:" Then
        LocalRootOneDrive = Environ(OneDriveName) & "\"
        p = InStr(1, Path, "/Documents") + 10
        old_Path = Left(Path, p)
        new_Path = Replace(Replace(Path, old_Path, LocalRootOneDrive), "/", "\")
        GetLocalPath = new_Path
       Else
        GetLocalPath = Path
      End If
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2010
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2010
    Messages : 160
    Par défaut
    Philippe merci pour ton retour,

    J'avoue que je ne comprends pas bien la logique de ton code que j'ai tenté d'adapter à ma situation

    Dans mon cas j'ai un sharepoint et j'ai créé une bibliothèque de documents Pilotage , j'ai donc remplacé ton /documents qui n'est pas présent chez moi.

    L'objectif est par la suite de faire une boucle qui me génére pour chaque indicateur un lien vers la fiche indicateur.
    j'ai fait des tests avec les ".." qui me permettent de remonter au dossier parent (je sors ainsi de mon dossier administration) pour entrer dans le dossier "indicateurs"
    Cette logique fonctionne très bien mais le fichier s'ouvre dans le navigateur et j'ai le même problème avec ta fonction mais peut être que je l'utilise mal.

    Voici les deux commandes que j'ai tapées :
    en cellule r9
    =GetLocalPath("https://cafdoc.sharepoint.com/sites/AppuiaupilotageCCSS05/Pilotage/Indicateurs/"&B9&C9&A9&".xlsm";"https://cafdoc.sharepoint.com/sites/AppuiaupilotageCCSS05/Pilotage")

    =LIEN_HYPERTEXTE(R9;"lien")

    Function GetLocalPath(Path As String, Optional OneDriveName As String) As String
    ' Renvoie le chemin local du classeur
    ' Author : Philippe Tulliez (https://magicoffice.be)
    ' Version : 1.1
    ' Arguments
    ' Path ' le chemin du classeur
    ' [OneDriveName] ' [d:=OneDrive] Environ ou EnvironCommercial
    '
    Dim LocalRootOneDrive As String
    Dim p As Integer
    Dim old_Path As String, new_Path As String
    If Len(OneDriveName) = 0 Then OneDriveName = "OneDrive"
    If Left(Path, 6) = "https:" Then
    LocalRootOneDrive = Environ(OneDriveName) & ""
    p = InStr(1, Path, "/Pilotage") + 9
    old_Path = Left(Path, p)
    new_Path = Replace(Replace(Path, old_Path, LocalRootOneDrive), "/", "")
    GetLocalPath = new_Path
    Else
    GetLocalPath = Path
    End If
    End Function


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Function GetLocalPath(Path As String, Optional OneDriveName As String) As String
      ' Renvoie le chemin local du classeur
      ' Author  : Philippe Tulliez (https://magicoffice.be)
      ' Version : 1.1
      ' Arguments
      '  Path           ' le chemin du classeur
      '  [OneDriveName] ' [d:=OneDrive] Environ ou EnvironCommercial
      '
      Dim LocalRootOneDrive As String
      Dim p As Integer
      Dim old_Path As String, new_Path As String
      If Len(OneDriveName) = 0 Then OneDriveName = "OneDrive"
      If Left(Path, 6) = "https:" Then
        LocalRootOneDrive = Environ(OneDriveName) & "\"
        p = InStr(1, Path, "/Pilotage") + 9
        old_Path = Left(Path, p)
        new_Path = Replace(Replace(Path, old_Path, LocalRootOneDrive), "/", "\")
        GetLocalPath = new_Path
       Else
        GetLocalPath = Path
      End If
    End Function

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2010
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2010
    Messages : 160
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Merci beaucoup

    Effectivement ta solution fonctionne mais je ne parvient pas à faire la même chose directement en VBA. j'aimerai pouvoir faire ce paramètrage en automatique à l'ouverture du fichier sans action des utilisateurs...

    Dommage car ce serait clairement la solution la plus simple je vais continuer à fouiller.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'avoue que je ne comprends pas bien la logique de ton code que j'ai tenté d'adapter à ma situation
    C'est le deuxième paramètre qui est mal utilisé. Ce dernier est optionnel. Par défaut c'est "OneDrive" donc en R9, seul le chemin doit être définit soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GetLocalPath("https://cafdoc.sharepoint.com/sites/AppuiaupilotageCCSS05/Pilotage/Indicateurs/"&B9&C9&A9&".xlsm")
    et en R9 on doit avoir "c:/....../...." qui est alors exploitable avec les fonctions et méthodes du VBA
    Si "OneDrive" ne donne pas satisfaction, il y a lieu de définir le deuxième argument avec une autre valeur OneDrive.

    Le code ci-dessous écrit la valeur des différentes valeurs d'environnement dans la table structurée nommée t_Environ (voir illustration ci-dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub GetEnvirons()
      Const TableName As String = "t_Environ"
      Dim oRange As Range
      Dim oList As ListObject
      Dim r As Byte
      Dim t As Variant
      Dim f As Boolean
      Set oRange = Range(TableName)
      Set oList = oRange.ListObject
      ' f = Not .DataBodyRange Is Nothing
      ' Suppression de toutes les lignes existantes
      Application.ScreenUpdating = False
      With oList
       If Not .DataBodyRange Is Nothing Then
        .DataBodyRange.Rows.Delete       '
       End If
      .ListRows.Add ' Ajout d'une nouvelle ligne pour initialiser la table
      End With
      With oList.DataBodyRange
       For r = 1 To 42
        t = Split(Environ(r), "=")
       .Cells(r, 1).Value = r
       .Cells(r, 2).Value = t(0)
       .Cells(r, 3).Value = t(1)
       Next
      End With
      Set oRange = Nothing: Set oList = Nothing
    End Sub
    Illustration

    Nom : Table t_Environ.png
Affichages : 72
Taille : 44,9 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2010
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2010
    Messages : 160
    Par défaut
    En réutilsant ta fonction et en remettant documents j'obtiens ça en r9:

    \fdoc.sharepoint.com\sites\AppuiaupilotageCCSS05\Pilotage\Indicateurs\Axe 1\Fic1.xlsm
    Mais avec la fonction lien il me renvoie une 404 dans la navigateur web

    Sinon la requête que tu m'as fourni retourne ces infos plus la colonne value
    # name
    1 ALLUSERSPROFILE
    2 APPDATA
    3 BPPDOMAIN_MANAGER_ASM
    4 BPPDOMAIN_MANAGER_TYPE
    5 BURLIBO
    6 CHROME_CRASHPAD_PIPE_NAME
    7 CHROME_RESTART
    8 classpath
    9 CLIENTNAME
    10 CommonProgramFiles
    11 CommonProgramFiles(x86)
    12 CommonProgramW6432
    13 COMPONENT_INSTALLER_DIR
    14 COMPUTERNAME
    15 ComSpec
    16 CONFIGJSON
    17 CUPC_HOME
    18 CUPC_PROCESS
    19 DLC111
    20 DriverData
    21 EDGE_BROWSER_PID
    22 EDGE_METRICS_CLIENT_ID_HASH
    23 EDGE_METRICS_SESSION_ID
    24 EDGE_RUNTIME_VARIATIONS_SEED_ETAG
    25 EDGE_USER_DATA_DIR
    26 EDGE_UX_CONFIG_CORRELATION_ID
    27 EDGE_VARIATIONS_SEED_ETAG
    28 FPS_BROWSER_APP_PROFILE_STRING
    29 FPS_BROWSER_USER_PROFILE_STRING
    30 HOMEDRIVE
    31 HOMEPATH
    32 INSTWCP
    33 INSTWCP11.7
    34 LOCALAPPDATA
    35 LOCFICUTIL
    36 LOGONSERVER
    37 NUMBER_OF_PROCESSORS
    38 OS
    39 Path
    40 PATHEXT
    41 PROCESSOR_ARCHITECTURE
    42 PROCESSOR_ARCHITEW6432
    43 PROCESSOR_IDENTIFIER
    44 PROCESSOR_LEVEL
    45 PROCESSOR_REVISION
    46 ProgramData
    47 ProgramFiles
    48 ProgramFiles(x86)
    49 ProgramW6432
    50 PSModulePath
    51 PUBLIC
    52 ressourcedmessage
    53 SESSIONNAME
    54 SRVTELEDIS
    55 SystemDrive
    56 SystemRoot
    57 TEMP
    58 TMP
    59 TRAVAIL
    60 UATDATA
    61 USERCODEORG
    62 USERDNSDOMAIN
    63 USERDNSORG
    64 USERDOMAIN
    65 USERDOMAIN_NIMS
    66 USERDOMAIN_ROAMINGPROFILE
    67 USERENV_NIMS
    68 USERNAME
    69 USERPROFILE
    70 windir
    71 ZES_ENABLE_SYSMAN
    72 _BOI_PRODUCTION
    73

Discussions similaires

  1. [WD-2016] Créer un lien hypertexte depuis word dans une cellule excel
    Par Bloodkry dans le forum VBA Word
    Réponses: 1
    Dernier message: 12/07/2021, 15h41
  2. Réponses: 2
    Dernier message: 17/06/2014, 21h54
  3. [CODE] Ouverture dans EXCEL
    Par Katachana dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2007, 11h29
  4. PB export date et lien hypertexte d'access à excel
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 05/10/2005, 17h09
  5. [FLASH MX] Liens hypertext pour naviguer dans ma page
    Par marie64dk dans le forum Flash
    Réponses: 13
    Dernier message: 10/08/2004, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo