IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Saut de page après chaque groupe de cellules fusionnées [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour Cathodique, casefayere, clementmarcotte et le forum.

    Une autre proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub HP()
    Dim LastLig As Long
    Dim c As Range
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")
        .PageSetup.PrintTitleRows = "$2:$4"
        .ResetAllPageBreaks
     
        LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
        Set c = .Range("B" & LastLig).MergeArea(1, 1)
        Do While c.Row > .Range("B4").MergeArea.Count + 4
            .HPageBreaks.Add Before:=c
            Set c = c.Offset(-1, 0).MergeArea
        Loop
        Set c = Nothing
    End With
    End Sub
    EDIT: Valable même si un groupe contient une seule ligne (pas de fusion)

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour mercatog,

    Ta solution pour les sauts de page me plait (toujours aussi efficace), vois-tu une solution plus rationnelle que la mienne quant à créer les cellules fusionnées ?

    Ce n'est pas pour moi mais ça instruit toujours,

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour Dominique

    Pour fusionner et appliquer les sauts de pages, je ferai à la PCMan

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Fusion()
    Dim LastLig As Long, i As Long
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")
        LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = LastLig To 5 Step -1
            If .Range("B" & i) = .Range("B" & i - 1) Then
                .Range("B" & i - 1).ClearContents
                .Range("B" & i - 1 & ":B" & i).Merge
            Else
                If i > 5 Then .HPageBreaks.Add Before:=.Range("B" & i - 1)
            End If
        Next i
    End With
    End Sub

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Merci,



    sauf que j'ai remarqué, d'après le fichier envoyé par cathodique que tes sauts de page se retrouvent décalés, je corrigerais donc cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                If i > 5 Then .HPageBreaks.Add Before:=.Range("B" & i)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Oui effectivement tu as raison Dominique.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour Mercatog, Casefayere, Clementmarcotte, le forum,

    Rien à redire, ça confirme ce que je pense Mercatog tu es un AS. Casefayere ne démérite pas non plus.

    Quant à Clementmarcotte, il a le mérite de m'avoir incité à orienter mes recherches ailleurs que sur Developpez.com.

    Et je dois dire que mes récentes recherches ont été payantes. je n'ai effectué que quelques modifications.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub SautDePage()
    'saut de page par rapport à des cellules fusionnées
    Dim DerLig, Lig
     
    ActiveSheet.PageSetup.PrintTitleRows = "$2:$4" 'entete tableau
    ActiveSheet.ResetAllPageBreaks ' raz saut
     
        DerLig = Range("B" & Rows.Count).End(xlUp).Row
     
        For Lig = 4 To DerLig
            Cells(Lig + 1, "B").Select
            If Selection.Count > 1 Then
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(Lig + Selection.Count + 1, "A")
                Lig = Lig + Selection.Count - 1
            End If
        Next Lig
    End Sub
    Je vous remercie tous autant que vous êtes. Toute ma gratitude.

    Cordialement,

    Cat

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/03/2010, 18h12
  2. Réponses: 2
    Dernier message: 18/04/2008, 21h41
  3. Réponses: 9
    Dernier message: 30/07/2007, 16h56
  4. Pb de saut de page lié au groupe
    Par odreymc dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 15/11/2006, 08h59
  5. Saut de page et fonction Group BY
    Par ramoucho17 dans le forum iReport
    Réponses: 1
    Dernier message: 11/10/2006, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo