Utiliser une cellule qui contient un chemin dans un fonction SI

Fermé
zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015 - 26 mai 2015 à 15:32
zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015 - 1 juin 2015 à 15:13
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.
A voir également:

7 réponses

Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
26 mai 2015 à 23:23
Bonjour,
En principe pour lire un classeur fermé en [A3] cette formule :
=SI('C:\Users\XX\Desktop\[PA.xlsx]Feuil1'!$A$1="oui";"soldé";"")

0
zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015
27 mai 2015 à 11:07
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
0
Avec la fonction INDEX() ?
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
27 mai 2015 à 17:55
Bonjour,
Certainement pas avec la fonction INDEX().
Il faut une fonction personnalisée, patience elle va suivre.
0
Je voulais dire INDIRECT(), désolé.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
Modifié par Le Pingou le 28/05/2015 à 22:20
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
0
zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015
29 mai 2015 à 09:05
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
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858 > zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015
29 mai 2015 à 13:37
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
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
29 mai 2015 à 17:34
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.

0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
30 mai 2015 à 17:42
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
Modifié par Le Pingou le 31/05/2015 à 22:57
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
0
zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015
1 juin 2015 à 08:46
Bonjour Le Pingou,

J'essaie les propositions ce matin.
Je suis désolée je n'ai pas eu le temps de regarder ce week end.

Je vous remercie déjà d'avoir pris le temps de vous pencher sur le sujet. Je reviens vers vous pour vous dire si les propositions fonctionnent.

Bonne journée

Zambrya
0
zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015
1 juin 2015 à 11:33
Bonjour Le Pingou,

J'ai voulu télécharger Morefunc, mais je me suis apperçue qu'il n'est compatible qu'avec Excel 95-2007. Je travaille sous Excel 2010..

Merci

Zambrya
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
1 juin 2015 à 11:33
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... !

0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
1 juin 2015 à 13:50
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 ?

0
zambrya Messages postés 22 Date d'inscription mardi 26 mai 2015 Statut Membre Dernière intervention 17 juin 2015
1 juin 2015 à 15:13
Bonjour,

Effectivement je n'avais pas vu la réponse 14.
Cela me convient parfaitement.
Merci beaucoup pour votre temps.

Zambrya
0