Déploiement entete et pieds de page sur plusieurs feuilles
Bonjour à tous,
Je suis nouveau sur le forum mais je viens souvent m'enrichir en connaissance sur Excel.
Je suis actuellement en train de faire un macro pour me simplifier la vie (je débute en macro mais je comprend assez rapidement) mais je bloque sur le fonctionnement de ma macro.
voici mes besoins.
Je voudrais faire une macro me permettant de récupérer les données de plusieurs cellules identifiés sur une feuille (page de garde) et diffuser ces données dans les entêtes et pieds de page des autres feuilles sauf pour quelques unes identifiés également (la page de garde nommé "PDG" et "XselectX" qui sera une feuille avec des boutons de sélection).
J'ai donc effectué ce code qui ne plante pas mais qui ne marche par non plus.
Private Sub tetes_de_pages_Click()
Dim WorkRng1 As Range
Dim WorkRng2 As Range
Dim WorkRng3 As Range
Dim WorkRng4 As Range
Dim WorkRng5 As Range
Dim WorkRng6 As Range
On Error Resume Next
Set WorkRng1 = Sheets("PDG").Selection.Range("AL2")
Set WorkRng2 = Sheets("PDG").Selection.Range("AM2")
Set WorkRng3 = Sheets("PDG").Selection.Range("AO2")
Set WorkRng4 = Sheets("PDG").Selection.Range("AL4")
Set WorkRng5 = Sheets("PDG").Selection.Range("AM4")
Set WorkRng6 = Sheets("PDG").Selection.Range("AN4")
For Each Worksheet In Application.ActiveWorkbook.Worksheets
If Worksheet.Name <> "PDG" And "XselectX" Then
Worksheet.PageSetup.LeftHeader = WorkRng1.Range("AL2").Value
Worksheet.PageSetup.CenterHeader = WorkRng2.Range("AM2").Value
Worksheet.PageSetup.RightHeader = WorkRng3.Range("AO2").Value
Worksheet.PageSetup.LeftFooter = WorkRng4.Range("AL4").Value
Worksheet.PageSetup.CenterFooter = WorkRng5.ange("AM4").Value
Worksheet.PageSetup.RightFooter = WorkRng6.Range("AN4").Value
End If
Next
End Subsi quelqu'un pourrait m'éclairer sur mon erreur.Merci par avance et bonne soirée à tous.
Bonjour Laugau77 et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.
Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)
Concernant votre demande,
1) Vous ne devez pas utiliser d'instruction VBA comme variable (Worksheet)
2) Un double test se fait avec double instruction
Voici le code
Private Sub tetes_de_pages_Click()
Dim Sht As Worksheet
Dim LibEnt(6) As String
' Avec l'objet conteneur
With Sheets("PDG")
LibEnt(1) = .Range("AL2")
LibEnt(2) = .Range("AM2")
LibEnt(3) = .Range("AO2")
LibEnt(4) = .Range("AL4")
LibEnt(5) = .Range("AM4")
LibEnt(6) = .Range("AN4")
End With
' Pour chaque feuille du classeur
For Each Sht In ThisWorkbook.Worksheets
' Si le nom est différent de XX ou différent de YY
'If Sht.Name <> "PDG" And Sht.Name <> "XselectX" Then
' Ou alors en plus simple
If InStr(1, "PDG,XselectX", Sht.Name) = 0 Then
' Avec l'objet PageSetup de la feuille
With Sht.PageSetup
.LeftHeader = LibEnt(1)
.CenterHeader = LibEnt(2)
.RightHeader = LibEnt(3)
.LeftFooter = LibEnt(4)
.CenterFooter = LibEnt(5)
.RightFooter = LibEnt(6)
End With
End If
Next
End SubMerci pour votre participation
Cordialement
Bonjour BrunoM45
Merci pour ton retour et ton aide sur la macro. cela fonctionne super bien.
Pour mon apprentissage, peux tu me dire les significations et fonctions des éléments du code ?
- LibEnt
- InStr
En te remerciant par avance pour ton retour.
Re,
"LibEnt" est une variable tableau pour mémoriser les entêtes et pied de page de la feuille "PDG"
IntStr() est une fonction VBA qui permet de rechercher un terme dans une expression texte et qui retourne l'emplacement ou le terme est trouvé
J'espère que ce sera plus clair
A+