Microsoft 365 VBA: Insérer un logo différent dans l'entête entre la 1ère page et les suivantes

Emile63

XLDnaute Junior
Bonjour à tous,
Je cherche a insérer par VBA des logos sur mon classeur, et qu'ils soient différenciés entre la première page et les suivantes.
Je brode autour du code ci-après, mais les logos s'insèrent à l'entier du document et non pas selon mon besoin.. :(
J'ai vu qu'il existe: PageSetup.FirstPage.RightHeader mais je ne sais pas en tirer partie.
- Est-ce que quelqu'un pourrait me venir en aide ?
Je vous remercie d'avance pour votre aide et vous souhaite une très bonne journée.

--------------------------------------------------
MonChemin = "C:\Users\xxxx\Pictures\"
MonPetitLogo = "Logo_300dpi.JPG"
MonGrandLogo = "Logo Grand.jpg"
EmplacementMonPetitLogo = MonChemin & MonPetitLogo
EmplacementMonGrandLogo = MonChemin & MonGrandLogo
Application.PrintCommunication = False
With ActiveSheet.PageSetup.RightHeaderPicture ' ici: ActiveSheet.PageSetup.FirstPage.RightHeader ne fonctionne pas
.Filename = EmplacementMonGrandLogo
.Height = 51 'hauteur
.Width = 123.75 'largeur
End With
ActiveSheet.PageSetup.RightHeader = "&G"' A quoi sert exactement ce code et est-ce qu'on ne peur pas l'intégrer directement dans le With ci-dessus?

ActiveSheet.PageSetup.LeftHeaderPicture.Filename = EmplacementMonPetitLogo
With ActiveSheet.PageSetup.LeftHeaderPicture
.Height = 24 'hauteur
.Width = 17.25 'largeur
End With

ActiveSheet.PageSetup.LeftHeader = "&G"'actualise l'en-tête
Application.PrintCommunication = True
ActiveWindow.SelectedSheets.PrintPreview
-------------------------------------------------------------------------------------------------------------
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Emile,
En VBA je ne sais pas, mais l'enregistreur de macro devrait résoudre le problème.
Dans Entête/Pied de page, cocher Première page différente.
Dans la fenêtre entête personnalisée vous avez deux onglets Entête et Premier entête.

2.jpg


Ce qui en VBA semble correspondre à deux paramètres :
VB:
With ActiveSheet.PageSetup
  ...
  ...
  .CenterHeader = "AUTRE PAGES"                     ' Entete de toutes les pages'
  ...
  ...
  .FirstPage.CenterHeader.Text = "PREMIERE PAGE"  ' Entete spécifique à la première page'
  ...
End With
 

Emile63

XLDnaute Junior
Bonjour Silvanu et merci pour ton aide.

avec l'enregistreur, il s'enregistgre ceci:

ActiveSheet.PageSetup.FirstPage.RightHeader.Picture.Filename = _
"C:\Users\xxxxx\Pictures\Saved Pictures\Logoxx.jpg"
ExecuteExcel4Macro "(17,45,,141.75)" '<-- Ici
...
Le logo s'insert, mais il prend toute la page, et je n'arrive pas à le redimensionner
Quand je ré-éxéecute la macro enregistrée elle se plante "ici"

Je ne suis pas spécialiste (loin de là) et ne comprend pas pourquoi VBA enregistre en Excel4Macro...
Mais quand j'essaie de redimensionner avec "With" Ca plante aussi...

With ActiveSheet.PageSetup.FirstPage.RightHeader
.Filename = EmplacementMonGrandLogo
.Height = 51 'hauteur
.Width = 123.75 'largeur
End With
 

Emile63

XLDnaute Junior
A priori c'est l'insertion de mon image qui créer le problème pas les textes.
Avec L'enregistreur, quand j'insert le petit logo (1er) et le grand (2ème) le langare change...
et quand je relance la procédure, elle plante au niveau de ExcelMacro4

ActiveSheet.PageSetup.LeftHeaderPicture.Filename = _
"C:\Users\xxxx\Pictures\Saved Pictures\Logo_300dpi.JPG"
With ActiveSheet.PageSetup.LeftHeaderPicture
.Height = 39.75
.Width = 28.5

End With
ActiveSheet.PageSetup.FirstPage.RightHeader.Picture.Filename = _
"C:\Users\xxxx\Pictures\Saved Pictures\Logoxxx.jpg"
ExecuteExcel4Macro "(17,39,,156)"
Application.PrintCommunication = False
etc...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
C'est rigolo avec Office 365 de voir du Excel4Macro ! qui date quand même d'une vingtaine d'années.
Ci joint une PJ. Le code marche, il insère une image différente en entête 1ere page et une autre sur les autres pages.
Par contre je n'ai pas insisté sur la taille des logos, ils empiètent sur la feuille. J'ai pris des images au pif.
VB:
Sub InsererLogos()
    ActiveSheet.PageSetup.LeftHeaderPicture.Filename = _
        "g:\Users\PC_PAPA\Pictures\GIFS\Bonhomme\Petites\Im (30).jpg"   ' Image 1
    ActiveSheet.PageSetup.FirstPage.LeftHeader.Picture.Filename = _
        "G:\Users\PC_PAPA\Pictures\GIFS\Bonhomme\Petites\Imp (21).jpg"  ' Image 2
    With ActiveSheet.PageSetup
        .LeftHeader = "&G"
        .CenterHeader = "AUTRE PAGES"
        .FirstPage.LeftHeader.Text = "&G"
        .FirstPage.CenterHeader.Text = "PREMIERE   PAGE"
    End With
End Sub
Je ne sais pas si cela vous servira mais il n'y a pas d'erreur. Peut être une piste.

Par contre vous ne pourrez pas redimensionner votre logo ici car il importe une image via un lien.
Il faut mettre une marge suffisante, et dimensionner votre logo ailleurs pour qu'il puisse s'insérer correctement.
 

Pièces jointes

  • Classeur1.xlsm
    131.2 KB · Affichages: 9
Dernière édition:

S A M

XLDnaute Nouveau
Bonjour, ce code fonctionne parfaitement chez moi pour dimensionner l'image:
VB:
'Première page
        With ActiveSheet.PageSetup.FirstPage.LeftHeader.Picture
            .Filename = "C:\COMMUNICATION\LOGO & CARTES DE VISISTE\LOGO\Logo1.png"
            .Height = 100
            .Width = .Height * 2.4
        End With
        ActiveSheet.PageSetup.FirstPage.LeftHeader = "&G"

'Autres pages
        With ActiveSheet.PageSetup.LeftHeaderPicture
            .Filename = "C:\COMMUNICATION\LOGO & CARTES DE VISISTE\LOGO\Logo1.png"
            .Height = 50
            .Width = .Height * 2.4
        End With
        ActiveSheet.PageSetup.FirstPage.LeftHeader.Text = "&G"

Voilà tout ;)
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260