XL 2010 Macro pour modifier les params d'impression ?

ManuXZ

XLDnaute Junior
Bonsoir la communauté!!! ;-))

Je dois modifier les paramètres d'impression pour imprimer des invitations.
Au départ, j'avais commencé à créer une macro "à la mano" (qui ne fonctionnait pas....:-(() et je me suis dit ,
mais bien sûr !!! , utilisons l'enregistreur de macro !!! ; il m'a généré une macro (params complets d'édition !!! (je n'ai donc conservé que les lignes qui m'intéressaient !) mais snif, cela ne modifie pas plus les params d'impression...

PS: Il faut:
1/ saisir le nbre d'invitations,
2/ cliquer sur bouton "effacer feuille3" puis
3/ sur le bouton "edition feuille3"
4/ et je vais dans menu, fichier, imprimer
mais je constate que les marges personnalisées n'ont pas été changées ???

La macro :Result-final


Auriez-vous qqs idées ?

Merci bcp pour votre aide! (sûrement un truc tout bête !!;-)) )
 

Pièces jointes

  • TEST-EDITION.xlsm
    33 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Manu,
En exécutant Result_Final, je retrouve bien les paramètres demandés :
1706221169256.png

Donc difficile de vous aider plus. Je suis sur Win10 XL2007.
Cependant quelques liens qui pourraient vous inspirer :
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Ma version en pj. ;)

VB:
Sub Result_Final()
'
Dim NbInvit As Long, Invit As Long

    ' Récupération du nombre d'invitations saisi
    NbInvit = Feuil1.Range("B25").Value

    ' Remise à zéro de la feuille de CodeName "Feuil3"
    Feuil3.Columns("A:G").Clear

    ' Génération des invitations dans la feuille de CodeName "Feuil3" à partir du modèle (feuille de CodeName "Feuil2")
    Feuil2.Range("A1:G18").Copy Feuil3.Range("A1").Resize(18 * NbInvit)

    For Invit = 1 To NbInvit
        ' Incrémentation du numéro d'invitation toutes les 18 lignes
        Feuil3.Cells(18 * Invit - 16, 7) = Invit
        ' Ajout d'un saut de page manuel toutes les 3 invitations
        If (Invit Mod 3 = 0) And (Invit < NbInvit) Then Worksheets("Feuil3").Rows(18 * Invit + 1).PageBreak = xlPageBreakManual
    Next Invit
 
    ' Modification des paramètres d'impression
    With Worksheets("Feuil3").PageSetup
        .PaperSize = xlPaperA4
        .Orientation = xlPortrait
        .LeftMargin = Application.CentimetersToPoints(0.7)
        .RightMargin = Application.CentimetersToPoints(0.7)
        .TopMargin = Application.CentimetersToPoints(0)
        .BottomMargin = Application.CentimetersToPoints(0)
        .HeaderMargin = Application.CentimetersToPoints(0)
        .FooterMargin = Application.CentimetersToPoints(0)
        .CenterHorizontally = True
        .CenterVertically = True
    End With

End Sub
 

Pièces jointes

  • TEST-EDITION.xlsm
    31.9 KB · Affichages: 4
Dernière édition:

ManuXZ

XLDnaute Junior
Bsoir,

Merci bcp à tous pour votre réactivité et votre aide les PROS d'excel !!!! :-0


J'ai donc optimisé mon code grâce à ToofatBoy..!!! c'est vrai ce que j'avais fait par moment était un peu en "mode bourrin" (fait à la va-vite) !!!

1/ J'ai donc ajouté la macro "suppression feuille" dans la macro "Result-Final" , c'est + simple et j'enlève un bouton ...;-))) (j'étais vraiment fatigué lorsque je l'ai fait !!!)

