EXCEL] Fusionner 821 feuilles

Résolu
spitulo Messages postés 52 Statut Membre -  
 Beni -
Bonjour,
Je possède dans un fichier excel, plus de 800 feuilles qui contiennent chacunes entre 15 et 20 lignes, etavec chacunes le même nombre de colonnes, dans le même ordre etc.

Pour réaliser un publipostage j'aurais besoin de regrouper tous ces tableaux éparpillés dans une même feuilles (les uns à la suite des autres).

La fonction Consoliderprend beaucoup de temps, et elle ne fait que des calculs, alors qu'il me faut un simple copier/couper => coller.
Et en histoire de macro, je n'y connaisrien. Bien qu'il doit y avoir une solution avec j'imagine.

J'aurais voulu savoir si quelqu'un connaissait un moyen donc de réaliser cette tache (sans copier à la main chacune des pages!! xD), ou si vous avez une macro toutes prête.

Merci d'avance!

11 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    une proposition en vba :

    si toutes les lignes sont à récupérer :
    Sub recap() 
        Dim sh As Worksheet 
        For Each sh In Worksheets 
            If sh.Name <> "Recap" Then 
                sh.[A1].Resize(sh.[A65536].End(xlUp).Row, 8).Copy Destination:=Worksheets("Recap").[A65536].End(xlUp).Offset(1, 0) 
            End If 
        Next sh 
    End Sub


    si la 1ère ligne est une ligne de titre :
    Sub recap2() 
        Dim sh As Worksheet 
        For Each sh In Worksheets 
            If sh.Name <> "Recap" Then 
                sh.[A2].Resize(sh.[A65536].End(xlUp).Row - 1, 8).Copy Destination:=Worksheets("Recap").[A65536].End(xlUp).Offset(1, 0) 
            End If 
        Next sh 
    End Sub


    Je ne teste pas si tu as trop de lignes pour la feuille.

    eric

    edit : créer une feuille nommée Recap
    10
    1. spéculos
       
      SUPER, vraiment !
      Bravo mec !
      0
    2. VenerPi
       
      Super Merci !
      0
    3. Beni
       
      Merci beaucoup!
      0
  2. tchernosplif Messages postés 714 Statut Membre 249
     
    si les feuilles ont un nom générique (Feuil1, Feuil2, Feuil800)

    Il est facile dans la Feuil801 de créer des liens vers les 25 premières lignes des feuilles(on en prends un peu plus que nécessaire) en tirant la formule vers le bas.

    et ensuite, remplacer les 0 (liaisons vers cellules vides) par rien .

    et éventuellement supprimer par la suite les lignes vides
    1
  3. spitulo Messages postés 52 Statut Membre 6
     
    Oui elles ont un nom générique ("Table 1"...).

    Je n'ai pas tout saisi à la procédure, est-ce que tu pourrais me détailler les formules à taper etc,

    si c'est une macro, je ne connais pas du tout les syntaxes, et fonctions qu'on utilise en VBA :s

    Mais merci de ton aide ! =)
    0
  4. tchernosplif Messages postés 714 Statut Membre 249
     
    avec la formule INDIRECT

    tu dois au préalable écrire Feuil1 dans la cellule A1 pour cette exemple

    =INDIRECT("'"&A1&"'!A2")

    donc j'ai crée un lien vers la cellule A2 de la Feuil1
    2
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. spitulo Messages postés 52 Statut Membre 6
     
    Mais celan'inclu pas les tableau?
    Et si je dois faire cela pour toutes les feuilles il me faudra un certain temps!:p
    0
  7. tchernosplif Messages postés 714 Statut Membre 249
     
    l'avantage d'utiliser la fonction INDIRECT est justement d'utiliser un n° de cellule ald du texte.

    en tirant vers le bas la cellule A1 (Feuil1) on écrit rapidement toutes les feuilles jusqu'à Feuil800

    si vraiment tu galères, envoies ton fichier en pièce jointe
    3
  8. spitulo Messages postés 52 Statut Membre 6
     
    Ok, merci Eric,

    Cela me copiera toutes mes lignes ?
    Parceque j'ai des tableaux avec 15 lignes d'autres avec 17, 19 etc...
    (entre 15 et 20)

    Est-ce que cela prends juste le texte et tout le texte ?

    Entre les deux, la seconde m'intéresserais bien, car effectivement j'ai à chaque foi les titres et ce serait bien de ne pas les copier à chaque fois
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Ca copie toutes les lignes oui, qu'il y en ait 3 ou 132, dans l'ordre des feuilles

      tu copies de 'sub' à 'end sub' inclus.
      Clic-droit le le nom d'onglet 'Recap' et 'visualiser le code'
      Colle le code dans la fenetre de droite

      eric
      0
  9. tchernosplif Messages postés 714 Statut Membre 249
     
    j'ai fait 1 fichier d'exemple ci joint

    http://www.cijoint.fr/cj201009/cijZQLFitu.xls
    1
    1. spitulo Messages postés 52 Statut Membre 6
       
      J'ai vu ça mais cela risque d'être super long si je veux mettre >10 colonnes, et le nombre de feuilles sont étirable sinon?
      0
    2. tchernosplif Messages postés 714 Statut Membre 249
       
      des modifs ne prendraient pas beaucoup de temps (ajout de colonnes et modification du nombre de lignes), les formules peuvent être étirées. la logique est ultra simple. ça ne te rendrait pas service de t'aider d'avantage !
      0
    3. spitulo Messages postés 52 Statut Membre 6
       
      Ok ^^ Je n'ai pas tout saisi à ta méthode, mais j'ai réussit avec un code VBA. Je te remercie quand même pour ton aide ! =)
      0
  10. spitulo Messages postés 52 Statut Membre 6
     
    Merci à vous, j'ai enfin réussi ce que je voulais faire.
    Je fais un petit récapitulatif là, si quelqu'un d'autre rencontre le même problème, voilà comment j'ai fonctionné :
    ________________________________________________________________

    Pour réunir plusieurs feuilles sur un même tableau, sans copier la première ligne (celle des titres) :
    Créer une feuille "Recap" avec la macro suivante :

    [Code VBA :]
    Sub recap()  
        Dim sh As Worksheet  
        For Each sh In Worksheets  
            If sh.Name <> "Recap" Then  
                sh.[A2].Resize(sh.[A65536].End(xlUp).Row - 1, XXX).Copy Destination:=Worksheets("Recap").[A65536].End(xlUp).Offset(1, 0)  
            End If  
        Next sh  
    End Sub


    Remplacer dans le code :
    XXX : Nombre de colonnes de vos tableaux

    Puis, exécuter la macro...
    ________________________________________________________________

    Merci pour vos réponses.
    5
    1. Lili
       
      GENIAL merci !
      0
    2. aba2s Messages postés 1 Statut Membre
       
      slt! U peux me dire stp comment on fait pour excécuter ton macro.
      J'ai réussi à le réecrire mais j vois pas la feuille recap apres éxcution.
      merci d'avance
      0
    3. tidou624
       
      Bonjour je copie votre code mais il y une erreur d'indice et je n'arrive pas à la trouver.
      Pouvez-vous m'aider ?
      0
  11. Demahom08 Messages postés 7 Statut Membre
     
    Bonjour,
    Svp aidez moi
    moi je veux faire le contraire j'ai un tableau qui contient 3 colonnes la date la description et les montant ( dépenses ) j'ai encore 12 autre qui contient des données pour calculer le budget mensuel solde début épargne dépenses mensuels pour avoir un solde de fin et je voudrais que les données des dépenses (date ,description , montant)soit copier automatiquement du premier tableau sur chaque tableau de dépenses mensuel en les triant par date (les dépenses de Javier sur la feuille ou ce trouve le tableau ou on calcule le budget de janvier par exemple et ainsi de suite pour les autre mois )
    Merci
    0
  12. Co_nexion Messages postés 333 Statut Membre
     
    Bonjour à tous,

    Je me permets d'intervenir rapidement sur ce sujet, afin de savoir si qlqu'un à rencontrer le même pb que moi.

    Il s'agit d'un msg box avec une croix rouge indiquant le chiffre 400. Cependant il intervient à la fin de la procédure, donc pas genant mais embetant.
    0