Macro plusieurs onglets sur un seul

Bonjour,

Comme l'indique mon titre, je souhaite réaliser une macro me permettant de mettre le contenu de x onglet sous un même onglet. Les largeurs des colonnes de mes onglets sont identiques docn c ne devront pas causer de pb ..

Le petit hic est que je soiuhaite inserer sur cette feuille recap des saut de page forcés qui me permettront de garder les onglets indépendant lors de l'impression!

Merci pour votre aide !!

James

Bonjour,

Sans fichier ce sera difficile d'imaginer quoi te proposer...

Mais tu peux aussi faire une recherche sur ce forum avec des mots clés tels que "Transfert", "copier une feuille", etc...

Si tu mets un fichier (sans données confidentielles) ce sera plus facile

Amicalement

Bonjour Dan et merci pour ta réponse,

Je ne peux pas transmettre le fichier, mais l'esprit est assez simple :

10 sheets qui font de 1 à 7 pages lors de l'impressions,

Je veux simplement les reprendre sur un nouvel onglet, voila ce que j'ai écrit mais ca fonctionne mal :

Dim WS As Worksheet

For Each WS In Worksheets

WS.Activate

Application.DisplayAlerts = False

If Range("A1").Value = "asa" Then

Range("A1:Q205").Copy Sheets("AE").Range("A65536").End(xlUp)(50)

End If

Application.DisplayAlerts = True

Next WS

End Sub

Il faudrait qu'il identifie lui même la dernière activer et colle sur la feuil ae le 2ème onglet en dessous!

Le tout en y insérant un saut de page forcé à la fin de chaque onglet copier !!

Merci,

JAMES

Re,

Si j'ai bien compris, essaie avec ce code

Sub test()
'Macro Dan le 22/05/2010
Dim WS As Worksheet
For Each WS In Worksheets
If WS.Range("A1").Value = "asa" Then
WS.Range("A1:Q205").Copy Sheets("AE").Range("A" & Range("A65536").End(xlUp).Row + 1)
Sheets("AE").Range("A" & Range("A65536").End(xlUp).Row + 1).PageBreak = xlPageBreakManual
End If
Next WS
End Sub

Amicalement

Bonjour DAN tu as parfaitement compris !!

La macri fontionne, cependant (et ce de ma faute car je ne l'avais pas préciser au début ), j'aimerais fair un copier spécial qui prennent le format et les aleurs en compte, sans quoi ma mise en page d'un même onglet est perturbé, vu que la hauteur des ligne ne se modifie pas? le valeur, c'est parce que mes onglet font reference à dec cellules d'une autre feuille, et par conséquent unad kje les colle de l'autre coté, mes référence écrivent n'importe quoi!!

Merci pour ton aide !!!

James

Re,

Essaie ce code

Sub test()
'Macro Dan le 24/05/2010
'http://forum.excel-pratique.com/excel/macro-plusieurs-onglets-sur-un-seul-t17348.html
Dim WS As Worksheet
For Each WS In Worksheets
If WS.Range("A1").Value = "asa" Then
WS.Range("A1:Q205").Copy
With Sheets("AE").Range("A" & Range("A65536").End(xlUp).Row + 1)
    .PasteSpecial Paste:=xlValues
    .PasteSpecial Paste:=xlFormats
    .PageBreak = xlPageBreakManual
End With
End If
Next WS
End Sub

Amicalement

Bonjour Dan et encore merci pour tes réponses !!!

Le pagebreak ne se met pas à la fin de mon onglet que j'ai copier, pourtant, le code me semble bon (de ce que je comprend si A1=ASA dans la feuil, on copie de A à Q et on colle a la dernière ligne de la page AE en gardant valeurs format et en insérant un saut de page à la fin de la copie ).

Je ne comprends pas d'ou viens le pb, je vais encore cherché car cela doit venir de mon fichier. si je n'y parviens pas, sera-t-il possible d'envoyer uniquement à toi mon fichier ?

Merci pour ton aide Dan!

James

-- 26 Mai 2010, 09:53 --

Re Bonjour,

Ta macro est bien correcte !!! (Et je suis un boulet!)

Ayant plusieurs titres sur une même feuille, je m'étonnais de ne pas avoir de saut de page entre mes "pages" d'un même onglet" ...

Donc le problème vient de moi !!

Reste une petite question, est-il possible de copier en même temps les sauts de page existant sur ma 1ère page ?

est-il possible de conserver la hauteur des lignes apres le copier coller (ce qui ne se fait pas actuellement, je pensais qu'en copiant le format ca marcherait mais apparemment non).

Merci pour tes réponse !!!

James

re,

est-il possible de conserver la hauteur des lignes apres le copier coller

Quelle est la valeur de la hauteur des lignes dans ta feuille ?

A te relire

La hauteur dépend des lignes (Gros hic certaines sont fusionnés, donc je ne peux pas changer la hauteur en fonction du nombre de lettre dans la cellule). Je ne peux également pas me servir du autofix ...

Je pense que ma seule solution est de mettre un code dans ma macro ki permettre de conserver la hauteur de la ligne des lignes copiées ...

Bonjour,

Sans définir une hauteur fixe ou réajustement automatiquement, ce n'est pas possible à faire.

Ton souci vient des cellules fusionnées... Je le répète souvent --> à ne jamais faire dans une feuille excel. Cela met toujours le souc dans les codes.

A te relire

Effectivement ...

Merci pour toutes tes réponses,

Cordialement,

James

Bonjour à tous, Salut Dan

une solution serait (si possible) de copier les lignes entières,

puis de faire un copier/collageSpécial/Valeur des colonnes avec formules.

ce qui donnerait:

Sub test2()
Dim WS As Worksheet, Lg&
    For Each WS In Worksheets
        If WS.Range("A1").Value = "asa" Then
            WS.Range("A1:Q205").EntireRow.Copy
            With Sheets("AE")
                Lg = .Range("A65536").End(xlUp).Row + 1
                .Paste .Rows(Lg)
                    Range("f1:g205").Copy 'colonnes avec formules
                .Range("f" & Lg).PasteSpecial Paste:=xlValues

                .Range("a" & Lg).PageBreak = xlPageBreakManual
            End With
        End If
    Next WS
End Sub

ici, on suppose qu'il y est des formules en colonnes F et G

à tester

Amicalement

Claude

re,

Salut Claude,

Pourquoi copier la colonne F ??

A te relire

re Dan,

La colonne F est un exemple, je ne sais pas où sont les formules à mettre en Valeur

Claude

Bonjour Dubois et merci pour ton interressement (je crois que ce n'est pas la première fois que tu me dépannes toi ossi )

Même remarque que Dan mes valeurs peuvent être n'importe ou et sont partourt en faite, donc un copier coller avec xlvalue me semble bien (je ne pense pas avoir besoin de préciser les endroit ou j'ai des formules vu que j'en ai sur les 3/4 du document)!

Par contre ton idée de copier la ligne entière me semble très bonne !!

Je test cela dès demain matin et je vous redis !!

Merci pour votre aide à vous deux !!!

Bonsoir,

Pour être efficaces il faudrait 3 ou 4 feuilles représentatives (anonymisées si besoin)

1) localiser les cellules fusionnées

2) localiser les cellules avec formules

le copier coller avec xlvalue n'ira pas à cause des cellules fusionnées

il faudra peut-être défusionner localement

bref faut voir le bébé !

Bonne soirée

Claude

Re,

ben comme je le disais avant Claude concernant les cellules fusionnées. On risque de faire une usine à gaz pour résoudre ce pb. D'où mes conclusions dans mon post précédent.

A bientôt

Bonjour,

Merci pour vos réponses!

Je test le copier coller des lignes (je ne dois pas avoir beaucoup de cellule fusionnées verticalement donc je serres les doigts !)

Si ça ne fonctionne pas, je vous prépare 3-4 page du bébé!!!

Bonne journée à vous

Bonjour,

déjà, la 1ère feuille "page garde" démarre à Q, les colonnes avant son masquées

çà démarre bien !

il n'y aura jamais + que 306 lignes ?

Claude

édit: la feuille "AE" est devenue "récap" ?

édit2: c'est bon, je peaufine la macro

-- Jeu Mai 27, 2010 12:48 pm --

re,

là je crois que çà marche,

1) je mets tout en valeur

