Macro afficher tous les onglets sur un seul

Résolu/Fermé
james405 Messages postés 154 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014 - 21 mai 2010 à 16:05
james405 Messages postés 154 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014 - 16 avril 2014 à 10:54
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

Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
23 mai 2010 à 18:38
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 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
23 mai 2010 à 21:05
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
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
21 mai 2010 à 22:37
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
21 mai 2010 à 22:57
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
22 mai 2010 à 11:45
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
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
Modifié par Le Pingou le 22/05/2010 à 16:50
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
23 mai 2010 à 12:10
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
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
23 mai 2010 à 13:52
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
23 mai 2010 à 14:33
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
26 mai 2010 à 09:24
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
26 mai 2010 à 09:57
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
26 mai 2010 à 10:48
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
26 mai 2010 à 11:47
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
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
26 mai 2010 à 17:07
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
27 mai 2010 à 11:46
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
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
27 mai 2010 à 14:03
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
28 mai 2010 à 15:29
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
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
Modifié par Le Pingou le 28/05/2010 à 21:22
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 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 28/05/2010 à 21:31
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
1 juin 2010 à 09:38
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
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
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 1 454
6 avril 2014 à 18:23
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 mercredi 27 janvier 2010 Statut Membre Dernière intervention 10 juin 2014
16 avril 2014 à 10:54
Bonjour,

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