En tête/pieds de page (image) dans Excel VBA

Bonjour,

J'ai bidouillé une macro qui permet de mettre en page et imprimer un classeur avec plusieurs feuilles.

J'aimerais insérer des logos dans les en-têtes et pied de page.

voici un extrait de mon code qui fonctionne très bien :

' mise en page
        With Sheets("Page_de_garde").PageSetup
        .LeftHeaderPicture.FileName = "C:\Users\fpira\Desktop\image logo + adresse.jpg"
        .LeftHeaderPicture.Height = 150
        .LeftHeaderPicture.Width = 150
        .LeftHeader = "&G"
        .LeftFooterPicture.FileName = "C:\Users\fpira\Desktop\Belac.jpg"
        .LeftFooterPicture.Height = 40
        .LeftFooterPicture.Width = 40
        .LeftFooter = "&G"
        .CenterFooter = Sheets("Page_de_garde").Cells(2, 2).Value
        .RightFooter = "&P de &N"
        End With

Mais le soucis que j'ai est que le fichier va devoir être utilisé par plusieurs personnes différentes. Du coup, j'aimerais stocker les logos dans une feuille cachée du fichier pour ensuite les insérer sans devoir utiliser le chemin "C:Users/...." (qui sinon va devoir être mis à jour chez chaque utilisateur, on est parti pour la gloire), mais je ne trouve pas le moyen de le faire.

quelqu'un peut-il m'aider?

D'avance merci.

Bonjour,

une possibilité, J'ai fait le test avec un image pris sur un site et ça fonctionne,

.LeftHeaderPicture.Filename = "https://i.stack.imgur.com/cdCSj.jpg"

Merci de votre réponse.

Oui, comme ça, ça fonctionne, mais justement, je ne veux pas renvoyer à un fichier image (qu'il soit stocké sur le PC ou ailleurs), je voudrais renvoyer à un objet image qui est directement dans mon fichier.

Je définis au début mon objet comme ceci

Dim CBD, CBDNB, BELAC, BELACNB As Shape

Sheets("logos").Shapes("image 1").Select
Set CBDNB = Selection
Sheets("logos").Shapes("image 2").Select
Set CBD = Selection
Sheets("logos").Shapes("image 3").Select
Set BELAC = Selection

Et au moment de la mise en page, j'aimerais utiliser ces objets. J'ai essayé :

  With Sheets("Page_de_garde").PageSetup
        .LeftHeaderPicture = CBD
.LeftHeader = "&G"

Mais ça ne fonctionne pas. J'ai le message suivant :

Erreur d'exécution 438

Propriété ou méthode non générée par cet objet

une autre possibilité, votre classeur doit avoir une feuille nommée "image" contenant un image

sélectionner un autre feuille du classeur et exécuter la macro.

Sub ImageLeftHeaderPicture()
Dim sh As Object, monImage As String
Set shp = Sheets("image").Shapes(1)
Set sh = ActiveSheet
shp.Copy
Application.ScreenUpdating = False
    'Définit le nom et le lieu de stockage de l'image
    monImage = "C:\temp\monImage.jpg"
    Sheets("image").Activate

    'Colle l'image dans un graphique
    With ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart
        .Paste
        'Sauvegarde temporaire de l'image du graphique au format jpg
        .Export monImage, "JPG"
    End With

    'Supprime le graphique
    With ActiveSheet
        .ChartObjects(ActiveSheet.ChartObjects.Count).Delete
    End With

    sh.Activate
       With ActiveSheet.PageSetup
        .LeftHeaderPicture.Filename = fichier
        .LeftHeaderPicture.Height = 150
        .LeftHeaderPicture.Width = 150
        .LeftHeader = "&G"
        .LeftFooterPicture.Filename = fichier
        .LeftFooterPicture.Height = 40
        .LeftFooterPicture.Width = 40
        .LeftFooter = "&G"
        .CenterFooter = ActiveSheet.Cells(2, 2).Value
        .RightFooter = "&P de &N"
        End With

Kill monImage
Application.ScreenUpdating = True
End Sub

Bonjour,

J'ai utilisé le dernier code mais j'ai toujours un petit problème:

A la place de mon image dans l'entête, j'ai une image de la même taille mais blanche.

J'ai l'impression que c'est la ligne ".paste" qui ne fonctionne pas.

Pouvez-vous m'aider ?

Rechercher des sujets similaires à "tete pieds page image vba"