Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Exporte format d'impression à d'autres onglet

PatrickNyon

XLDnaute Nouveau
Bonjour à tous,

J'essaie de trouver le moyen d'exporte le format d'impression de l'ongle "MODELE" aux autre onglets créés par le biais d'un UserForm.

J'arrive bien à créer les nouveaux onglets mais je n'arrive pas à récupérer le format d'impression.

Voici le code pour la création des onglets:

VB:
Sub ONGLETUSERS()

'Je vais créer les onglets pour chaque utilisateurs qui doit réaliser un inventaire:


     Application.ScreenUpdating = False


'Je défini les variables:

    Dim ws As Worksheet
    Dim ctl As Control
    Dim i As Integer

        
        'Cet onglet est le résumé de tous les onglets créés:
        
        Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        ws.Name = "RESUME"

        
        
        'A présent, pour chaque utilisateurs coché pour l'inventaire je créé un onglet à son nom:
            
                For Each ctl In UF_CHOIX_USERS.Controls
                    If TypeName(ctl) = "CheckBox" Then
                    
                        If ctl.Value = True Then
                    
                    
                    Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        
            ws.Name = ctl.Caption
            i = i + 1
            
            
            
            
            'Je reproduis le format de l'inventaire sur chaque feuille créée:
            ThisWorkbook.Sheets("MODELE").Cells.Copy Destination:=ws.Cells
            
                
        
        
            'Ici j'indique dans A1 le nom de l'utilisateur:
            ws.Range("F7").Value = ws.Name
            
            
            
            
                        'J'imprime l'inventaire pour chaque utilisateur
                         ws.PrintOut

                      
        End If
        
    End If

Next ctl


                    





    Application.ScreenUpdating = True


    MsgBox i & " ONGLETS ONT ÉTÉ CRÉÉS AVEC SUCCÈS.", vbInformation, "Gestion des inventaires."
    
    
  
End Sub


J'ai essayé de rajouter:

Code:
ThisWorkbook.Sheet("MODELE").PageSetup.Copy ws.PageSetup

mais sans succès.


Puis-je vous demander de me guider sur cette question?

D'avance merci pour votre aide.

PAtrick.
 
Solution
Bonjour
peut être tout simplement
ws.pagesetup=sheets("MODELE").pagesetup


Bon, j'ai finallement opté pour une autre façon de procéder qui fonctionne bien

Merci pour ton aide.

Voici la solution:

Code:
Sub ONGLETUSERS()

'Je vais créer les onglets pour chaque utilisateurs qui doit réaliser un inventaire:


     Application.ScreenUpdating = False


'Je défini les variables:

    Dim ws As Worksheet
    Dim wsFrom As Worksheet
    Dim wsTO As Worksheet
    Dim ctl As Control
    Dim i As Integer

        
        'Cet onglet est le résumé de tous les onglets créés:
        
        Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        ws.Name = "RESUME"

        


        
        'A...

PatrickNyon

XLDnaute Nouveau
Bonjour
peut être tout simplement
ws.pagesetup=sheets("MODELE").pagesetup


Bon, j'ai finallement opté pour une autre façon de procéder qui fonctionne bien

Merci pour ton aide.

Voici la solution:

Code:
Sub ONGLETUSERS()

'Je vais créer les onglets pour chaque utilisateurs qui doit réaliser un inventaire:


     Application.ScreenUpdating = False


'Je défini les variables:

    Dim ws As Worksheet
    Dim wsFrom As Worksheet
    Dim wsTO As Worksheet
    Dim ctl As Control
    Dim i As Integer

        
        'Cet onglet est le résumé de tous les onglets créés:
        
        Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        ws.Name = "RESUME"

        


        
        'A présent, pour chaque utilisateurs coché pour l'inventaire je créé un onglet à son nom:
            
                For Each ctl In UF_CHOIX_USERS.Controls
                    If TypeName(ctl) = "CheckBox" Then
                    
                        If ctl.Value = True Then
                    
                    
                    Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        
            ws.Name = ctl.Caption
            i = i + 1
            
            
            
            
            'Je reproduis le format de l'inventaire sur chaque feuille créée:
            ThisWorkbook.Sheets("MODELE").Cells.Copy Destination:=ws.Cells
                            
        
        
            'Ici j'indique dans A1 le nom de l'utilisateur:
            ws.Range("F7").Value = ws.Name
            
            
            
            
                        'J'imprime l'inventaire pour chaque utilisateur en me basant sur les propriétés d'impressions de la feuille MODELE:
                        
                            Set wsFrom = Sheets("MODELE")
                            Set wsTO = ws
                        
                                              
                             With wsTO.PageSetup
        
                                    .AlignMarginsHeaderFooter = wsFrom.PageSetup.AlignMarginsHeaderFooter
                                    .BlackAndWhite = wsFrom.PageSetup.BlackAndWhite
                                    .BottomMargin = wsFrom.PageSetup.BottomMargin
                                    .LeftMargin = wsFrom.PageSetup.LeftMargin
                                    .Orientation = wsFrom.PageSetup.Orientation
                                    .PaperSize = wsFrom.PageSetup.PaperSize
                                    .RightHeaderPicture.Filename = wsFrom.PageSetup.RightHeaderPicture.Filename
                                    .RightMargin = wsFrom.PageSetup.RightMargin
                                    .TopMargin = wsFrom.PageSetup.TopMargin
                                    .Zoom = wsFrom.PageSetup.Zoom
                        
                            End With
                        
                        
                            ws.PrintOut

                      
        End If
        
    End If

Next ctl


                    





    Application.ScreenUpdating = True


    MsgBox i & " ONGLETS ONT ÉTÉ CRÉÉS AVEC SUCCÈS.", vbInformation, "Gestion des inventaires."
    
    
  
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…