Bienvenue sur les forums conseil & création · S'enregistrer

Se connecter automatiquement

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » impression arriere plan · Envoyer le lien

Par GG, le 12 Fév 2008, 13:38 Revenir en haut de page Répondre en citant

Comment créer une macro pour imprimer l'arriere plan d'une feuille excel
Merci
GG
Par GN, le 12 Fév 2008, 20:07 Revenir en haut de page Répondre en citant

Bonjour,
Je pense que les personnes en mesure de te répondre sont absentes cette semaine.

Si je me trompe tant mieux, sinon un peu de patience. Wink
Par Horny, le 13 Fév 2008, 21:15 Revenir en haut de page Répondre en citant

Salut,

Qu'est-ce que tu entend exactement par "l'arrière-plan" de ta feuille ?

@+++
Par Cédric, le 23 Fév 2008, 12:39 Revenir en haut de page Répondre en citant

Horny a écrit:
Qu'est-ce que tu entend exactement par "l'arrière-plan" de ta feuille ?

L'image définie en arrière plan, via le menu Format / Feuille / Arrière-plan

Citation:
Comment créer une macro pour imprimer l'arriere plan d'une feuille excel


Si tu demandes une macro, c'est que tu le sais déjà, Excel n'imprime pas l'arrière plan:

l'aide Excel a écrit:
... Les motifs de fond ne s'impriment pas et ne sont pas conservés dans les feuilles de calcul ou les éléments que vous enregistrez séparément comme des pages Web...


Donc au niveau macro, c'est possible en faisant un print écran de la zone imprimable... teste avec ce code et dis nous si ça te convient:

Code:
Sub imprimer_arr_plan()
    ' Macro impression Excel avec arrière plan
    ' conseil-creation.com
    Dim ZoneImpression As Range
    On Error Resume Next
    If ActiveSheet.PageSetup.PrintArea <> "" Then
        Set ZoneImpression = Range(ActiveSheet.PageSetup.PrintArea)
    Else
        Set ZoneImpression = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
    End If
    Application.ScreenUpdating = False
    ActiveWindow.DisplayHeadings = False
    ZoneImpression.CopyPicture
    ZoneImpression.Clear
    With Sheets.Add
        .Paste Destination:=ZoneImpression
        .DisplayGridlines = False
        .PrintPreview
        Application.DisplayAlerts = False
        .Delete
        Application.DisplayAlerts = True
    End With
    ActiveWindow.DisplayHeadings = True
    Application.ScreenUpdating = True
End Sub


Tout d'abord on définit ZoneImpression : soit la zone d'impression si elle a été définie, soit la totalité (de A1 jusqu'à la dernière cellule non vide). On fait la copie écran de cette zone (copie qui contient l'arrière plan) puis on la colle dans une nouvelle feuille que l'on supprime après avoir lancé l'aperçu / l'impression.

Ici on utilise .PrintPreview pour voir l'aperçu avant impression. A remplacer par .Print Out pour lancer l'impression directement.


Dernière édition par Cédric le 15 Déc 2008, 21:59; édité 1 fois
Par GG, le 28 Fév 2008, 13:13 Revenir en haut de page Répondre en citant

De retour de congés j'ai mis en oeuvre les infos donnés.
Cela fonctionne parfaitement.
Avec tous mes remerciements
GG
Par Cédric, le 28 Fév 2008, 16:39 Revenir en haut de page Répondre en citant

Pas de quoi Wink

@ bientôt,
Cédric
Par Jcay, le 15 Déc 2008, 13:56 Revenir en haut de page Répondre en citant

Bravo et merci à Cédric,
le résultat est parfait à la petite correction près (tout au moins chez moi) d'un décalage de l'image en haut et à gauche qui fait "pas fini".
Bidouillant un peu je m'aperçois que le résultat est à 100% si l'on enlève simplement de l'affichage les entêtes de lignes et de colonnes numérotées.
Ce qui peut être fait manuellement et simplement (outils option affichage fenêtre) MAIS qui serait tellement mieux si cela était automatisé. Avec retour à l'ancien état de l'environnement excel après aperçu bien sur !
Cher Cédric, je te confie la main pour compléter ta macro de cette manip et te remercie par avance de faire aussi bien avancer le smilblick
Cordialement
Jacques Very Happy
Par Cédric, le 15 Déc 2008, 21:59 Revenir en haut de page Répondre en citant

Bonsoir et merci des compliments Embarassed

En effet, le résultat n'est pas parfait quand les en-têtes sont visibles! Je n'avais pas vu ce détail... merci de me le faire remarquer! Smile

La commande macro correspondante est DisplayHeadings. Pour que la modification (masquage des en-têtes) se fasse de façon transparente, on peut utiliser ScreenUpdating pour empêcher le rafraichissement de l'écran (sans oublier de réactiver à la fin de la macro Wink ).

J'ai apporté les modifications directement dans le script du message précédent.

Bonne soirée,
Cédric

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » impression arriere plan · Envoyer le lien