EXCEL] Fusionner 821 feuilles

Résolu/Fermé
spitulo Messages postés 40 Date d'inscription dimanche 12 septembre 2010 Statut Membre Dernière intervention 9 novembre 2012 - 13 sept. 2010 à 16:57
 Beni - 3 mai 2016 à 09:27
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

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 13/09/2010 à 20:07
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
SUPER, vraiment !
Bravo mec !
0
Super Merci !
0
Merci beaucoup!
0
spitulo Messages postés 40 Date d'inscription dimanche 12 septembre 2010 Statut Membre Dernière intervention 9 novembre 2012 6
Modifié par spitulo le 14/09/2010 à 16:11
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
GENIAL merci !
0
aba2s Messages postés 1 Date d'inscription mardi 13 août 2013 Statut Membre Dernière intervention 13 août 2013
13 août 2013 à 17:27
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
Bonjour je copie votre code mais il y une erreur d'indice et je n'arrive pas à la trouver.
Pouvez-vous m'aider ?
0
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 244
Modifié par tchernosplif le 13/09/2010 à 19:32
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
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 244
13 sept. 2010 à 18:20
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 244
13 sept. 2010 à 17:05
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
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 244
Modifié par tchernosplif le 13/09/2010 à 20:32
j'ai fait 1 fichier d'exemple ci joint

http://www.cijoint.fr/cj201009/cijZQLFitu.xls
1
spitulo Messages postés 40 Date d'inscription dimanche 12 septembre 2010 Statut Membre Dernière intervention 9 novembre 2012 6
14 sept. 2010 à 14:39
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
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 244
14 sept. 2010 à 15:32
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
spitulo Messages postés 40 Date d'inscription dimanche 12 septembre 2010 Statut Membre Dernière intervention 9 novembre 2012 6
14 sept. 2010 à 16:03
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
spitulo Messages postés 40 Date d'inscription dimanche 12 septembre 2010 Statut Membre Dernière intervention 9 novembre 2012 6
13 sept. 2010 à 18:04
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
spitulo Messages postés 40 Date d'inscription dimanche 12 septembre 2010 Statut Membre Dernière intervention 9 novembre 2012 6
13 sept. 2010 à 18:49
Mais celan'inclu pas les tableau?
Et si je dois faire cela pour toutes les feuilles il me faudra un certain temps!:p
0
spitulo Messages postés 40 Date d'inscription dimanche 12 septembre 2010 Statut Membre Dernière intervention 9 novembre 2012 6
13 sept. 2010 à 20:12
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
13 sept. 2010 à 20:20
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
Demahom08 Messages postés 7 Date d'inscription dimanche 31 mars 2013 Statut Membre Dernière intervention 7 avril 2013
31 mars 2013 à 19:43
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
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
30 juil. 2013 à 17:58
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