2) on copie les lignes entières (ce qui permet de prendre les fusionnées et les objets)

3) à la fin, tu choisi un nouveau nom pour enregistrer, le fichier d'origine reste intact.

Sub Regroupe()
Dim Lg%, Lg2&
'Macros par Claude Dubois pour "james404" Excel-Pratique le 27/05/10
    Application.ScreenUpdating = False
    Sheets("récap").Range("a1") = "Début récap" 'indispensable

    For i = 1 To Worksheets.Count
        If Sheets(i).Range("A1").Value = "asa" Then
            Sheets(i).Activate
            Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row

            Range("a1:a" & Lg).EntireRow.Copy
            Range("a1").PasteSpecial Paste:=xlValues
                Range("a1:a" & Lg).EntireRow.Copy
            With Sheets("récap")
                Lg2 = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
                .Paste .Rows(Lg2)
                .PageSetup.PrintArea = "$A$1:$Q$" & Lg2
                .Range("a" & Lg2).PageBreak = xlPageBreakManual
            End With
        End If
    Next i
            With Sheets("récap")
                Lg2 = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
                .PageSetup.PrintArea = "$A$1:$Q$" & Lg2
            End With
    Application.Dialogs(xlDialogSaveAs).Show
End Sub

Les sauts de page ne donnent pas grand chose !

teste et dis-moi

Amicalement

Claude

Re bonjour Dubois,

Effectivement, la feuille AE est nommée récap pour les tests que je faisais!! (j'ai changer car une autre devra s'appeller AE par la suite).

Pour la page de garde effectivement elle comment à la colonne Q, mais aucun pb, je la passerai en A.

Pour le reste, je tiens à te remercié d'y avoir passé du temps!!!!!

La macro fonctionne très bien!!! L'histoire de la mise en page est de ma faute ! J'ai changer les marges de toutes les feuilles sauf celle de la feuil récap!! :s Une fois ca réglé, elle fonctionne parfaitement bien !!

Plus qu'un détail, étant donné que l'on pourra avoir a effetuer la macro chaque année, il faudrait qu'en début de macro, on ait un code qui permet d'effacer le contenu de tout l'onglet (y compris les checkbox).

Bonne journée et encore merci à toi!!

Rechercher des sujets similaires à "macro onglets seul"