Comment relier des fichier excel entre eux

Bonjour,

J'ai 100 fichiers excel qui sont numérotés de 1 a 100, exemple :
(Archiv1\[1.xls]), Archiv1\[2.xls], etc.

Je cherche a obtenir en automatique dans un fichier excel de synthèse les données correspondante au fichier 1, 2, 3, etc, Feuil1'!D4 :
Archiv1\[1.xls]Feuil1'!D4
Archiv1\[2.xls]Feuil1'!D4
Archiv1\[3.xls]Feuil1'!D4

Merci pour votre aide.

8 réponses

Résumé de la discussion

L'objectif est d'extraire automatiquement les données D4 de Feuil1 de 100 fichiers Excel nommés 1.xls à 100.xls situés dans le dossier Archiv1 vers une feuille de synthèse. Plusieurs propositions préconisent de concaténer le chemin, le nom de fichier et la référence Feuil1'!D4, puis de recopier vers le bas pour incrémenter le numéro. D'autres évoquent INDIRECT avec des liens externes, mais les résultats montrent que la référence renvoie #REF lorsque les classeurs ne sont pas ouverts, ce qui limite cette approche. En fin de compte, les échanges mettent en évidence le décalage entre une méthode manuelle et le besoin d'automatisation pour traiter des milliers de références sans ouvrir chaque fichier.

