Souci d'ajustement d'aperçu avant impression macro a revoir

Du coup j'avais une question t'as quoi comme imprimante par défaut ? Car j'ai remarqué si tu ne met pas la bonne imprimante par défaut dans Panneau de configuration\Matériel et audio\Périphériques et imprimantes et bah t'as beau choisir le document avant qu'il soit crée le document est illisible avec pdf ou autre.

mon imprimante est un "HP Envy 5540" dans mon Panneau.

L'autre remarque, cela fonctionne maintenant? Dans votre réaction de ce matin 5:05, le pdf me semble okay. (c'était avec Excel2016 ou Excel2007?)

Vous n'avez pas utilisé ma dernière version qui divise mieux les pages ?

Le but final, c'est un PDF/XPS ou l'imprimer ?

image

Bonjour Bart oui c'est nickel merci en faite j'ai pris la toute première macro que t'avais faite, c'est la seule qui ne pose pas de souci pour ouvrir les pdf, j'ai donc fais deux macros et comme j'ai dis avec deux boutons "Pdf montré" et "Pdf masqué" avec le truc le plus simple pour créer le pdf sans avoir a choisir, comme t'as vu, j'ai mis le texte de gauche à l'horizontal, c'est mieux. Et donc ça créer le pdf et l'ouvrir dans Adode reader ou autre qui ouvre des pdf ensuite la personne choisira lequel imprimer, c'est un fichier qui sera partagé, c'est pour donner aux parents d'élèves. Cela fonctionne j'imagine qu'avec Excel 2010 et supérieur.

Sub PDF_Masquer_cycle4()

    Dim i As Integer
    Dim fileName As String
    Dim activeSheetName As String

    ' Obtenez le nom de la feuille active
    activeSheetName = ActiveSheet.Name

    With ActiveSheet ' Utilisez la feuille active
        MasquerLignes

        With .PageSetup
            .PrintArea = "A8:F75,A77:F157,A159:G218" ' La plage unique que vous souhaitez utiliser
            .PrintTitleRows = "$1:$7"
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 5 '5 pages

            .LeftMargin = Application.InchesToPoints(0.5)
            .RightMargin = Application.InchesToPoints(0.2)
            .TopMargin = Application.InchesToPoints(0.1)
            .BottomMargin = Application.InchesToPoints(0.1)
            .CenterFooter = "Page &P / &N"
            .FooterMargin = Application.InchesToPoints(0.1)
        End With

        '.PrintPreview

        ' Générez le nom du fichier en utilisant le nom de la feuille active
        fileName = activeSheetName & "-" & Format(Now, "ddmmyyyy")

        .ExportAsFixedFormat Type:=xlTypePDF, fileName:=ThisWorkbook.Path & "\" & fileName & ".pdf", OpenAfterPublish:=True

    End With

End Sub

Sub PDF_Montrer_cycle4()

    Dim i As Integer
    Dim fileName As String
    Dim activeSheetName As String

    ' Obtenez le nom de la feuille active
    activeSheetName = ActiveSheet.Name

    With ActiveSheet ' Utilisez la feuille active
        MontrerLignes

        With .PageSetup
            .PrintArea = "A8:F48,A49:G91,A93:F120,A122:G157,A159:F218" ' La plage unique que vous souhaitez utiliser
            .PrintTitleRows = "$1:$7"
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 5 '5 pages

            .LeftMargin = Application.InchesToPoints(0.5)
            .RightMargin = Application.InchesToPoints(0.2)
            .TopMargin = Application.InchesToPoints(0.1)
            .BottomMargin = Application.InchesToPoints(0.1)
            .CenterFooter = "Page &P / &N"
            .FooterMargin = Application.InchesToPoints(0.1)
        End With

        '.PrintPreview

        ' Générez le nom du fichier en utilisant le nom de la feuille active
        fileName = activeSheetName & "-" & Format(Now, "ddmmyyyy")

        .ExportAsFixedFormat Type:=xlTypePDF, fileName:=ThisWorkbook.Path & "\" & fileName & ".pdf", OpenAfterPublish:=True

    End With

End Sub

D'ailleurs j'ai une autre question dans mes boutons j'avais trouvé le code pour que quand tu fais clique droit le bouton ne soit ni déplacé, ni redimensionné avec les cellules

myShape.Placement = xlFreeFloating

Mais connais tu celle qui décoche le " imprimer l'objet " ?

re,

MyShape.PrintObject = msoFalse

Non cela donne une erreur

Voici le fichier final, j'ai rajouté des variables pour choisir les numéros de lignes fin de 1ère page, début de la 2ème etc... au cas où, car c'est sur tous le monde n'aura pas le même nombre de lignes. Merci a Bart et Arthuro pour votre aide, si vous pouvez essayer le fichier en créant Elève 1 et 16 et me dire si vous avez bien le logo en haut et puis essayez de faire un pdf de chaque voir s'il y a pas un couac

En vous souhaitant un bon réveillon et une bonne année 2024.

8demo-3.xlsm (305.66 Ko)

re,

excusez-moi pour le delai et mes voeux retardés pour 2024.

Je n'ai pas vu des défauts avec vos 2 élèves, donc okay !

