Suite fusionner plusieurs classeur excel

Résolu
Bonjour, un nouveau problème se pose pour la fusion de classeur excel :
Récemment, j'avais eu comme formule :
=INDIRECT("'PLOT DATA "&ENT(LIGNE()/15)+1&"'!"&CAR(COLONNE()+64)&MOD(LIGNE()-1;15)+1)
Qui avait très bien marché.
Aujourd'hui, j'ai un fichier excel avec des feuilles nommés DATA qui vont de 1 à 176 : j'ai donc 176 feuilles dans un fichier excel.
Dans chaque feuille, j'ai des données qui s'étalent de la colonne A à la colonne S, et jusqu'à la ligne 50 (au maximum). Je voudrais récupérer les données des 176 feuilles sur une seule feuille excel (que je crée dans le même fichier excel de départ) de la colonne A à la colonne M.
Malheureusement, je n'arrive pas à adapter la formule ci-dessus pour faire cela.
Quelqu'un pourrait-il m'aider ?
Je joins le lien du fichier sur lequel je travail : http://ifile.it/2vxyf7d

8 réponses

  1. Contributeur
    bonjour

    Le fichier n'est pas accessible sur ce site, si tu pouvais nous le mettre sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile.
    0
    1. Sans problème, voici le lien :
      http://www.cijoint.fr/cjlink.php?file=cj201002/cijD2Nz5rz.xls
      J'ai oublié de mentionner précédemment que j'ai besoin de deux choses : d'une part une formule qui permettent de récupérer toutes les lignes (de 1 à 50) et une autre formule pour récupérer uniquement les lignes de 40 à 50
      (le plus souvent, il y a 49 lignes, mais certaines feuille en contiennent 50)
      Merci beaucoup pour ton aide.
      0
      1. Bonsoir à tous,
        Je viens de rentrer sur votre discussion.
        Je me disais qu'avec quelques lignes de VBA on pourrait le faire (je pense).
        Du style, on compte le nombre de feuilles (exemple on a 100 feuilles) puis on boucle de i = 2 à 100
        en activant à chaque fois l'onglet(i). On sélectionne la zone A2:N & j ( étant le nombre de ligne utilisé dans le l'onglet sélectionné) et on le copie dans le dernier onglet (par exemple RECAP).

        A plus
        Gilles
        0
        1. merci Gilles, mais je suis un novice vrai de vrai (VBA???), je pensais qu'on pouvait modifier le formule que j'ai affichée dans le premier message.
          Spaissia
          0
      2. Contributeur
        bonjour

        En modifiant légèrement la première formule que je t'avais donnée cela fonctionne pour 50 lignes
        =INDIRECT("'DATA "&ENT(LIGNE()/50)+1&"'!"&CAR(COLONNE()+64)&MOD(LIGNE()-1;50)+1)


        Je regardes pour récupérer 40-50 @+
        0
        1. Je viens d'essayer, c'est nickel pour les 50 lignes.
          Génial, merci beaucoup gbinforme!
          0
      3. Si jamais tu souhaites faire du VBA, j'ai fait l'exemple que tu as envoyé.
        Si tu veux, je le mets en pièce jointe (d'abord je vais commenter le code).
        L'intérêt est de compter le nombre de cellule d'une feuille à chaque fois et peut importe le nombre, on le sélectionne et on le copie sur la dernière feuille.

        Désolé pour tous les deux mais je ne sais pas le faire en formule.
        Gilles
        0
        1. Oui, ça m'intéresse de voir ce que cela peut être.
          Merci Gilles.
          0
          1. http://www.cijoint.fr/cjlink.php?file=cj201002/cijipl0S6N.xls

            Regarde si le résultat est ce que tu attendais. Si çà va, je t'explique sinon on peut adapter

            Gilles
            0
            1. Oui, absolument, c'est bien ça, ça copie bien le nombre de lignes qu'il y a dans chaque feuille (49 ou 50).
              Merci aussi pour ton aide Gilles.
              Donc le VBA est où?
              Spaissia
              0
            2. @spaissiaCi dessous le code VBA
              Par contre dans mes macros, je n'ai pas prévu de copier la ligne des titres. Tu dois le faire avant.
              On pourrait le prévoir dans le code car si tu l'oublies çà peut planter ( ce n'est pas grave).

              Pour voir le code VBA dans excel 2003 : outils / ouvrir Visual Basic / sur la gauche descendre dans module et ouvrir le module présent pour voir le code
              dans excel 2007 aller dans développeur / premier bouton à gauche.

              Ci desssous le code utilisé

              Gilles

              Sub fusionner()
              'variable qui va contenir le nombre feuille
              Dim compteur As Integer
              compteur = Sheets.Count 'compte les feuilles

              'boucle de la feuille 2 (ou on commence à avoir les données) jusqu'a nombre de feuille -2
              For i = 2 To compteur - 2
              'activation de la feuille
              Sheets(i).Activate
              'appel de la méthode selectionner
              selectionner

              Next

              End Sub

              Sub selectionner()
              'variable qui va contenir le nombre de ligne d'une feuille
              Dim rangee As Integer

              If Range("A2").Value = "" Then
              'on sort de la méthose car il n'y a pas données à copier
              Else
              Range("A1").Select
              Selection.End(xlDown).Select
              rangee = ActiveCell.Row
              'j'ai déterminé plus haut le nombre de ligne dans la variable rangee
              Range("A2:M" & rangee).Select
              'selection de la zone A2:M & rangee
              Selection.Copy
              'activation de l'onglet final
              Sheets("données fusionnées").Select
              'positionnement sur la première cellule libre
              ActiveSheet.Range("A1").Select
              If Range("A2").Value = "" Then
              Range("A2").Select
              Else
              'on atteint la derniere cellule de donnee et on se positionne sur la ligne du dessous
              Selection.End(xlDown).Select
              ActiveCell.Offset(1, 0).Select
              End If
              'on est positionné et on colle
              ActiveSheet.Paste
              End If
              End Sub
              0
            3. @gillesJe tente devoir ça comme tu m'indiques, par contre j'ai du mal à suivre.
              Si je veux appliquer cela à un autre fichier excel, on fait comment?
              Est-ce qu'on peut adapter pour avoir uniquement les lignes de 40 à 50 dans chaque classeur?
              Spaissia.
              0
            4. @spaissiaJ'ai essayé de répondre à ta question mais tout à planter.
              Si je comprend bien tu voudrais rajouter les lignes 40 à 50 sur un onglet qui contient déjà les données de 1 à 40.

              Gilles
              0
            5. @GillesEn fait, j'aimerai récupérer sur un onglet les lignes de 1 à 50 et sur un deuxième onglet les ligne 40 à 50.
              En fait, je ne sais pas encore si je vais devoir faire un contrôle sur toute les données (les 50 lignes) ou sur les 11 dernière ligne (40 à 50). En fait, ces données représentent des fixations oculaires échantillonnées toute les 20 ms sur une durée de 950 ms à chaque fois (il y en a 176, d'où les 176 feuilles excel.
              Spaissia
              0
          2. Contributeur
            bonjour

            pour récupérer 40-50
            =INDIRECT("'DATA "&ENT(LIGNE()/11)+1&"'!"&CAR(COLONNE()+64)&MOD(LIGNE();11)+40)
            0
            1. Encore merci gbinforme, ça marche aussi nickel.
              Long vie à ce forum d'entraide!!!
              0