Insérer saut de page avant valeur
Guy_L
Messages postés
176
Date d'inscription
Statut
Membre
Dernière intervention
-
Mike-31 Messages postés 18405 Date d'inscription Statut Contributeur Dernière intervention -
Mike-31 Messages postés 18405 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai mis cette macro dans mon fichier:
Si je remplace "ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell" par msgbox = "tartempion", ça marche. C'est sur cette ligne dque le débogueur m'indique un problème et arrête la macro.
Avez-vous une idée du problème ?
J'ai mis cette macro dans mon fichier:
Sub saut()mais les sauts de page se mettent n'importe où et pas au-dessus des valeurs "Go" comme souhaité
'
' Macro saut de page
'
For Each Cell In Range("A:A")
If Cell.Value = "Go" Then
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End If
Next
End Sub
Si je remplace "ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell" par msgbox = "tartempion", ça marche. C'est sur cette ligne dque le débogueur m'indique un problème et arrête la macro.
Avez-vous une idée du problème ?
A voir également:
- Insérer saut de page avant valeur
- Comment supprimer une page sur word avec un saut de page ? - Guide
- Insérer video powerpoint - Guide
- Insérer signature word - Guide
- Comment remettre ma page d'accueil comme avant - Guide
- Insérer liste déroulante excel - Guide
5 réponses
Bonjour,
dans un module colle ce code
Option Explicit
Dim M As Range
Dim i As Integer
Dim k, e As String
Sub SautDePageAvant_Go()
On Error Resume Next
Application.ScreenUpdating = False
With ActiveSheet
Set M = .Columns(1).Find("Go")
If M Is Nothing Then Exit Sub
e = M.Address
Do
.HPageBreaks.Add M
Set M = .Columns(1).FindNext(M)
Loop While Not M Is Nothing And M.Address <> e
End With
Application.ScreenUpdating = True
End Sub
et peut être auras tu besoin d'un code pour supprimer les sauts, dans ce cas ajoute ce code
Sub supprimeSautPage()
On Error Resume Next
k = ActiveSheet.HPageBreaks.Count
For i = 1 To k
ActiveSheet.HPageBreaks(1).Delete
Next
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
dans un module colle ce code
Option Explicit
Dim M As Range
Dim i As Integer
Dim k, e As String
Sub SautDePageAvant_Go()
On Error Resume Next
Application.ScreenUpdating = False
With ActiveSheet
Set M = .Columns(1).Find("Go")
If M Is Nothing Then Exit Sub
e = M.Address
Do
.HPageBreaks.Add M
Set M = .Columns(1).FindNext(M)
Loop While Not M Is Nothing And M.Address <> e
End With
Application.ScreenUpdating = True
End Sub
et peut être auras tu besoin d'un code pour supprimer les sauts, dans ce cas ajoute ce code
Sub supprimeSautPage()
On Error Resume Next
k = ActiveSheet.HPageBreaks.Count
For i = 1 To k
ActiveSheet.HPageBreaks(1).Delete
Next
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Merci
Dans ma macro, il manquait juste cell.select
Sub saut()
'
' Macro saut de page
'
For Each Cell In Range("A:A")
If Cell.Value = "Go" Then
cell.select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End If
Next
End Sub
merci quand même
Dans ma macro, il manquait juste cell.select
Sub saut()
'
' Macro saut de page
'
For Each Cell In Range("A:A")
If Cell.Value = "Go" Then
cell.select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End If
Next
End Sub
merci quand même
Re,
ta macro tourne mal, dans le même ordre d'idée teste ce code
Sub Saut_Page_Avant_Go()
On Error Resume Next
Dim i As Variant
On Error Resume Next
Application.ScreenUpdating = False
For i = 1 To 50
If Range("A" & i) = "Go" Then ActiveSheet.HPageBreaks.Add Before:=Range("A" & i)
Next
Application.ScreenUpdating = True
End Sub
et pour supprimer tes sauts
Sub supprimeSautPage()
On Error Resume Next
ActiveSheet.ResetAllPageBreaks 'sup tous les sauts
End Sub
ta macro tourne mal, dans le même ordre d'idée teste ce code
Sub Saut_Page_Avant_Go()
On Error Resume Next
Dim i As Variant
On Error Resume Next
Application.ScreenUpdating = False
For i = 1 To 50
If Range("A" & i) = "Go" Then ActiveSheet.HPageBreaks.Add Before:=Range("A" & i)
Next
Application.ScreenUpdating = True
End Sub
et pour supprimer tes sauts
Sub supprimeSautPage()
On Error Resume Next
ActiveSheet.ResetAllPageBreaks 'sup tous les sauts
End Sub
"ta macro tourne mal" ah ? chez moi ça marche bien
Qu'est-ce qui ne va pas ?
Merci pour tout le reste ;-)
Qu'est-ce qui ne va pas ?
Merci pour tout le reste ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
elle est lente, tourne en 0,27 à 0,30 seconde mon dernier code entre 0,03 et 0,05 seconde
teste ton code
Private Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
Sub ChronomètrerUnCode()
Dim Debut As Currency, Fin As Currency, Freq As Currency
QueryPerformanceCounter Debut
call saut 'appelle la macro
QueryPerformanceCounter Fin
QueryPerformanceFrequency Freq
MsgBox "Durée de la procédure = " & Format(((Fin - Debut) / Freq), "0.00") & " s"
End Sub
elle est lente, tourne en 0,27 à 0,30 seconde mon dernier code entre 0,03 et 0,05 seconde
teste ton code
Private Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
Sub ChronomètrerUnCode()
Dim Debut As Currency, Fin As Currency, Freq As Currency
QueryPerformanceCounter Debut
call saut 'appelle la macro
QueryPerformanceCounter Fin
QueryPerformanceFrequency Freq
MsgBox "Durée de la procédure = " & Format(((Fin - Debut) / Freq), "0.00") & " s"
End Sub