Macro afficher tous les onglets sur un seul

Résolu
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   -  
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

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

A voir également:

20 réponses


 
Bonjour,
Non ce n'est pas cela et de plus j'ai une erreur d'exécution 9.
Je ne vais pas continuer à plancher sur votre code, désolé.

Désolé, comme le mien ne fonctionne pas chez vous, je m'arrête ici.
4
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut tout le monde,

J'ai failli intervenir dans la discussion, mais lorsque notre ami Le Pingou que je salut, à donné un excellent code qui rempli exactement les fonctions du demandeur
« je souhaite réaliser une macro me permettant de mettre le contenu de x onglet sous un même onglet »
Je l'ai suivi de loin. Les exigences sont faciles, la critique est aisée les compliments plus difficiles.
Il suffirait de modifier deux lignes du code pour que les largeurs colonnes soit également transférer.
Je n'en dirais pas plus pour respecter le travail des bénévoles qui animent brillamment ce forum de renom
1

 
Bonjour,
Au passage, qu'avez-vous déjà réaliser comme macro pour résoudre votre problème ?
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
bonjour

Le petit hic est que je soiuhaite inserer sur cette feuille recap des saut de page forcés

Un tout petit hic, car il te suffit d'ajouter ceci avant la copie d'un nouvel onglet en positionnant "lig" avec le numéro de ligne où tu vas mettre ton prochain onglet.

    ActiveSheet.HPageBreaks.Add Before:=Cells(lig, 1)
0

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

Posez votre question
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Gbinform !

Le problème c'est que la taille du fichier peut varier ! donc on ne peut pas définir de ligne ou sera l'onglet suivant ! il faudrait le positionner automatiquement à la fin de l'onglet ! (ce que je ne sais pas faire !)