Bobot (l’IA à votre service)
  1. personne n'a envie de m'aider!
    0
    1. met une colonne qui va de 1 à 100 puis met

      Archiv1\[indirect(C1).xls]Feuil1!D4

      Ici la colonne C équivaut à ta colonne de 1 à 100
      0
    2. Bonjour,
      je ne comprend pas la formule.

      \archiv1 est le nom de dossier ou se trouve les fichiers 1, 2, 3, ... 100

      j'ai un autre excel ou je souhaite recuperer les donnees du fichier 1, 2, 100. Feuil1'!D4
      le probleme est que je tape en manuel :

      'C:\.............. \Archiv1\[1.xls]Feuil1'!D4

      'C:\.............. \Archiv1\[2.xls]Feuil1'!D4

      'C:\.............. \Archiv1\[3.xls]Feuil1'!D4, etc
      0
  2. Contributeur
    salut
    si j'ai bien compris tu veux pouvoir recopier vars le bas un cellule contenant =Archiv1\[1.xls]Feuil1'!D4 avec seulement le 1 de 1.xls qui s'incrémente jusqu'à 100 dans la recopie

    si c'est ça moi je passerai par une concaténation de plusieurs cellules (que tu pourras masquer une fois la recopie effectuée)

    exemple
    cellule A1 mettre Archiv1\[
    cellule B1 mettre 1.xls
    cellule C1 mettre ]Feuil1'!D4
    cellule D1 mettre =CONCATENER(A1:C1)
    et recopier vers le bas normalement seul de le 1 de 1.xls va s'incrémenter
    si D4 s'incrémente mettre $D$4 à la place
    0
    1. Bonjour,
      ne suis pas un expert, peux tu me donner la formule complete = .....
      Merci par avance
      0
    2. Contributeur
      ben je te l'ai donnée c'est celle en D1
      0
    3. Bonjour,
      j'ai essaye mais cela ne fonctionne pas.
      possible que je ne me suis pas bien exprime.

      \archiv1 est le nom de dossier ou se trouve les fichiers 1, 2, 3, ... 100

      je souhaite faire glisser dans un autre fichier excel les donnees contenues dans les fichiers 1,2,3, 100 .. pour otenir dans chaque lignes du nouveau fichier :
      Archiv1\[1.xls]Feuil1'!D4
      Archiv1\[2.xls]Feuil1'!D4
      Archiv1\[3.xls]Feuil1'!D4
      etc.

      aujourd'hui lorsque je fais glisser j'obtient :
      Archiv1\[1.xls]Feuil1'!D4
      Archiv1\[1.xls]Feuil1'!D5
      Archiv1\[1.xls]Feuil1'!D6
      etc.

      encore merci
      0
  3. Bonjour,

    compte tenu, que je n'ai pas recu de reponse, faut il en conclure qu'il n'existe pas de solution!

    ou que personne ne veut relever le defi...

    merci
    0
    1. Contributeur
      Bonjour

      essayez ceci:
      sur ligne 2 en A2 de votre récap:

      =INDIRECT("'Archiv1\["&LIGNE()-1&".xls]Feuil1'D4")
      à tirer vers le bas. La valeur de LIGNE()-1 va s'incrémenter, pas le reste du texte.

      notes:
      1°) ligne()-1 sur ligne 2 donne 1
      2°) il est curieux que le crochet soit après archive dans votre demande.
      3°) pour valider la solution via INDIRECT:
      placer dans une cellule:
      ="'Archiv1\["&LIGNE()-1&".xls]Feuil1'D4"
      le libellé qui s'affiche dans la cellule doit correspondre exactement à l'adresse complète à utiliser
      *crdlmnt

      ps vous concluez vite.

      Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
      0
      1. Bonjour,

        Le chemin complet ou se trouve le fichier ou je veux recuperer les donnees est :
        ='C:\Documents and Settings\David\Desktop\JUIN 2011\BS\Client X\QS 2011\Archiv1\[1.xls]Feuil1'!D2

        Meme chose pour le fichier 2 :
        ='C:\Documents and Settings\David\Desktop\JUIN 2011\BS\Client X\QS 2011\Archiv1\[2.xls]Feuil1'!D2

        Etc.

        Je ne comprend pas je dois inserer votre formule dans le chemin...
        0
      2. Contributeur
        Le code INDIRECT utilise le texte écrit dans la formule et le transforme en adresse Il faut donc écrire tout le texte en utilisant le code LIGNE() pour faire varier le N°entre crochets, sachant que de chaque coté , les deux parties du texte sont entre guillemets.
        crdlmnt
        0
      3. je dois vous preciser que je ne suis pas un expert, et que ce que vous me dite est du charabia pour moi.
        par rapport au chemin que je vous ai donner, pourriez vous me donner la formule...
        merci
        0
      4. je suis en train de m'arracher les cheveux, j'ai touner la formule dans tout les sens, resultat REF, non valide...
        j'ai vraiment besoin d'aide.
        merci
        0
    2. Contributeur
      RE
      =iNDIRECT("'C:\Documents and Settings\David\Desktop\JUIN 2011\BS\Client X\QS 2011\Archiv"&MLIGNE()-1"\[2.xls]Feuil1'!D2 ")

      D2ou D4, va savoir??

      Crdlmnt
      0
      1. bonjour,
        excel dit qu'il y a une erreur dans la formule.

        ce que je cherche a modifier en automatique dans le chemin c'est (1.xls / 2.xls, etc.):

        C:\Documents and Settings\David\Desktop\JUIN 2011\BS\Client X\QS 2011\Archiv1\[1.xls]Feuil1'!D2
        C:\Documents and Settings\David\Desktop\JUIN 2011\BS\Client X\QS 2011\Archiv1\[2.xls]Feuil1'!D2
        Etc.

        Merci
        0
    3. Contributeur
      Si le texte de votre message est intégralement celui que vous avez dans la barre de formule:

      =INDIRECT("C:\Documents and Settings\David\Desktop\JUIN 2011\BS\Client X\QS 2011\Archiv1\["&LIGNE()&".xls]Feuil1'!D2")
      LIGNE() correspond à 1 sur ligne 1

      voila le texte reconstruit que vous devriez obtenir.
      le mieux à faire:
      copier la barre e formule et copier le texte dans une cellule, sans le signe =
      placer le LIGNE() à la place du N° de fichier
      encadrer les deux textes de chaque coté de ce code par des guillemets
      placer le tout entre parenthèses
      rajouter devant =INDIRECT
      voila le texte que vous devriez obtenir en incrémentant:
      http://www.cijoint.fr/cjlink.php?file=cj201110/cijO44OTOb.xls
      crdlmnt
      0
      1. Bonjour,

        la formule fonctionne, elle me donne bien 1.xls, 2.xls, etc, dans le cas de la formule ci-dessous :

        =("C:\Documents and Settings\David\Desktop\JUIN 2011\BS\Client X\QS 2011\Archiv1\["&LIGNE()&".xls]Feuil1'!D2")

        mais des que je mets devant la formule = INDIRECT, la formule me donne le resultat : REF
        0
        1. Contributeur
          Bonjour
          sauf erreur autant dans ma dernière proposition que dans votre message, il manque l'apostrophe au début entre le "et le C>> "'C:\........
          crdlmnt
          0
      2. Contributeur
        salut
        je reprends ma proposition en la modifiant pour qu'elle s'incrémente au bon endroit
        cellule A1 mettre Archiv1\[
        cellule B1 mettre 1
        cellule C1 mettre .xls]Feuil1'!$D$4
        cellule D1 mettre =CONCATENER(A1:C1)
        et recopier vers le bas
        normalement seul le 1 va s'incrémenter
        0
        1. Contributeur
          Bonsoir Usul

          ça devrait pouvoir marcher aussi,

          mais est ce que cela peut fonctionner sans l'adresse complète?

          par ailleurs,
          je pense que ta formule en D1 est:
          CONCATENER(A1;B1;C1)
          car chez moi(mais c'est chez moi) CONCATENER(A1:C1) renvoi #VALEUR
          je crois aussi que pour utiliser ensuite le code INDIRECT, tu as le même problème d'oubli que moi: il faut écrire en A1:
          'Archive\1[ en commençant par l'apostrophe.

          et bien cette solution n'exclut pas l'utilisation du code INDIRECT

          Bien amicalement
          0
        2. Contributeur
          Bonsoir Vaucluse
          il faudrait que je prenne le temps de revoir tout ça car j'ai indiqué ça de mémoire.
          j'ai mis en place une telle solution il y a longtemps et je n'ai pas vérifié sur mes fichiers toujours utilisés comment était réellement la formule.
          je n'utilise pas le code INDIRECT dans ma formule donc pas besoin d'apostrophe. en plus si je me souviens bien la référence relative fonctionne bien si les classeur sont dans le même dossier donc l'apostrophe n'est pas nécessaire

          dès que j'ai le temps je regarde mais en ce moment c'est un peu chaud ;-)
          0
        3. Contributeur
          Ok usul si tu as le temps, ça m'intéresse de savoir comment tu passes par concaténer sans le code INDIRECT!
          Ceci dit:
          __ compte tenu du chemin je pense que les dossiers sont différents.
          __ si on n'a pas d'apostrophe au début , on n'en a pas non plus à la fin, après Feuil1!

          bien cordialement
          0
        4. tout les fichiers excel ([1.xls]Feuil1'!D2, [2.xls]Feuil1'!D2, [3.xls]Feuil1'!D2, etc) sont dans le meme fichier (Archiv1)

          j'ai rajoute une apostrophe, j'ai retire les apostrophes, meme resultat : #REF!
          0
        5. Contributeur
          je m'en voudrais d'insister, car la solution marche, elle a déjà été validée plusieurs fois et je viens encore de le vérifier chez moi entre deux fichiers. mais il y a peut être un problème dans votre fichier ou dans vos désignations

          effectivement, si vos fichiers sont dans le même dossier:
          =INDIRECT("'["&LIGNE()&".xls]Feuil1'!D2"
          devrait marcher
          *controler de près, et n'oubliez pas: les apostrophes derrière le 1° guillemet et devant le point d'exclamation sont obligatoire
          essayez pour voir cette formule sans utiliser ligne:
          =INDIRECT("'[1.xls]Feuil1'!D2")
          et dites nous ce qu'elle donne.
          A vous lire

          crdlmnt

          ps vérifier aussi que l'adresse fonctionne en traditionnel, soit:
          ='[1.xls]Feuil1'!D2
          0

      Discussions similaires

      question pix mot caché

      7 réponses