Création d'un new workbook à partir de sheets dans un ancien + pdf

Bien le bonjour à tous,

Etant début dans la programmation j'aurai besoin de votre aide pour développer cette macro qui a pour objectif de créer d'une part un nouveau classeur excel sous format basic "xlsx" et du même nouveau fichier xlsx que je nommerai il créera un document pdf.

Ainsi mon classeur source dispose d'un certain nombre de feuilles parmi lesquelles je souhaite faire mon extraction en pdf et la création de ce nouveau classeur xlsx. cette extraction se fait à partir d'une condition à vérifier d'après la valeur d'une variable à laquelle nous avons attribué la valeur d'une cellule

ci-bas mon code :

 
Application.DisplayAlerts = False

'Déclaration des variables utilisés & affectations des valeurs

    Dim equipe As String
    Dim pieds as string
    Dim men As String
    Dim Pieds as String

    Pieds = Sheets("PARAMETRES").Range("D1").Value
    equipe = Worksheets("PARAMETRES").Range("B1").Value
    men = Year(Worksheets("PARAMETRES").Range("C4").Value)

    Name = "nom" & men & " " & equipe 

'Enregistrement du nouveau xlsx

    If Pieds = "S" Then

        ThisWorkbook.Sheets(Array("PAGE DE GARDE", "CFSS", "RESULTAT", "CONCLUSION").Copy
        ActiveWorkbook.SaveAs Filename:="C:\" & "Communication " & Name, FileFormat:=xlWorkbookDefault, CreateBackup:=False
            ActiveWorkbook.Close

    ElseIf Pieds = "P" Then

        ThisWorkbook.Sheets(Array("PAGE DE GARDE", "CDC", "CART", "RESULTAT", "CONCLUSION")).copy
        ActiveWorkbook.SaveAs Filename:="C:\" & "Communication " & Name, FileFormat:=xlWorkbookDefault, CreateBackup:=False
            'ActiveWorkbook.Close

    ElseIf Risque = "PS" Then

       ThisWorkbook.Sheets(Array("PAGE DE GARDE", "CDC", "CART", "CFSS","RESULTAT", "CONCLUSION")).Copy

        ActiveWorkbook.SaveAs Filename:="C:\" & "Communication " & Name , FileFormat:=xlWorkbookDefault, CreateBackup:=False
                       ' ActiveWorkbook.Close

    ElseIf Pieds <> "PS" Or Pieds <> "S" Or Pieds <> "P" Then
        MsgBox("Aucun résultat à afficher")

    End If

'Réinitialisation des paramètres VBA par défaut
    Application.DisplayAlerts = True

   'Enregistrer en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fname & "pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    From:=1, To:=Sheets.Count, OpenAfterPublish:=True

Quand j'utilise active sheet je fais référence au nouveau xlsx que j'ai crée et que je veux mettre en pdf.

De plus quand je fais du pas à pas une fois que je rentre dans la boucle après .copy j'ai un message d'erreur 1004 plusieurs raisons Nom fichier ou chemin n'existe pas, Fichier utilisé par un autre programme, classeur porteur du même nom.... (cela a été vérifié et il me semble qu'aucune des trois ne soit la cause)

Je vous remercie par avance pour nos futurs échanges à ce sujet !

Bonne journée

Bonsoir,

De plus quand je fais du pas à pas une fois que je rentre dans la boucle

De quelle boucle, s'agit-il ?

Quand j'utilise active sheet je fais référence au nouveau xlsx

ActiveSheet représente une feuille et non un classeur ???

Vous feriez mieux de communiquer la procédure complète ou un fichier exemple car on ne voit pas où est créé le nouveau classeur "xlsx".

Bonjour Thev merci pour ton retour,

Petites corrections * :

1. BOUCLE (erreur) : Quand je rentre dans la condition If Pieds = .... => c'est là que j'utilise thisworkbook.sheets(array.....)).copy : C'est ainsi que je crée un nouveau classeur des feuilles que j'extrait à chaque fois.

2. ACTIVESHEET (erreur) : Quand j'utilise activeworkbook.Save AS ... FileFormat := XlworkbookDefaut : c'est ainsi que mon " Activeworkbook" créé à partir de ma sélection précédante dans la condition s'enregistre sous XLSX avec un nom de fichier.

C'est le moyen que j'ai trouver pour créer une copie selon certaines conditions d'un nouveau classeur sous format XLSX à partir des feuilles d'un ancien classeur xlsm.

Maintenant le soucis que je rencontre une fois que je crée mon xslx c'est le création du pdf : je peux créer un pdf à partir de :

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\.......  .pdf" , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True

Mais parfois j'ai des pages vides qui s'affichent au milieu du pdf.

Bonjour,

BOUCLE (erreur)

Il ne s'agit pas d'une boucle, mais d'une condition d'exécution. D'ailleurs une instruction "Select Case" serait plus appropriée.

ACTIVESHEET (erreur)

Ce n'est pas "ActiveSheet" qu'il faut employer, mais "ActiveWorkBook"

De plus quand je fais du pas à pas une fois que je rentre dans la boucle après .copy j'ai un message d'erreur 1004 plusieurs raisons Nom fichier ou chemin n'existe pas,

Ce n'est pas la raison, mais un problème de droit. Vous ne pouvez pas utiliser un emplacement sur le lecteur C si vous n'êtes pas en exécution Administrateur. La bonne solution est d'utiliser l'emplacement "Mes Documents".

ci-dessous votre code corrigé :

    Application.DisplayAlerts = False

'Déclaration des variables utilisés & affectations des valeurs

    Dim equipe As String
    Dim Pieds As String
    Dim men As String

    Pieds = Sheets("PARAMETRES").Range("D1").Value
    equipe = Worksheets("PARAMETRES").Range("B1").Value
    men = Year(Worksheets("PARAMETRES").Range("C4").Value)

    Name = "nom" & men & " " & equipe

'Enregistrement du nouveau xlsx
    Select Case Pieds

        Case "S"

             ThisWorkbook.Sheets(Array("PAGE DE GARDE", "CFSS", "RESULTAT", "CONCLUSION")).Copy
             ActiveWorkbook.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\" & Name, FileFormat:=xlWorkbookDefault, CreateBackup:=False

        Case "P"

            ThisWorkbook.Sheets(Array("PAGE DE GARDE", "CDC", "CART", "RESULTAT", "CONCLUSION")).Copy
            ActiveWorkbook.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\" & Name, FileFormat:=xlWorkbookDefault, CreateBackup:=False

        Case "PS"

           ThisWorkbook.Sheets(Array("PAGE DE GARDE", "CDC", "CART", "CFSS", "RESULTAT", "CONCLUSION")).Copy
            ActiveWorkbook.SaveAs Filename:=CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\" & Name, FileFormat:=xlWorkbookDefault, CreateBackup:=False

        Case Else
            MsgBox ("Aucun résultat à afficher")

    End Select

'Réinitialisation des paramètres VBA par défaut
    Application.DisplayAlerts = True

   'Enregistrer en PDF
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fname & "pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    From:=1, To:=Sheets.Count, OpenAfterPublish:=True
ActiveWorkbook.Close
Rechercher des sujets similaires à "creation new workbook partir sheets ancien pdf"