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 :

Sauts de page automatiques [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 25
    Par défaut Sauts de page automatiques
    Bonjour le Forum,

    J’aimerais pouvoir effacer automatique tous les sauts de page d’une feuille particulière (exemple : OVP), puis pouvoir insérer toujours automatiquement et dans la même feuille, des sauts de page horizontaux lorsqu'une valeur (par exemple SPG) est saisie dans la colonne H, avec une hauteur de ligne à 25 à chaque fois que la valeur est trouvée, mais la macro que j'ai créée ne fonctionne pas bien et génère des sauts de page verticaux et horizontaux.

    D'avance merci et cordiales salutations.

    Momo

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Je suppose que tu as utilisé l'enregistreur de macro. De ce fait, comme tu as fais une recherche d'un texte Excel t'a placé sur une cellule spécifique et lors de l'insertion du saut de page, il te met effectivement un saut de page horizontal et un vertical.

    Dans ton code, tu dois avoir les 2 lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
        ActiveWindow.SelectedSheets.VPageBreaks.Add Before:=ActiveCell
    Mets la seconde en commentaire ou supprime là. c'est cette ligne qui met le saut de page vertical.

    En espérant que cela puisse t'aider.

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 25
    Par défaut
    Re salut,

    Je ne suis vraiment pas un pro du VBA et non seulement, j'ai des sauts de pages verticaux où il ne faut pas, mais je ne sais pas trop comment faire pour que la recherche continue et fasse les sauts de pages à l'horizontal avec la hauteur de ligne que je souhaiterais avoir.

    Bref, je nage ... et je vais essayer de "coller" des 2 lignes dans mon code !

    Merci quand même et bonne après-midi à toi.

    Cordialement.

    Momo

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Salut.

    Une autre suggestion :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub SautsDePageH()
     
     'par Docmarti 2016/09/12
     
        Dim f As Worksheet
     
        Dim ProchainNumeroPageBreak As Long
     
        Dim Ligne As Long
     
        Dim dern As Long
     
        Dim r As Range
     
        Set f = ThisWorkbook.ActiveSheet
     
        ActiveWindow.View = xlPageBreakPreview
     
        f.ResetAllPageBreaks
     
        ProchainNumeroPageBreak = 1
        Ligne = 0
        dern = f.Cells(Rows.Count, 1).End(xlUp).Row + 1
     
        Set r = f.Range("A2:A" & dern)
        r.RowHeight = 25
     
        While Ligne <= dern
     
            Ligne = Ligne + 1
     
            If f.Cells(Ligne, "H").Value = "SPG" Then
     
               If ProchainNumeroPageBreak > f.HPageBreaks.Count Then
     
                   ActiveSheet.HPageBreaks.Add Before:=Rows(Ligne + 1)
     
               Else
     
                   Set f.HPageBreaks(ProchainNumeroPageBreak).Location = f.Cells(Ligne + 1, 1)
                   ProchainNumeroPageBreak = ProchainNumeroPageBreak + 1
     
               End If
     
            End If
     
     
           If ProchainNumeroPageBreak < f.HPageBreaks.Count Then
     
             If f.HPageBreaks(ProchainNumeroPageBreak).Location.Row < Ligne + 1 Then
               ProchainNumeroPageBreak = ProchainNumeroPageBreak + 1
             End If
     
           End If
     
      Wend
     
     ActiveWindow.View = xlNormalView
     
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 25
    Par défaut
    Salut Docmarti,

    Je viens d'essayer ta proposition et c'est génial, car je n'ai qu'à faire un copier-coller pour le code ! Mais il y a un gros hic !

    Ta macro génère bien un saut de page, mais change la hauteur de toutes les lignes à 25, alors que la hauteur devrait s'appliquer seulement à la première ligne qui se trouve juste après le saut de page.

    Si tu as encore un peu de temps à me consacrer, je mets un fichier en annexe que j'accompagne déjà d'un grand MERCI pour avoir pris le temps de m'aider en me proposant ton code.

    Belle journée à toi et à bientôt, ... j'espère !

    Cordialement.

    Momo
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    J'ai modifié le code fourni par Docmarti selon ta demande.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub SautsDePageH()
     
     'par Docmarti 2016/09/12
     
        Dim f As Worksheet
     
        Dim ProchainNumeroPageBreak As Long
     
        Dim Ligne As Long
     
        Dim dern As Long
     
        Dim r As Range
     
        Set f = ThisWorkbook.ActiveSheet
     
        ActiveWindow.View = xlPageBreakPreview
     
        f.ResetAllPageBreaks
     
        ProchainNumeroPageBreak = 1
        Ligne = 0
        dern = f.Cells(Rows.Count, 1).End(xlUp).Row + 1
     
        'Set r = f.Range("A2:A" & dern)
        'r.RowHeight = 25
     
        While Ligne <= dern
     
            Ligne = Ligne + 1
     
            If f.Cells(Ligne, "H").Value = "SPG" Then
     
               If ProchainNumeroPageBreak > f.HPageBreaks.Count Then
     
                   ActiveSheet.HPageBreaks.Add Before:=Rows(Ligne + 1)
                   Cells(Ligne + 1, 1).RowHeight = 25
     
               Else
     
                   Set f.HPageBreaks(ProchainNumeroPageBreak).Location = f.Cells(Ligne + 1, 1)
                   ProchainNumeroPageBreak = ProchainNumeroPageBreak + 1
     
               End If
     
            End If
     
     
           If ProchainNumeroPageBreak < f.HPageBreaks.Count Then
     
             If f.HPageBreaks(ProchainNumeroPageBreak).Location.Row < Ligne + 1 Then
               ProchainNumeroPageBreak = ProchainNumeroPageBreak + 1
             End If
     
           End If
     
      Wend
     
     ActiveWindow.View = xlNormalView
     
    End Sub
    C'est la ligne en rouge qui fait je job.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer saut de page automatique
    Par lecteur1001 dans le forum Mise en forme
    Réponses: 12
    Dernier message: 23/10/2009, 12h58
  2. saut de page automatique
    Par akmer dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/05/2008, 10h44
  3. Réponses: 2
    Dernier message: 18/04/2008, 22h41
  4. Saut de page automatique
    Par calagan99 dans le forum Word
    Réponses: 4
    Dernier message: 11/04/2008, 07h30
  5. Problème saut de page automatique du "chapter"
    Par polomim dans le forum Mise en forme
    Réponses: 2
    Dernier message: 10/11/2006, 14h30

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