XL 2013 MACRO VBA pour imprimer tous les bulletins d'un établissement scolaire

MBEPID

XLDnaute Nouveau
Bonsoir à tous,

je tente de reproduire une macro pour l'édition de tous les bulletins scolaires.

Voici la Macro mais ça bloque ici : Feuil.ExportAsFixedFormat xlTypePDF, CheminDossier & Range("C16").Value & Range("C12").Value.xlQualityStandard, True, False, 1, 1, False

Que faire ?

Cdt
Sub Créer_PDF()
Dim ligne As Integer
Dim Derligne As Integer 'Permert au code de sélectionner la dernière ligne de la feuille sélectionner dans C16
Dim WS As Worksheet 'Permert au code de rechercher la sélection C16 dans toutes les feuilles et identifier la dernière ligne
Dim Dossier 'C'est le dossier dans lequel seront stockés les bulletins en PDF
Dim Feuil As Worksheet
Set Feuil = ActiveSheet


Dossier = Application.InputBox("Création de PDF", "Exportation en PDF...", "Bulletin")
CheminDossier = ThisWorkbook.Path & "/" & Dossier & " / "
On Error Resume Next
If Dossier = True Then 'Si je trouve un dossier portant le même nom
GetAttr (CheminDossier) And vbDirectory
Else
MkDir (CheminDossier)

End If

For Each WS In Sheets
Derligne = WS.Range("A50000").End(xlUp).Row 'Le Code va jusqu'à la derligne et remonte pour s'arrêter à la dernière ligne non vide
'Il s'agit maintenant de créer des boucles, pour rechercher et se posistionner sur la classe (ou la feuille) sélectionner dans C16

If WS.Name = Range("C16").Value Then 'Si une feuille porte le nom est églage à la cellule C16, alors
For ligne = 2 To Derligne 'Une fois la classe sélectionner et le clic sur le bouton PDF, le programme vérifie la feuille sui correspond à la sélection, va dans cette feuille, commence par la ligne 2 de chaque classe jusqu'à la dernière ligne de la classe
Range("C12").Value = WS.Cells(ligne, 2) 'Dès qu'il trouve la classe, il rappatrie la valeur (nom) dans la cellule C12
Feuil.ExportAsFixedFormat xlTypePDF, CheminDossier & Range("C16").Value & Range("C12").Value.xlQualityStandard, True, False, 1, 1, False

Next

End If

Next
End Sub
 

Phil69970

XLDnaute Barbatruc
Bonjour @MBEPID

Je pense que tu as au moins 1 erreur dans ton code

A remplacer
CheminDossier = ThisWorkbook.Path & "/" & Dossier & " / "

Par
CheminDossier = ThisWorkbook.Path & "\" & Dossier & "\"

Que contient :
Range("C16").Value
et
Range("C12").Value

Et mettre le code entre balise pour la lisibilité

1732814953760.png


Et éventuellement le fichier c'est plus simple que virtuellement !!! :oops:

Merci de ton retour
 

vgendron

XLDnaute Barbatruc
Hello

tu as des pb de syntaxe: ceux donnés par Phil
mais aussi un dans l'instruction d'export du pdf: tu as mis un point au lieu d'une virgule juste avant le paramètre "qualité d'export"

VB:
Sub Créer_PDF()
Dim ligne As Integer
Dim Derligne As Integer 'Permert au code de sélectionner la dernière ligne de la feuille sélectionner dans C16
Dim WS As Worksheet 'Permert au code de rechercher la sélection C16 dans toutes les feuilles et identifier la dernière ligne
Dim Dossier 'C'est le dossier dans lequel seront stockés les bulletins en PDF
Dim Feuil As Worksheet
Set Feuil = ActiveSheet


    Dossier = Application.InputBox("Création de PDF", "Exportation en PDF...", "Bulletin")
    CheminDossier = ThisWorkbook.Path & "\" & Dossier & "\"
'    On Error Resume Next
    If Dossier = True Then 'Si je trouve un dossier portant le même nom
        GetAttr (CheminDossier) And vbDirectory
    Else
        MkDir CheminDossier
    End If
    
    For Each WS In Sheets
        Derligne = WS.Range("A50000").End(xlUp).Row 'Le Code va jusqu'à la derligne et remonte pour s'arrêter à la dernière ligne non vide
        'Il s'agit maintenant de créer des boucles, pour rechercher et se posistionner sur la classe (ou la feuille) sélectionner dans C16
        
        If WS.Name = Range("C16").Value Then 'Si une feuille porte le nom est églage à la cellule C16, alors
            For ligne = 2 To Derligne 'Une fois la classe sélectionner et le clic sur le bouton PDF, le programme vérifie la feuille sui correspond à la sélection, va dans cette feuille, commence par la ligne 2 de chaque classe jusqu'à la dernière ligne de la classe
                Range("C12").Value = WS.Cells(ligne, 2) 'Dès qu'il trouve la classe, il rappatrie la valeur (nom) dans la cellule C12
                Feuil.ExportAsFixedFormat xlTypePDF, CheminDossier & Range("C16").Value & Range("C12").Value, xlQualityStandard, True, False, 1, 1, False
            Next ligne
        End If
    Next WS
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 863
Messages
2 113 650
Membres
111 930
dernier inscrit
fab_met