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

Y compris Power BI, Power Query et toute autre question en lien avec Excel
f
frannou
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 12 août 2014
Version d'Excel : 2010 FR

Message par frannou » 5 septembre 2017, 10:48

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.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 5 septembre 2017, 16:22

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"
Si le problème est résolu, pensez au clic sur le bouton
isabelle
f
frannou
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 12 août 2014
Version d'Excel : 2010 FR

Message par frannou » 7 septembre 2017, 09:52

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
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 7 septembre 2017, 23:27

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
Si le problème est résolu, pensez au clic sur le bouton
isabelle
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message