2/ En fait, c'est un fichier excel que j'ai récupéré et il y avait une image en haut à gauche de l'invitation (elle devait figurer sur le fichier que j'avais transmis initialement) , bref, j'ai récupéré le fichier originel et lorsque je clique sur l'image (j'ai =INCORPORER("Paint.Picture";) mais lorsque je lance la macro , ça ne me recopie pas cette image sur chaque invitation
Comment procéder ?


3/ @ Sylvanu , concernant les marges à 0, effectivement lorsque je clique sur "mise en page" , j'ai bien les params à 0 mais lorsque je fais "imprimer,", marges personnalisées/dernier param de personnalisation (les params ne sont pas à 0) ???
Bonne soirée.
 

Pièces jointes

  • TEST-EDITION.xlsm
    66.5 KB · Affichages: 9
Dernière édition:

ManuXZ

XLDnaute Junior
Bonjour,
Pas d'idées apparemment....
en fait ce que je comprends c'est qu'il recopie bien évidemment le contenu de chaque cellule mais
mais pas le logo (l'image) qui est comme en "surimpression" (placé en haut à gauche de l'invitation) et comme je le précisais (lorsque je clique dessus il m'affiche = INCORPORER( image...) .
 

TooFatBoy

XLDnaute Barbatruc
J'ai donc optimisé mon code grâce à ToofatBoy..!!!
Donc :
- remettre une indentation totalement farfelue alors que ça avait été corrigé pour rendre le code plus lisible,
- supprimer les sauts de page manuels permettant de bien réaligner l'impression toutes les trois invitations,
- remettre l'instruction totalement inutile de mise en forme de chaque cellule comportant le numéro d'invitation,
- ne déclarer qu'une seule des deux variables de la macro,
- remettre 7 ou 8 modules qui ne servent à rien puisqu'ils sont vides,
- etc.,
c'est ça que tu appelles une "optimisation", si je comprends bien. 🤣🤣🤣

On ne doit pas avoir la même notion d'optimisation... 😅


J'attends de voir comment tu vas optimiser le code des collègues pour recopier l'image. ;)
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@ManuXZ

Ce qui est inintéressant c'est que TFB et moi nous avons fournit un fichier nettoyé et fonctionnel par rapport à la demande initial et pas un mot sur nos 2 fichiers.
Tu aurais pu dire le fichier untel a ceci ou cela ne me convient pas pour ci ou ça et le second fichier c'est plutôt cela qui ne me va pas, bref expliquer les améliorations que tu souhaites ....

A la place tu as soi disant "optimisé" un fichier en le rendant presque illisible !! Bravo ! 🤣
 

Franc58

XLDnaute Occasionnel
Bonjour,
Pas d'idées apparemment....
en fait ce que je comprends c'est qu'il recopie bien évidemment le contenu de chaque cellule mais
mais pas le logo (l'image) qui est comme en "surimpression" (placé en haut à gauche de l'invitation) et comme je le précisais (lorsque je clique dessus il m'affiche = INCORPORER( image...) .
Salut, voici comment recopier le logo, je l'ai renommé "Logo" dans le classeur plutôt que "Objet 166", pour plus de clarté, donc change le nom de l'image dans le classeur ou dans le code de la macro comme tu veux. Testé et fonctionne.

VB:
Sub Result_Final()

 Dim NbInvit As Integer
 Dim Logo As Shape
 
 ' récupération du nbre invitations saisies
 NbInvit = Feuil1.Range("B25")
 
 ' Suppression de tous les shapes dans la "Feuil3"
 For Each shp In Feuil3.Shapes
     shp.Delete
 Next shp
 
 ' Remise à zéro de la "Feuil3"
 Feuil3.Columns("A:G").Clear

 ' Génération des invitations dans la feuille ("Feuil3") à partir du modèle ("Feuil2")
 Feuil2.Range("A1:G18").Copy Feuil3.Range("A1").Resize(18 * NbInvit)
 Feuil3.Columns("G").Cells.HorizontalAlignment = xlLeft
 
 ' Copie du logo dans chaque document généré
 Set Logo = Feuil2.Shapes("Logo")
 For Invit = 1 To NbInvit - 1
     Logo.Copy
     Feuil3.Paste Feuil3.Cells((18 * Invit) + 1, 1)
     Application.CutCopyMode = False
 Next Invit
 
 ' Incrémentation du numéro d'invitation toutes les 18 lignes
 For Invit = 1 To NbInvit
     Feuil3.Cells(18 * Invit - 16, 7).NumberFormat = "00"
     Feuil3.Cells(18 * Invit - 16, 7) = Invit
 Next Invit
 
 ' Modification des params d'impression en mettant à ZERO (TopMargin, BottomMargin, HeaderMargin, FooterMargin)
 With Worksheets("Feuil3").PageSetup
   .LeftMargin = Application.CentimetersToPoints(0.7)
   .RightMargin = Application.CentimetersToPoints(0.7)
   .TopMargin = Application.CentimetersToPoints(0)
   .BottomMargin = Application.CentimetersToPoints(0)
   .HeaderMargin = Application.CentimetersToPoints(0)
   .FooterMargin = Application.CentimetersToPoints(0)
   .Orientation = xlPortrait
   .PaperSize = xlPaperA4
 End With

End Sub
 

TooFatBoy

XLDnaute Barbatruc
de quel code on parle ?
Je parlais d'un code pour copier le logo autant de fois que nécessaires et aux bons endroits, que tu pourrais éventuellement nous donner (perso, je ne sais pas faire ça).
Mais Franc58 vient de nous en donner un. ;)



Franc58 j'aime bien ton code. D'autant qu'il me permet d'apprendre comment il faut procéder pour la copie d'une image. 👍
J'ai juste une question : si on sort le .Copy et le CutCopyMode=False de la boucle, est-ce que ça fonctionne toujours ?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 266
Messages
2 096 669
Membres
106 705
dernier inscrit
break