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

  1. #21
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Oui effectivement tu as raison Dominique.

  2. #22
    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

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Tu fais comme tu le sens, mais je changerais cette portion de code afin d'éviter les "Select" qui sont inutiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Lig = 4 To DerLig
            'Cells(Lig + 1, "B").Select
            If Cells(Lig + 1, "B").Count > 1 Then
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(Lig + Cells(Lig + 1, "B").Count + 1, "A")
                Lig = Lig + Cells(Lig + 1, "B").Count - 1
            End If
        Next Lig

  4. #24
    Invité
    Invité(e)
    Par défaut
    Casefayere 1000 mercis, c'est très gentil de ta part de m'avoir corrigé.

    Bonne continuation. Et dire que j'avais reçu un avertissement concernant cette discussion.

    Merci à tous.

    Cordialement,

    Cat

  5. #25
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    J'ajoute que les abc des boucles For/Next, ne pas toucher au compteur à l'intérieur, en l’occurrence la variable Lig

    En plus, c'est suffisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.HPageBreaks.Add Before:=.....

  6. #26
    Invité
    Invité(e)
    Par défaut
    Mon cher Mercatog,

    Ta réputation et tes compétences ne sont plus à démontrer. Je te confie que j'ai déjà inséré ton code dans mon fichier.

    Je te remercie beaucoup mais je n'ai pas bien compris ton dernier message. Et par conséquent, je ne sais pas ce que je dois corriger
    pour respecter les règles des boucles For/Next que je ne connais pas sur le bout des doigts.

    Merci beaucoup.

    Cordialement,

    Cat

  7. #27
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par casefayere Voir le message
    Tu fais comme tu le sens, mais je changerais cette portion de code afin d'éviter les "Select" qui sont inutiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Lig = 4 To DerLig
            'Cells(Lig + 1, "B").Select
            If Cells(Lig + 1, "B").Count > 1 Then
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(Lig + Cells(Lig + 1, "B").Count + 1, "A")
                Lig = Lig + Cells(Lig + 1, "B").Count - 1
            End If
        Next Lig
    J'ai suivi ton conseil, mais le code ne fonctionne pas. j'ai donc gardé le "select"

    cordialement,

  8. #28
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mercatog Voir le message
    J'ajoute que les abc des boucles For/Next, ne pas toucher au compteur à l'intérieur, en l’occurrence la variable Lig

    En plus, c'est suffisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.HPageBreaks.Add Before:=.....
    Option Explicit

    Sub SautDePage()
    'saut de page par rapport à des cellules fusionnées
    Dim DerLig, Lig
    ActiveSheet.ResetAllPageBreaks ' raz
    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
    Si j'ai bien compris pour la boucle (à l'intérieur d'une boucle For/Next), mais ça ne fonctionne pas parfaitement, juste après le 1er groupe de cellules fusionnées sont insérés des sauts de page au sein du 2ème groupe de cellules fusionnées et ainsi de suite.

    j'ai executé au pas à pas, j'ai constaté que le curseur sauter Lig=Lig+selection.count-1 et en la supprimant le résultat est mauvais.

    Merci.

    Cordialement,

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    chez moi mon code fonctionne mais de toutes façon le code à mercatog est meilleur, il suffit d'ajouter mon code qui retire la fusion au départ afin de ne pas avoir de problème du style "impossible de modifier une cellule fusionnée et plutôt que de te référer à ActiveSheet, prends le nom de la feuille, je remets ci-dessous les codes basés sur le fichier exemple que tu as communiqué, contentes-toi de copier/coller ces codes.
    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 Fusion()
    Dim LastLig As Long, i As Long
    Application.ScreenUpdating = False
    nonFusion
    With Worksheets("Feuil1")
      .PageSetup.PrintTitleRows = "$2:$4" 'entete tableau
      .ResetAllPageBreaks ' raz saut
      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)
        End If
      Next i
    End With
    End Sub
    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
    Sub nonFusion()
    Dim Dl As Range, Deb As Range, cel As Range
    With Sheets("Feuil1") 'à adapter au nom de la feuille
      .ResetAllPageBreaks ' raz
      Set Dl = .Range("B" & .Rows.Count).End(xlUp)
      For Each cel In .Range("B5", Dl)
        If cel.MergeCells = True Then
          Set Deb = .Range(cel.MergeArea.Address)
          cel.MergeCells = False
          Deb = .Range(Split(Deb.Address, ":")(0))
        End If
      Next cel
    End With
     
    End Sub

+ 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