XL 2019 Chemin dossier sans lettre de lecteur

farid

XLDnaute Occasionnel
Bonjour,
question, est possible dans la formule ci-dessous qui fonctionne très bien , de supprimer la lettre du lecteur .

=SI(B3="test1";"D:\Archive scanner 2021\coco";SI(B3="ENERGIE";"D:\Archive scanner 2021\Energie";SI(B3="SIG";"D:\Archive scanner 2021\SIG";SI(B3="test2";"D:\Archive scanner 2021\titi";SI(B3="SYSTEME";"D:\Archive scanner 2021\Système";SI(B3="BATIMENT";"D:\Archive scanner 2021\Bâtiment";SI(B3="MACHINERIE";"D:\Archive scanner 2021\Machinerie";SI(B3="ESPACE.VERT";"D:\Archive scanner 2021\Espace vert";SI(B3="test3";"D:\Archive scanner 2021\Archive scanner 2021\toto";SI(B3="PDV";"D:\Archive scanner 2021\Plan de veille";SI(B3="SECURITE";"D:\Archive scanner 2021\SECURITE";"0")))))))))))

par avance, merci
 
Solution
Pour une cellule d'un tableau plutôt qu'un shape, je vous dirais de créer le lelien à l'aide de la fonction LIEN_HYPERTEXTE, comme ça le 1er argument pourrait aussi être une expression commençant par la fonction Lecteur, ou mieux à mon avis, un nom dans le classeur mis à jour lors de son ouverture.

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez comme ça :
Code:
=SIERREUR("D:\Archive scanner 2021\"&INDEX({"coco";"Energie";"SIG";"titi";"Système";"Bâtiment";"Machinerie";"Espace vert";"toto";"Plan de veille";"SECURITE"};EQUIV($B$3;{"test1";"ENERGIE";"SIG";"test2";"SYSTEME";"BATIMENT";"MACHINERIE";"ESPACE.VERT";"test3";"PDV";"SECURITE"};0));"")
Mais pour 11 cas n'ayant pas l'air particulièrement stables dans le temps, vous auriez intérêt à faire un petit tableau à 2 colonnes quelque part plutôt que de les figer ainsi dans la formule !
Le dispositif serait plus souple à maintenir et la formule serait plus courte :
Code:
=SIERREUR("D:\Archive scanner 2021\"&INDEX(Tableau1[Doss];EQUIV($B$3;Tableau1[Clé];0));"")
 
Dernière édition:

farid

XLDnaute Occasionnel
Bonjour.
Essayez comme ça :
Code:
=SIERREUR("D:\Archive scanner 2021\"&INDEX({"coco";"Energie";"SIG";"titi";"Système";"Bâtiment";"Machinerie";"Espace vert";"toto";"Plan de veille";"SECURITE"};EQUIV($B$3;{"test1";"ENERGIE";"SIG";"test2";"SYSTEME";"BATIMENT";"MACHINERIE";"ESPACE.VERT";"test3";"PDV";"SECURITE"};0));"")
Mais pour 11 cas n'ayant pas l'air particulièrement stables dans le temps, vous auriez intérêt à faire un petit tableau à 2 colonnes quelque part plutôt que de les figer ainsi dans la formule !
Le dispositif serait plus souple à maintenir et la formule serait plus courte :
Code:
=SIERREUR("D:\Archive scanner 2021\"&INDEX(Tableau1[Doss];EQUIV($B$3;Tableau1[Clé];0));"")
Bonjour Dranreb
merci pour tes deux proposition qui fonctionne très bien, Cependant ma question est -il possible de produire la même chose sans mettre le lecteur comme dans cette exemple D:\.Je travail sur un disque amovible et selon les PC , la lettre du lecteur de mon amovible change et malheureusement je ne peux changer car les PC sont soumis sous autorité administrateur.
Même en VBA , je prends.
j'utilise une macro de ce type lorsque je souhaite aller sur un dossier sans passer lettre :
Private Sub CommandButton10_Click()
Dim dossier$
dossier = ThisWorkbook.Path & "\..\Dossier divers\Mode opératoire\Système" 'à adapter
Shell Environ("WINDIR") & "\explorer.exe " & dossier, vbNormalFocus
End Sub

la question: est-il possible de produire la formule que tu m'as allégée sans lettre de lecteur?
j'espère que ma demande est explicite.
par avance , merci
Farid
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Votre demande n'est pas claire. Pour que la valeur d'une cellule obtenue par une formule commence par une lettre il faut forcément qu'elle la restitue, et qu'elle y soit donc spécifiée, d'une façon ou d'une autre.
En VBA, Left$(ThisWorkbook.Path, 1) vous donnerait la lettre de lecteur du chemin du classeur portant la macro contenant l'instruction utilisant cette expression.
Peut être =SIERREUR(GAUCHE(INFORMATIONS("REPERTOIRE");1)&":\Archive scanner etc. À tester.
 
Dernière édition:

farid

XLDnaute Occasionnel
Bonjour.
Votre demande n'est pas claire. Pour que la valeur d'une cellule obtenue par une formule commence par une lettre il faut forcément qu'elle la restitue, et qu'elle y soit donc spécifiée, d'une façon ou d'une autre.
En VBA, Left$(ThisWorkbook.Path, 1) vous donnerait la lettre de lecteur du chemin du classeur portant la macro contenant l'instruction utilisant cette expression.
Peut être =SIERREUR(GAUCHE(INFORMATIONS("REPERTOIRE");1)&":\Archive scanner etc. À tester.
Bonjour,
en effet , j'ai du mal me faire comprendre. Pour essayer de m'expliquer je joint le fichier avec explicatif qui j'espère vous éclaira sur ma demande et surtout comprendre sur quoi je travail. Merci , par avance.
 

Pièces jointes

  • Test.zip
    60.7 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Bon, conformément à ma 1ère idée, essayez déjà en ajoutant cette Function dans un module (le Module9 conviendrait) :
VB:
Function Lecteur(ByVal Cel As Range) As String
   Lecteur = Left$(Cel.Worksheet.Parent.Path, 1)
   End Function
En 'Feuil_modèle'!W1 :
Code:
=SIERREUR(Lecteur($B$3)&":\test\Archive scanner 2021\"&INDEX({"Test1";"Test2";"Test3";"Test4";"Test5";"Test6";"Test7";"Test8";"Test9";"Test10";"Test11"};EQUIV($B$3;{"Test1";"Test2";"Test3";"Test4";"Test5";"Test6";"Test7";"Test8";"Test9";"Test10";"Test11"};0));"")
ou d'ailleurs, si toutefois vous avez l'intention de garnir PARAM!$C$2:$C$12 de valeurs différentes :
Code:
=SIERREUR(Lecteur($B$3)&":\test\Archive scanner 2021\"&INDEX(PARAM!$C$2:$C$12;EQUIV($B$3;PARAM!$B$2:$B$12;0));"")
Parce que si c'est toujours le nom du dossier dans la liste, ceci suffirait :
Code:
=SIERREUR(Lecteur($B$3)&":\test\Archive scanner 2021\"&$B$3;"")
Remarque l'instruction ChDrive ne tient compte que du 1er caractère de l'argument spécifié. Inutile donc de le réduire par un Left.
 
Dernière édition:

farid

XLDnaute Occasionnel
Bon, conformément à ma 1ère idée, essayez déjà en ajoutant cette Function dans un module (le Module9 conviendrait) :
VB:
Function Lecteur(ByVal Cel As Range) As String
   Lecteur = Left$(Cel.Worksheet.Parent.Path, 1)
   End Function
En 'Feuil_modèle'!W1 :
Code:
=SIERREUR(Lecteur($B$3)&":\test\Archive scanner 2021\"&INDEX({"Test1";"Test2";"Test3";"Test4";"Test5";"Test6";"Test7";"Test8";"Test9";"Test10";"Test11"};EQUIV($B$3;{"Test1";"Test2";"Test3";"Test4";"Test5";"Test6";"Test7";"Test8";"Test9";"Test10";"Test11"};0));"")
ou d'ailleurs, si toutefois vous avez l'intention de garnir PARAM!$C$2:$C$12 de valeurs différentes :
Code:
=SIERREUR(Lecteur($B$3)&":\test\Archive scanner 2021\"&INDEX(PARAM!$C$2:$C$12;EQUIV($B$3;PARAM!$B$2:$B$12;0));"")
Parce que si c'est toujours le nom du dossier dans la liste, ceci suffirait :
Code:
=SIERREUR(Lecteur($B$3)&":\test\Archive scanner 2021\"&$B$3;"")
Remarque l'instruction ChDrive ne tient compte que du 1er caractère de l'argument spécifié. Inutile donc de le réduire par un Left.
Bonjour Dranreb,
merci beaucoup pour votre aide .Je viens de tester la partie pour l'ouverture du chemin du dossier "\Test\Archive scanner 2021\Test1" sur plusieurs lecteurs et cela fonctionne très bien .Cependant je reste bloquer sur le lien de la Schap en J19 , lorsque je procède commande test/ouverture dossier/clic sur fichier/copier -coller Schap avec intégration de lien , le lien fonctionne uniquement sur le lecteur de sa création et non sur un autre lecteur. La finalité de ma demande en plus de ce que vous m'avez donné et la création de la Schap avec un lien non lié au lecteur de sa création , que je puisse l'ouvrir sur n'importe lecteur lorsque je me déplace avec mon disque amovible . J'espère être compris . je met en PJ le fichier avec les modification que vous m'avez fournies , j'espère que ce n'est pas une erreur de ma part lors d'intergration des ligne de commandes. Le fichier a été crée sur le lecteur D:\
merci , Par avance
Bien cordialement
 

Pièces jointes

  • Test.zip
    95.2 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Bonjour.
Il me semble avoir vu il y a bien longtemps des liens hypertextes qui avait pour le besoin d'alors le défaut inverse: un chemin relatif au classeur qui les porte. Il devrait donc être possible de le spécifier de cette façon là à leur création. Mais je ne sais pas comment …
Essayez peut être à leur création un ChDir pour que, seul le nom de fichier étant alors spécifié, il définisse le chemin par rapport au CurDir .
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Pour une cellule d'un tableau plutôt qu'un shape, je vous dirais de créer le lelien à l'aide de la fonction LIEN_HYPERTEXTE, comme ça le 1er argument pourrait aussi être une expression commençant par la fonction Lecteur, ou mieux à mon avis, un nom dans le classeur mis à jour lors de son ouverture.
 

farid

XLDnaute Occasionnel
Pour une cellule d'un tableau plutôt qu'un shape, je vous dirais de créer le lelien à l'aide de la fonction LIEN_HYPERTEXTE, comme ça le 1er argument pourrait aussi être une expression commençant par la fonction Lecteur, ou mieux à mon avis, un nom dans le classeur mis à jour lors de son ouverture.
merci Dranreb pour votre implication qui m'a permis une avancé considérable suite aux propositions que vous m'avez données. Effectivement , ma dernière demande semble compliquer pour moi aussi.Je vais relancer ma recherche afin que je puisse finaliser mon projet.
Merci mille fois pour votre temps que vous m'avez accordé.
bien a vous et au plaisir.

je vais clôturé ce sujet pour en ouvrir un autre pour traiter le dernier sujet.
 

Statistiques des forums

Discussions
312 508
Messages
2 089 138
Membres
104 047
dernier inscrit
bravetta