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 :

Création de saut de page selon critère en VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut Création de saut de page selon critère en VBA
    Bonjour,
    J'ai un fichier excel qui comporte beaucoup de lignes et je voudrais qu'un saut de page s'insère dès que le texte "Solde final" apparaît.
    J'ai réalisé cette macro mais elle m'indique une erreur, si quelqu'un a une idée ou une meilleure macro, je débute donc:

    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 saut()
    Dim Solde As Range, Plage As Range
    Dim DerniereLigne As Long, Ligne As Long
    Application.ScreenUpdating = False
     
    DerniereLigne = Cells(60000, 1).End(xlUp).Row
    Set Plage = Range(Cells(1, 1), Cells(DerniereLigne, 1))
     
    ActiveSheet.ResetAllPageBreaks
    For Each Solde In Plage
        If Solde = "Solde final" Then
         Cells(Solde.Row + 1, 1).EntireRow.Select
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
        End If
     
    Next Solde
    End Sub

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut
    je suggere comme code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub saut()
    'retirer tout les sauts de page précédents
    ActiveSheet.ResetAllPageBreaks
    'trouver la derniere ligne, meme si elle dépasse 60 000
    derlgn = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    'boucler de 1 a la derniere ligne
    For i = 1 To derlgn
        'tester pour chaque ligne si la cellule contient le bon texte
        If Cells(i, 1) = "Solde final" Then
            'si oui, on insere un saut de page au-dessus de la ligne suivante
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(i + 1)
        End If
    Next i
    End Sub
    Etant plutot une débutante aussi, c'est loin d'etre garantit que mon code soit le plus optimisé et je ne sais pas débbuger facilement le tien pour trouver le point qui coince, mais au moins, ca débloque
    j'ai utilisé les formulation que j'utilise en général, ca ne veut pas dire que les tiennes étaient une mauvaise idée, juste pour aller vite, j'ai fais ce que je connais :p

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut
    Merci quand même mais ca me fait le même message d'erreur que ma macro:
    Variable objet ou variable de bloc with non définie.

    Si quelqu'un d'autre a une idée.
    Merci quand même emmanuelleC.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut
    j'avais testé le code avant de le poster, en 2007 ca fonctionne

    le if et le for fonctionne forcement sur toutes les versions

    si tu essayes juste ces code la (pour saucisonner le probleme)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test1()
    ActiveSheet.ResetAllPageBreaks
    End Sub
    Si ca bloque ici, pour corriger, essaye avec l'enregistreur de macro de voir ce qu'il fait quand tu lui demande de retirer un saut de page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test2()
    derlgn = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    msgbox derlgn
    End Sub
    Si ca bloque ici, regarde dans les tutos pour voir comment trouver la derniere ligne dans excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test3()
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(5)
    End Sub
    Si ca bloque ici, essaye avec l'entregistreur de macro de voir ce qu'il fait quand tu ajoutes un saut de page au dessus d'une ligne

    dans un autre sujet, je suis tombée sur cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWindow.View = xlPageBreakPreview ' Il est impératif que ce mode soit activé pour le contrôle des sauts
    je n'ai pas eu besoin de mettre ca en 2007, mais c'est peut-etre ca qui manque en 2003?

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut
    Impeccable, ton dernier code permet juste de passer en mode saut de page mais en fait ca m'arrange donc merci.
    Et le reste marche, je sais pas pourquoi ça me m'étais un message d'erreur.
    En tout cas merci à toi EmmanuelleC et bonne continuation sur le forum.


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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/02/2012, 12h25
  2. Saut de page selon une condition
    Par jeanluc0 dans le forum VBA Word
    Réponses: 1
    Dernier message: 06/01/2011, 19h19
  3. Macro pour insérer des sauts de page selon critère
    Par thibault1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/04/2010, 10h41
  4. Création d'un saut de page dans un état
    Par Oliv'83 dans le forum IHM
    Réponses: 14
    Dernier message: 13/08/2008, 11h14
  5. [Report 9i] Création de saut de page
    Par Process Linux dans le forum Oracle
    Réponses: 1
    Dernier message: 15/11/2005, 17h27

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