XL 2019 Comment supprimer les en-têtes et pieds de pages en macro

Emilien07

XLDnaute Nouveau
Bonjour,

Je me présente, Emilien, nouvel utilisateur d'Excel avec macro.
Je cherche un code que j'intégrerai à mes macro, qui me permette de supprimer l'ensemble des en-têtes et pieds de pages. Que ce soit pour la première page et les suivantes.
J'ai cherché sur les forums mais je n'ai pas trouvé de code supprimant tout.

Auriez-vous la solution?
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Emilien07

Emilien07 (Bienvenue sur le forum)
A tester, en lançant la macro nommée test
VB:
Sub Supprimer(ws As Worksheet)
With ws.PageSetup
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
 End With
End Sub
Sub test()
Dim f As Worksheet
For Each f In Worksheets
Supprimer f
Next
End Sub
 

Emilien07

XLDnaute Nouveau
Bonsoir le fil, Emilien07

Emilien07 (Bienvenue sur le forum)
A tester, en lançant la macro nommée test
VB:
Sub Supprimer(ws As Worksheet)
With ws.PageSetup
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
End With
End Sub
Sub test()
Dim f As Worksheet
For Each f In Worksheets
Supprimer f
Next
End Sub

Bonjour,

Merci mais ça ne marche pas.
 

Staple1600

XLDnaute Barbatruc
Bonsoir

J'ai testé au boulot (Excel 2010)
Ça fonctionne
Je viens de tester chez moi (Excel 2013)
Cela fonctionne aussi.

Pour t'en convaincre, fais le test suivant
Dans un classeur vierge ne contenant qu'une feuille, lance la macro PrepareTEST
VB:
Sub PrepareTEST()
Dim ws As Worksheet
Sheets(1).Cells(1).Resize(10, 7) = Date
Sheets.Add.Cells(1).Resize(20, 7) = Time
Sheets.Add.Cells(1).Resize(30, 7) = Application.UserName
For Each ws In Worksheets
InsererEetPP ws
Next
End Sub
Sub InsererEetPP(ws As Worksheet)
Application.PrintCommunication = False
For Each ws In Worksheets
    With ws.PageSetup
        .LeftHeader = "&D"
        .CenterHeader = "&P"
        .RightHeader = "&T"
        .LeftFooter = "&A"
        .CenterFooter = ""
        .RightFooter = ""
    End With
Next
Application.PrintCommunication = True
End Sub
Fais alors un aperçu avant impression, les 3 feuilles ont bien des entêtes et des pied de pages
Ensuite lance la macro postée dans le message#2
Puis refais un aperçu avant impression, les 3 feuilles n'ont plus ni entêtes, ni pied de page.
 

Emilien07

XLDnaute Nouveau
Bonsoir

J'ai testé au boulot (Excel 2010)
Ça fonctionne
Je viens de tester chez moi (Excel 2013)
Cela fonctionne aussi.

Pour t'en convaincre, fais le test suivant
Dans un classeur vierge ne contenant qu'une feuille, lance la macro PrepareTEST
VB:
Sub PrepareTEST()
Dim ws As Worksheet
Sheets(1).Cells(1).Resize(10, 7) = Date
Sheets.Add.Cells(1).Resize(20, 7) = Time
Sheets.Add.Cells(1).Resize(30, 7) = Application.UserName
For Each ws In Worksheets
InsererEetPP ws
Next
End Sub
Sub InsererEetPP(ws As Worksheet)
Application.PrintCommunication = False
For Each ws In Worksheets
    With ws.PageSetup
        .LeftHeader = "&D"
        .CenterHeader = "&P"
        .RightHeader = "&T"
        .LeftFooter = "&A"
        .CenterFooter = ""
        .RightFooter = ""
    End With
Next
Application.PrintCommunication = True
End Sub
Fais alors un aperçu avant impression, les 3 feuilles ont bien des entêtes et des pied de pages
Ensuite lance la macro postée dans le message#2
Puis refais un aperçu avant impression, les 3 feuilles n'ont plus ni entêtes, ni pied de page.

Bonjour,

Merci, mais ça ne fonctionne pas, mais j'ai dû oublié certains détails.
Mon en-tête et pied de page sont sur la première page uniquement et ce sont des des images, pas de texte.
Les pages suivantes ont une numérotation de page, mais qui peuvent disparaître.
et dernier point, j'ai déjà une macro qui transforme mon devis en situation avec un bouton sur lequel je clique et je souhaite intégrer cette macro dans ma macro globale.
Afin que tout ce transforme en cliquant sur ce fameux bouton.

Je ne peux partir d'une feuille vierge car mon doc et déjà bien avancé en général. Il ne me reste plus que cette suppression d'en-tête et pied de page.
 

job75

XLDnaute Barbatruc
Bonjour Emilien07, salut JM,

Le code donné par JM efface aussi les images insérées dans les en-têtes et pieds de pages.

J'en conclus que ce dont vous parlez ne sont pas des en-têtes et pieds de pages mais simplement des lignes de la feuille de calcul.

Alors quels sont les numéros de ces lignes qu'il s'agit d'effacer ?

A+
 

Emilien07

XLDnaute Nouveau
Bonjour Emilien07, salut JM,

Le code donné par JM efface aussi les images insérées dans les en-têtes et pieds de pages.

J'en conclus que ce dont vous parlez ne sont pas des en-têtes et pieds de pages mais simplement des lignes de la feuille de calcul.

Alors quels sont les numéros de ces lignes qu'il s'agit d'effacer ?

A+
Bonjour,

Merci pour votre retour, je pense que ça marche oui mais pas chez moi je dois faire un truc qui ne colle pas.
Ce sont bien des images, je vous joins le fichier. Il s'agit de l'onglet "Devis" et la macro "situation".
Je ne vois pas comment l'intégrer pour que ça marche.
 

Pièces jointes

  • essai.zip
    970 KB · Affichages: 12

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Cette fois-ci, puisque testé sur ton fichier joint, c'est forcément bon chez toi aussi, non ? ;)
VB:
Sub EraZerHeadeRs()
';-) =>https://www.youtube.com/watch?v=dU7OqGCIcak
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = True
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Ci-dessous la version courte (qui semble également fonctionner)
(En tout cas, test OK sur ton fichier Exemple)
VB:
Sub EraZerHeadeRs_Light()
    With ActiveSheet.PageSetup
        .DifferentFirstPageHeaderFooter = True
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
End Sub

EDITION: Bonsoir job75
 
Dernière édition:

Emilien07

XLDnaute Nouveau
Bonjour,

Merci ça marche parfaitement et je sais pourquoi ça ne marchait pas avant.
Car la macro supprimait les en-têtes et pied de page sur l'onglet source et pas sur l'onglet créer.

Merci à vous tous, votre aide m'a été précieuse.
 

Discussions similaires

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390