Macro afficher tous les onglets sur un seul

Résolu
james405 Messages postés 173 Statut Membre -  
james405 Messages postés 173 Statut Membre -
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

20 réponses

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Au passage, qu'avez-vous déjà réaliser comme macro pour résoudre votre problème ?
    0
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. james405 Messages postés 173 Statut Membre
     
    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
  7. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  8. james405 Messages postés 173 Statut Membre
     
    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
  9. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  10. james405 Messages postés 173 Statut Membre
     
    en ecrivant asa dans ds la celule A1?? et encrivant des chose dans la colonne A a la fin de la page?
    0
  11. james405 Messages postés 173 Statut Membre
     
    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
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
    2. james405 Messages postés 173 Statut Membre
       
      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
    3. james405 Messages postés 173 Statut Membre
       
      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
  12. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  13. james405 Messages postés 173 Statut Membre
     
    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
  14. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  15. james405 Messages postés 173 Statut Membre
     
    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
  16. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  17. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  18. james405 Messages postés 173 Statut Membre
     
    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
  19. 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
  20. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Que de temps passé depuis 2010. Pouvez-vous mettre un fichier exemple sur https://www.cjoint.com/ et poster le lien ?

    0
  21. james405 Messages postés 173 Statut Membre
     
    Bonjour,

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