Utiliser une cellule qui contient un chemin dans un fonction SI
zambrya
Messages postés
22
Statut
Membre
-
zambrya Messages postés 22 Statut Membre -
zambrya Messages postés 22 Statut Membre -
Bonjour à tous,
J'ai besoin de votre aide sur Excel.
Voilà j'aimerais utiliser la fonction suivante dans la cellule A3 SI([PA.xlsx]Feuil1!$A$1="oui";"soldé";""). Je souhaite changer la partie [PA.xlsx], pour se faire :
A1 = lien hypertexte menant à PA. C:\Users\XX\Desktop\PA
A2 = extraction du lien hypertexte grâce à une macro. C:\Users\XX\Desktop\PA
Je souhaite modifier [PA.xlsx] par l'extraction contenu dans la cellule A2 soit [C:\Users\XX\Desktop\PA]
L'interêt d'utiliser les extractions des liens hypertextes est que je vais avoir beaucoup de classeur PA (PA1,PA2, PA3,...). Le but est de ne pas apporter de modification à la fonction SI. Pour chaque classeur PA, seul le lien hypertexte sera à faire.
Ex :
B1 = lien hypertexte vers PA2
B2 = extraction du lien hypertexte vers PA 2 [C:\Users\XX\Desktop\PA2]
B3 =fonction SI [C:\Users\XX\Desktop\PA2]
Merci par avance pour votre aide.
J'ai besoin de votre aide sur Excel.
Voilà j'aimerais utiliser la fonction suivante dans la cellule A3 SI([PA.xlsx]Feuil1!$A$1="oui";"soldé";""). Je souhaite changer la partie [PA.xlsx], pour se faire :
A1 = lien hypertexte menant à PA. C:\Users\XX\Desktop\PA
A2 = extraction du lien hypertexte grâce à une macro. C:\Users\XX\Desktop\PA
Je souhaite modifier [PA.xlsx] par l'extraction contenu dans la cellule A2 soit [C:\Users\XX\Desktop\PA]
L'interêt d'utiliser les extractions des liens hypertextes est que je vais avoir beaucoup de classeur PA (PA1,PA2, PA3,...). Le but est de ne pas apporter de modification à la fonction SI. Pour chaque classeur PA, seul le lien hypertexte sera à faire.
Ex :
B1 = lien hypertexte vers PA2
B2 = extraction du lien hypertexte vers PA 2 [C:\Users\XX\Desktop\PA2]
B3 =fonction SI [C:\Users\XX\Desktop\PA2]
Merci par avance pour votre aide.
7 réponses
-
Bonjour,
En principe pour lire un classeur fermé en [A3] cette formule :=SI('C:\Users\XX\Desktop\[PA.xlsx]Feuil1'!$A$1="oui";"soldé";"")
-
Bonjour,
Merci pour ta réponse.
Je pense que j'ai mal expliqué.
En fait dans la fonction SI je veux remplacer 'C:\Users\XX\Desktop\[PA.xlsx] par A2. Je ne veux pas entrer le chemin. J'aimerais mettre A2 dans le formule et que ça tienne compte du contenu de la cellule A2. (en A2 se trouve le chemin)
Merci
Zambrya -
-
-
Bonjour,
Certainement pas avec la fonction INDEX().
Il faut une fonction personnalisée, patience elle va suivre.
-
Bonjour zambrya,
Pour l'instant j'obtiens des résultats non fiables ... !
Dans le but de décider de la suite, j'ai besoin de connaitre deux éléments :
Le lien hypertexte se trouve uniquement dans la cellule [A1] oui ou non ?
Le lien contient-il la valeur absolue (le chemin complet) ou la valeur relative (le nom du classeur et son extension) ?
Salutations.
Le Pingou-
Bonjour,
Dans la colonne A se trouve les liens hypertexte
Le lien est du type : \\w2k8s1\services\COMMUN\TRAVAIL\QUALITE\Actions correctives\PA test 1.xls
Dans la colonne B j'effectue une extraction du lien hypertexte (je ne sais pas si ça peut être utlie)
Et je souhaite que la fonction SI soit dans la colonne G
J'espère avoir apporté les informations nécessaires ...
Merci- Bonjour,
Pour l'extraction du lien hypertexte, tu peux utilise la fonction suivante :Function adr_lien(a As Range)
adr_lien = "pas de lien"
If a.Hyperlinks.Count > 0 Then
adr_lien = a.Hyperlinks(1).Address
Else
If Left(a.Formula, 11) = "=HYPERLINK(" Then
adr_lien = Evaluate(Mid(a.Formula, 12, InStr(12, a.Formula, ",") - 12))
End If
End If
End Function
Pour l'accès à l'info qui se trouve dans ce classeur en Feuil1!$A$1, tu peux utiliser la fonction que wby31 proposait :INDIRECT("'"&adr_lien(A9)&"Feuil1'!$A$1"). Cela suppose que ton classeur lié est ouvert.
Si ce classeur n'est pas ouvert, tu peux utiliser la fonction INDIRECT.EXT() de MoreFunc (Laurent Longre) ou encore les solutions ADO qui gèrent les fichiers fermés.
cordialement
-
-
Bonjour zambrya,
Je vous laisse essayer la proposition de JvDo (salutations) peut être que chez vous ce sera bon, car, en fait chez moi ce n'est pas bon.
-
Bonjour Le Pingou
peut-être que cette solution marchera mieux :Function adr_lien(a As Range)
Application.Volatile
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
adr_lien = "pas de lien"
If a.Hyperlinks.Count > 0 Then
adr_lien = fso.GetAbsolutePathName(a.Hyperlinks(1).Address)
feuilcell = a.Hyperlinks(1).SubAddress
x = Split(adr_lien, "\")(UBound(Split(adr_lien, "\")))
adr_lien = Replace(adr_lien, x, "[" & x & "]" & feuilcell)
adr_lien = Replace(adr_lien, "'", "")
adr_lien = Replace(adr_lien, "!", "'!")
adr_lien = "'" & adr_lien
If feuilcell = "" Then adr_lien = adr_lien & "'"
Else
If Left(a.Formula, 11) = "=HYPERLINK(" Then
adr_lien = Evaluate(Mid(a.Formula, 12, InStr(12, a.Formula, ",") - 12))
adr_lien = Replace(adr_lien, "[", "")
xx = Split(adr_lien, "\")
xx((UBound(Split(adr_lien, "\")))) = "[" & xx((UBound(Split(adr_lien, "\"))))
adr_lien = Join(xx, "\")
adr_lien = Replace(adr_lien, "'", "")
adr_lien = Replace(adr_lien, "!", "'!")
adr_lien = "'" & adr_lien
End If
End If
End Function
Pour son utilisation : si le lien hypertexte (calculé ou manuel) est attaché à la cellule A9, le contenu de la cellule pointée par le lien sera obtenu par INDIRECT.EXT(adr_lien(A9)), même si le classeur cible est fermé.
Remarque : INDIRECT.EXT() est une fonction du package MoreFunc de Laurent Longre qu'il faut donc installer.
cordialement
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour JvDo,
Merci pour cette proposition qui malheureusement ne fonctionne pas chez moi, que le lien hypertexte soit en valeur absolu ou relative.
Je ne sais pas si c'est le cas chez vous.
Je ne vais pas poursuivre sans réponse de zambrya... !
Salutations.
Le Pingou -
Bonjour,
Je crois comprendre que vous insérez systématiquement un lien hypertexte dans la colonne [A] dans le but d'accéder directement au fichier concernée, dans ce sens pourquoi ne pas en profiter pour insérer dans la colonne [B] directement la liaison avec la cellule de référence pour votre affichage SI(B....="oui";"soldé";""). Ce serait quand même plus simple, Non... !
-
Bonjour,
Je n'utilise pas les fonctions [Morefunc], cependant je vous laisse voir sous ce lien pour Excel 2010 il semble que cela doit marcher.
Et pourquoi la proposition du message 14 ne vous convient pas ?