Récupération données chemin variable

Bonjour,

Mon problème est le suivant :

j'aimerais récupérer les données d'une cellule d'un autre classeur pour les mettre dans une cellule de mon classeur.
le hic, c'est que le chemin varie en fonction de certaines données ainsi que le nom de fichier

\\ordi\rep1\"repertoire variable"\"nomdefichiervariable.xls"

Un bout de code :
-------------------------------------------------------------
Dim chemin As String
Dim fclient As String
chemin = Feuil1.Cells(5, 8)
fclient = Feuil1.Cells(17, 3)

Range("A6") = chemin & fclient
-------------------------------------------------------------

Soit chemin = \\ordi\rep1\
et fclient = repertoire variable\[nomdefichiervariable.xls]Feuil1'!A1

Dans ma cellule de destination il me met \\ordi\rep1\repertoire variable\[nomdefichiervariable.xls]Feuil1'!A1

Merci de votre aide
Configuration: Windows XP
Internet Explorer 7.0

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. ok

    j'ai du mal à expliquer, et la fin est pas trés compréhensible, désolé

    Je veux la cellule A1 du fichier "nomdefichiervariable.xls"

    ce nom de fichier est dans une cellule excel de ma feuille et est généré en fonction de certaines données

    A la fin, au lieu de me renvoyer la valeur de A1.

    Il me renvoie "\\ordi\rep1\repertoire variable\[nomdefichiervariable.xls]Feuil1'!A1"

    c'est mieux ?
    1. en fait à la fin dans la cellule réceptrice tu ne trouve pas le contenu de la cellule A1
      de la feuille : Feuil1
      du fichier : nomdefichiervariable.xls
      dans le répertoire : repertoire variable
      dans le repertoire : rep1
      sur la machine : ordi

      mais la chaine représentant cet accès soit :

      \\ordi\rep1\repertoire variable\[nomdefichiervariable.xls]Feuil1'!A1

      As tu pensé à mettre dans la cellule ciible un "=" devant le chemin ?

      A+
  2. Oui c'est exactement ça !

    alors je mets le = dans la cellule correspondant au chemin, car je n'en avais effectivement pas mit dans la cellule cible

    et quand je lance le fichier, j'ai l'erreur d'exécution '13' sur la ligne : Range("A6") = chemin & fclient

    Merci de ta patience :p
    1. bah déjà j'essaye avec c: et ça ne marche pas avec ou sans '

      hum, comment ferais-tu en reprenant depuis le début...

      cellule avec chemin : ='c:\rep1\

      cellule avec variable : repertoire variable\[nomfichiervariable.xls]Feuil1!A1

      ou un concatener avec la totalité : ='c:\rep1\repertoire variable\[nomfichiervariable.xls]Feuil1!A1 ???

      merci
      1. j'ai trouvé :p

        je cherchais en vb depuis le début, mais il faut tout de même passer par les cellules excel car c'est là que mon fichier créé et stock le nom de fichier variable...

        j'ai tout repris et tout redéfini en m'inspirant d'un autre site (en espèrant ne pas dire de bêtises...)

        Private Sub workbook_open()

        fPath = Range("H5")
        fName = Range("H6")
        sName = "Feuil1"
        cell = "A1"

        Range("A8") = "='" & fPath & "\[" & fName & "]" & sName & "'!" & cell

        End Sub

        Merci de votre aide
        1. Peux tu nous réécrire tous ça en évitant de mélanger texte libre en langage naturel et codage VB

          car je n'ai pas bien compris la fin et donc je ne comprends pas ton souci

          A+
          1. Contributeur
            Bonjour,
            après essais je pense qu'il faut ajouter une apostrophe après le =
            ='\\ordi\rep1\repertoire variable\[nomdefichiervariable.xls]Feuil1'!A1
            Pour autant que le chemin soit valable, de plus je me demande si c'est possible de lire dans un classeur fermer en passant par le réseau. ?
            A+
            1. Contributeur
              Je suis parvenu à valider la formule mais c'est pas fort pratique, enfin ce n'est qu'une piste

              Dans la cellule Chemin '='c:\rep1\ .. remarque l'apostrophe devant pour forcer en texte
              Dans la cellule variable repertoire variable\[nomfichiervariable.xls]Feuil1!A1
              Dans une cellule intermédiare Concaténer les 2 cellules.
              Faire une copie spécial valeur dans une autre cellule et valider avec ENTER.
              J'ai pas trouver mieux.
              Probablement qu'en VBA ce serait faisable plus simplement

              A+
              1. juste un détail il faut des '
                pour encadrer le path-nom de fichier
                exemple
                ='C:\essai\[essai.xls]Feuil1'!$A$1

                mais excell ne saura pas évaluer le contenu de la cellule s'il n'a pas évalué l'autre
                Il faut donc qu'il ouvre le fichier référencé

                c'est comme une pile d'appel si tu appel une fonction pour obtenir le résultat qu'elle calcule il faut exécuter la fonction pour évaluer le calcul

                A+
                1. Contributeur
                  Là j'ai pas bien compris, tu veux ouvrir un autre classeur quand tu ouvre le premier ?
                  Ca n'a aucun sens, ou bien je suis tout à fait à côté de la plaque ?
                  A+
                  PS: Par VBA je t'ai dit que c'était plus facile, non ?
                  Enfin, si c'est ce que tu veux.
                  1. Vois excel comme un serveur logiciel
                    une machine de niveau 7

                    il prend un fichier et l'interprète

                    en fait c'est un héritier du Qbasic
                    c'est pour cela qu l'on a accès au VB qui est son langage de base

                    c'est une machine d'interpétation de contenus de céllules.

                    un fichier chargé dans la machine est actif. il vit;

                    Un fichier sur le disque dort. Il est inactif

                    La valeur contenu dans une cellule est inconnue tat que le fichier n'est pas chargé et devient donc actif.

                    Imaginons que t fasse réfrence à une page qui fasse un calcul sur la date !

                    Il est évident qu'il doit être chargé et interprété pour savoir le résultat du calul avant de le copier dans l'autre page !

                    Si tu fait référence à un fichier non ouvert, excell te demandera (boite de dialogue) si tu accepte la dernière valeur

                    fait l'essai tu verra

                    Imagine les choses de façon dynamiques et non statiques.

                    a++