VBA Excel - Fond de page

Résolu
PtitGenie7 Messages postés 10 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 6 avril 2010 - 20 juin 2007 à 10:29
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 - 23 juin 2007 à 11:02
Bonjour!

Je recherche en ce moment le moyen (macro), lors de la création d'une nouvelle page, de faire en sorte que cette dernière prenne le même fond de page qu'une page modèle.

Je cherche à faire cela car jusqu'à présent ma macro assignait comme fond à cette nouvelle page l'image qui se trouvait dans tel dossier etc.
Mais ainsi, il est forcément impossible de déplacer le fichier Excel et de l'éxécuter sur un autre PC sans tomber sur un "'image introuvable".

J'avais aussi pensé à placer cette image sur une page cachée, mais là encore je n'sais pas comment lui "dire" de prendre cette image à telle page comme fond de telle page.

Merci d'avance pour votre aide :)

7 réponses

kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
20 juin 2007 à 16:30
Salut,

As tu essayé en faisant une copie de la page modèle qui contient le fond ?

Sinon, il y a moyen de stocker l'image dans un userform pour l'appliquer en fond sur une feuille.

Le principe est simple et doit pouvoir être amélioré

Sur un userform, on place un control image.
On charge l'image dans le control.

ensuite, on place ce code vite fait dans un module et on appelle la procédure :
Sub test_BackGround()

Dim MyPict As stdole.IPictureDisp
Set MyPict = UserForm1.Image1.Picture

'on enregistre en dur l'image
stdole.SavePicture MyPict, "c:\test.backgroundforexcel"

'on la place en fond d'écran
ActiveSheet.SetBackgroundPicture "c:\test.backgroundforexcel"

'on supprime l'image du HDD
Kill "c:\test.backgroundforexcel"
End Sub

et voilà. Pour être complet, on remplacera le control image par un imagelist pour avoir une biliothèque de fond et on rajoute une petite gestion d'erreur et hop.

@+++

[mailto:K@lobit K@lobit] < Ne pas clicker ici
Mon Site < Mais ici
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
20 juin 2007 à 10:32
Salut,
Qu'entends tu par nouvelle page? c'est uen feuille excel?

@+: Ju£i?n
Pensez: Réponse acceptée
0
PtitGenie7 Messages postés 10 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 6 avril 2010
20 juin 2007 à 10:38
Oui pardon, nouvelle feuille ^^
0
PtitGenie7 Messages postés 10 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 6 avril 2010
21 juin 2007 à 14:20
Hello!

Merci pour vos indications.

J'ai en effet testé la méthode "simple" qui consiste à simplement copier une feuille modèle, mais il y a certains problèmes liés à l'affichage, le fond n'est plus en mosaïque sur la nouvelle feuille etc. Bref!

Je vais donc tester la méthode userform, même si je n'ai jamais touché à ça jusqu'à présent lol J'ignore même ce que c'est, mais je vais tenter de trouver o_O

J'vous tient au courant :D

Mirci :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PtitGenie7 Messages postés 10 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 6 avril 2010
21 juin 2007 à 14:32
Re...

J'ai réussi à créer un control image, à y stocker mon image fond, puis j'ai copié le code que tu m'as indiqué dans le module (j'ai du modifier le nom Image1 par ImageList1) mais j'ai une erreur sur le ".Picture".
A quoi cela correspond?
0
PtitGenie7 Messages postés 10 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 6 avril 2010
21 juin 2007 à 15:02
Troisème et dernier message! lol J'ai corrigé la syntaxe, c'était
Set MyPict = UserForm1.ImageList1.ListImages(1).Picture

Bref...

Merci beaucoup c'est parfait :)
0
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
23 juin 2007 à 11:02
Cool,

Content d'avoir pu t'aider.

Juste en complément, tu peux lancer ta procédure de mise en place de l'image depuis cet évènement dans l'objet ThisWorkbook :

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim MyPict As stdole.IPictureDisp

   Set MyPict = UserForm1.Imagelist1.listimages(1).Picture
   stdole.SavePicture MyPict, "c:\test.backgroundforexcel"
   Sh.SetBackgroundPicture "c:\test.backgroundforexcel"
   Kill "c:\test.backgroundforexcel"
End Sub

Pour info, j'ai pu remarquer que l'extension de fichier utilisée lors du savepicture ne change rien, donc pas de problème de format d'image avec cette méthode.

voilà @+++
[mailto:K@lobit K@lobit] < Ne pas clicker ici
Mon Site < Mais ici
0
Rejoignez-nous