Suite fusionner plusieurs classeur excel

Résolu
spaissia Messages postés 16 Statut Membre -  
 gilles -
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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. spaissia Messages postés 16 Statut Membre
     
    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
  3. Gilles
     
    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. spaissia Messages postés 16 Statut Membre
       
      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
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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. spaissia Messages postés 16 Statut Membre
       
      Je viens d'essayer, c'est nickel pour les 50 lignes.
      Génial, merci beaucoup gbinforme!
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gilles
     
    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
  7. spaissia Messages postés 16 Statut Membre
     
    Oui, ça m'intéresse de voir ce que cela peut être.
    Merci Gilles.
    0
  8. gilles
     
    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. spaissia Messages postés 16 Statut Membre
       
      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. gilles > spaissia Messages postés 16 Statut Membre
       
      Ci 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. spaissia Messages postés 16 Statut Membre > gilles
       
      Je 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. Gilles > spaissia Messages postés 16 Statut Membre
       
      J'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. spaissia Messages postés 16 Statut Membre > Gilles
       
      En 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
  9. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

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