En macro, je pense faire qqch du style
For each ws in wb
Range ("A1:Zxx ).copy Worksheets("récap").range("A65536").End(xlUp).offset(0,1)
Next ws

(Pour info je débute en macro!)

Zxx serait la plage A 1 jusqu'a la dernière ligne du document en question!
0

 
Bonjour,
Essayer la procédure qui suit, l'onglet [récap] qui reçoit l'ensemble des données des autres onglets y compris l'instruction de gbinforme (merci) pour le saut de page:
Sub Rassembler()  
Dim sh As Variant  
Dim dli As Long, pli As Long  
Application.ScreenUpdating = False  
pli = 1  
Sheets("récap").Cells.Clear  
Sheets("récap").ResetAllPageBreaks  
For Each sh In Worksheets  
    If sh.Name <> "récap" Then  
        dli = Sheets(sh.Name).Cells(Columns(1).Cells.Count, 1).End(xlUp).Row  
        Sheets(sh.Name).Range("A1:Z" & dli).Copy Destination:=Sheets("récap").Range("A" & pli)  
        pli = pli + dli  
        ActiveSheet.HPageBreaks.Add Before:=Cells(pli, 1)  
    End If  
Next sh  
Sheets("récap").Range("A1").Select  
Application.ScreenUpdating = True  
End Sub

Salutations.
Le Pingou
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour le pingou et merci pour ta réponse !!

La macro que tu m'a donné ne fait rien .. elle ne tourne même pas sur les page..

Pour l'instant, cette macro marche, mais j'aimerais qu'en plus elle copie le format (notamment couleuyr et hauteur de ligne) et la valeurs (à cause des référencs !! ),

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

Merci pour votre aide,

James
0

 
Bonjour,
La macro que tu m'a donné ne fait rien .. elle ne tourne même pas sur les page
Comme je teste toujours se que je propose, c'est étrange que rien ne se passe.

C'est vraiment bizarre, j'ais chargé votre procédure et je n'obtiens aucun résultat !
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
en ecrivant asa dans ds la celule A1?? et encrivant des chose dans la colonne A a la fin de la page?
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour MIke et les autres!

Ma réponse était effectivement un peu rustre et je m'en excuse!

Le résultat est pour moi toujours identique cependant ... Aucun des onglets ne se copie sur ma feuil récap avec la macro de pingou ... (Ceci n'est pas une critique mais un résultat).


Merci quand même pour votre aide,

James
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
bonjour,

C'est sans doute parce sue tu n'as aucune saisie en colonne 1 (A) il te faut donc changer le numéro de colonne test
        dli = Sheets(sh.Name).Cells(Columns(1).Cells.Count, 1).End(xlUp).Row  
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Gbinforme !

Effectivement, ma colonne A est vide, en testant sur la B, tout fonctionne !

Pour garder les formet de contrôle et les hauteur de ligne dans ces copier, que dois-je ajouter ?
J'ai essayé avec .PasteSpecial Paste:=xlValues
.PasteSpecial Paste:=xlFormats, mais cela ne conserve pas la hauteur de mes lignes !

Merci pour ton aide !

James
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Pour information, je ne peux pas règler la heuteur des cellule avec un autofix, car certaines sont fusionnées, il faudrait que je conserve la hauteur des lignes de départ (celles que je copie).
0

 
Bonjour,
Une idée est de copier les lignes complètes au lieu de la plage et de cette manière la hauteur de lignes devrait-être respectée !
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à tous,

L'idée de copier par ligne est bonne, mes hauteur sont belles et bien conserver.

Le nouveau problème est que mes checkbox ne se reprennent pas .. Une idée?
0

 
Bonjour,
Si vous parlez de la forme [zone de texte] il est nécessaire que sa propriété de positionnement soit sur [Déplacer ........dimensionner avec les cellules]
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à tous, j'ai finalement trouvé une solution que je laisse à disposition opur ceux qui aurait besoin :

Sub Regroupe()
Dim Lg%, Lg2&
Application.ScreenUpdating = False
Sheets("récap").Range("a1") = "Début récap"

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

vooila !!

Merci pour votre aide !!

James
0

 
Bonjour,
J'ai pris la peine de tester votre code.
Toutefois si une [zone de texte] dont sa propriété de positionnement est sur [Ne pas déplacer ou dimensionner avec les cellules] n'est pas prise en compte par votre code. Ne sera donc pas copier et coller sur [récap].
Dans le cas contraire c'est en odre.
C'est la propriété de la forme qui est déterminante.
Salutations.
Le Pingou
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Tu as mis en début de procédure un

Application.ScreenUpdating = false

il faut mettre en fin de procédure

Application.ScreenUpdating = True

pour rétablir ces fonctions Excel
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, pas de problème pour moi u coté de la propriété de forme tout se copie !

Effectivement Mike, je n'ai pas rétablie le screenupdating !

Merci pour vos commentaires ,


James 405
0
cyril
 
Bonjour,

j'ai testé votre formule pour un cas identique
J'ai un fichier Excel avec plusieurs onglets de calcul 1 par jour. Je souhaiterais que tous ces onglets soient copiés dans un seul onglet ou j'aurais alors tout le mois ce que me permettra j'intégrer toutes les valeurs en une fois dans mon logiciel de comptabilité. Actuellement je dois faire un copier-coller pour chaque onglet

Sub Rassembler()
Dim sh As Variant
Dim dli As Long, pli As Long
Application.ScreenUpdating = False
pli = 1
Sheets("récap").Cells.Clear
Sheets("récap").ResetAllPageBreaks
For Each sh In Worksheets
If sh.Name <> "récap" Then
dli = Sheets(sh.Name).Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
Sheets(sh.Name).Range("A1:Z" & dli).Copy Destination:=Sheets("récap").Range("A" & pli)
pli = pli + dli
ActiveSheet.HPageBreaks.Add Before:=Cells(pli, 1)
End If
Next sh
Sheets("récap").Range("A1").Select
Application.ScreenUpdating = True
End Sub

Les tableaux se copient bien par contre les valeurs ne sont pas reprises tous les tableaux sont là mais les cases sont vides.
Je pense qu'en collant juste les valeurs et pas les formules ça devrait marcher.

Par contre je ne sais pas comment programmer cela.

Mes connaissances en VBA sont = à 0

Merci d'avance

Cyril
0

 
Bonjour,
Que de temps passé depuis 2010. Pouvez-vous mettre un fichier exemple sur https://www.cjoint.com/ et poster le lien ?

0
james405 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Comme le dit pingou un fichier excel sur cjoint nous aiderait a comprendre ton probleme...
0