J'ai ajouté une macro qui choissit ses pages tout seule, c'est sans bouton avec les raccourcis CTRL+Maj+T et CTRL+Maj+M pour l'impression de tout (T) ou masqué (M). Comme ça vous n'avez pas besoin de la plage M3:R3 et vous voyez l'adresse dans N7.

Pour l'élève 17 (avec beaucoup plus de "non-travaillé") et avec masque, la macro crée un document de 2 pages sans intervention.

12demo-3.zip (320.47 Ko)

Merci par contre sur les pages que tu as crée

sans titre

qui devrait être ici. J'ai excel 2007 en 32 bit

sans titre

re,

je ne connais pas votre logo, donc la macro "Logo" cherche un image (Shape) nommée "MonLogo" dans la feuille active. Si cet image est introuvable, elle cherche un shape "MonLogo" dans la feuille "A_Lire". Si cet image est encore introuvable, on vous demande le nom d'un fichier. La macro colle 2 copies, un dans "A_Lire" et un dans la feuille active.

J'ai ajouté un saute vers cette macro dans vos 2 macros.

Pour supprimer le logo, clicquez dessus et delete

8demo-3.zip (319.17 Ko)

Le logo est dans la feuille cachée Logo c'est Image 1 tout est dedans pourtant

' Référencer la feuille cachée pour le logo
     Set wsLogo = ThisWorkbook.Sheets("Logo")

     ' Référencer l'image dans la feuille cachée
     Set myLogo = wsLogo.Shapes("Image 1")

     On Error Resume Next

     myLogo.Copy                             ' Copie l'image du logo dans la feuille active (wsNouvelOnglet)
     With wsNouvelOnglet                     ' Colle le logo à la position souhaitée
          .PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
          With .Shapes(5)
               .LockAspectRatio = msoTrue
               .Left = 610
               .Top = 10
          End With
     End With

re,

non, cela cause une erreur

     ThisWorkbook.Sheets("Logo").Shapes("Image 1").Copy     ' Copie l'image du logo
     With ActiveSheet                        '  dans la feuille active (wsNouvelOnglet)
          .Paste
          With .Shapes(.Shapes.Count)        'le shape le plus récent
               .LockAspectRatio = msoTrue
               .Left = 610                   'positions
               .Top = 10
          End With
     End With

Pourquoi chez moi cela fonctionne est que tu as une solution pour que ça fonctionne pour Excel 64 bit ? Je pense que c'est lié.

With wsNouvelOnglet ' Colle le logo à la position souhaitée

.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False

supprimez tout ce qui est barré (je pense que le "format" cause l'erreur)

Edit:

Du coup t'as l'erreur avec ce qui est barré et le logo tu le vois dans les feuilles crées ?

Je voulais dire tu n'as plus d'erreur en supprimant ce qui est barré ? Car moi cela fonctionnais sur excel 32 bit et sur une VM excel en 64 bit j'avais l'erreur.

re,

sans ce qui est barré, oui.

Mais c'est bizarre, ceci n'est pas un problème

.PasteSpecial Format:=3 'pourtant 3 = "Picture (Enhanced Metafile)"

Bon bah si ça fonctionne chez toi en 64 bit et chez moi en 32 bit c'est good car le fichier est pour plusieurs personnes. J'ai édité le post du haut.

J'avais une autre question dans ce bout de macro pourquoi un coup tu met F et un coup G sur le With . PageSetup ?

With .PageSetup
                    .PrintArea = IIf(i = 2, "A8:F48,A49:G91,A93:F120,A122:G157,A159:F218", "A8:F48,A49:G76,A77:F157,A159:G218")     '4 ou 5 plages
                    .PrintTitleRows = "$1:$7"
                    .Zoom = False
                    .FitToPagesWide = 1
                    .FitToPagesTall = IIf(i = 2, 5, 4)     '4 ou 5 pages

                    .LeftMargin = Application.InchesToPoints(0.5)
                    .RightMargin = Application.InchesToPoints(0.2)
                    .TopMargin = Application.InchesToPoints(0.1)
                    .BottomMargin = Application.InchesToPoints(0.1)
                    .CenterFooter = "Page &P / &N"
                    .FooterMargin = Application.InchesToPoints(0.1)

               End With

re,

je pense que cela n'a rien à voir avec 32 ou 64 bits, mais avec la langue, la mienne est "365 NL" (néerlandais), mais apparament le vôtre est "2007 FR", donc ???? bizarre.

Le comportement d'Excel lors de l'impression est assez imprévisible, donc en essayant de l'offrir un printarea de 4 ou 5 pages avec une alternance de 6 ou 7 colonnes (largeur de la colonne G = vraiment petit par exemple 0.1, mais >0) et .FitToPagesTall = 4 ou 5, on limite vraiment le choix d'Excel, mais de temps en temps .... , cela ne suffit pas et excel ajoute obstiné d'un saut de page quelque part

Le but, c'est imprimer tout en une fois pour créer par exemple ce pdf en une fois, sinon et on le fait page par page, on risque que le "zoom" (qui est faux, mais excel le calcule quelque part dans l'ombre) de chaque page est différent. Cela reste toujours un cauchemar

Rechercher des sujets similaires à "souci ajustement apercu impression macro revoir"