XL 2013 (RESOLU) Imprimer par ComboBox des plages

chaelie2015

XLDnaute Accro
Bonsoir Forum
J'ai créé 50 plages nommées (Impression_Lot_01... Impression_Lot_50). Je recherche un code via Userform qui affiche dans une ComboBox la liste des plages à imprimer (Impression_Lot_01... Impression_Lot_50) en fonction du nombre indiqué dans la cellule D4 de la feuille 'BdD CEO'.
J'ai déjà réussi à le faire pour l'affichage des lots, mais j'ai du mal à l'adapter pour l'impression des lots.
Une fois que je sélectionne un Lot (par exemple, Lot_03), le code affiche un message avant l'impression de la plage nommée (Impression_Lot_03).
Merci
Edit: J'ai apporté une légère modification à ce code. ,mais cela n'a pas about.
 

Pièces jointes

  • BdD CEO V15 JOB en cours du 29 10 2023.xlsm
    299.9 KB · Affichages: 5
Dernière édition:
Solution
re
Voilà ce que j'ai modifié
VB:
Sub ImprimerEtEnregistrerPDF(StrRange$)
      Dim plageAImprimer As String
      Dim nomFichier As String
      Dim RngImprime As String
      Dim Ok_Impression As VbMsgBoxResult 'ici
      '  Spécifiez la plage à imprimer
    RngImprime = ThisWorkbook.Names(StrRange).RefersTo
      ' définir le chemin complet et le nom du fichier PDF
    nomFichier = ThisWorkbook.Path & "\" & StrRange & ".pdf"
      ' Demandez la confirmation de l'utilisateur avant d'imprimer
    
    Ok_Impression = MsgBox("Voulez-vous imprimer et enregistrer en tant que fichier PDF ?", vbQuestion + vbYesNo, "Confirmation")

    If Ok_Impression = vbYes Then
  
    ' Imprimez et enregistrez la plage spécifiée en tant que fichier PDF...

ChTi160

XLDnaute Barbatruc
Bonsoir Charlie

J'ai nommé "NbrLots" la Cellule D4 de la feuille "BdD CEO"

VB:
Private Sub UserForm_Initialize()
Dim NbrLot As Byte, i As Byte, StrLot$
NbrLot = Range("NbrLots").Value 'On récupère le Nombre de Lots'
For i = 1 To NbrLot 'on boucle sur le Nombre de Lots'
StrLot = "Lot_" & Format(i, "00") 'on définit le Nom du Lot'
     Me.ComboBox1.AddItem StrLot 'On ajoute au Combobox'
Next i
End Sub
à voir !
jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Une version perfectible Lol
VB:
Private Sub ComboBox1_Change()
 ImprimerPlage ("Impression_" & ComboBox1.Text)'on définit le Nom de la plage à Imprimer'
End Sub
Sub ImprimerPlage(StrRange$)
    Dim RngImprime As String
    RngImprime = ThisWorkbook.Names(StrRange).RefersTo

    If RngImprime <> "" Then
        ThisWorkbook.Sheets("BdD CEO").Range(RngImprime).PrintOut
    Else
        MsgBox "Plage invalide. Veuillez sélectionner une plage valide."
    End If
End Sub
Il faudrait savoir, comment est Nommé éventuellement le Document Imprimé Lol
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Une autre version
VB:
Private Sub ComboBox1_Change()
ImprimerEtEnregistrerPDF ("Impression_" & Me.ComboBox1.Text) 'On définit le Nom du fichier à voir ?
End Sub
'************************************************
Sub ImprimerEtEnregistrerPDF(StrRange$)
    Dim plageAImprimer As String
    Dim nomFichier As String
      Dim RngImprime As String
      '  Spécifiez la plage à imprimer
    RngImprime = ThisWorkbook.Names(StrRange).RefersTo
      ' définir le chemin complet et le nom du fichier PDF
    nomFichier = ThisWorkbook.Path & "\" & StrRange & ".pdf"

    ' Imprimez et enregistrez la plage spécifiée en tant que fichier PDF
    ThisWorkbook.Sheets("BdD CEO").Range(RngImprime).ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=nomFichier, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False
    ' Affichez un message lorsque l'opération est terminée a voir §
    MsgBox "Le fichier PDF a été créé et enregistré dans " & nomFichier, vbInformation
End Sub'
Jean marie
 
Dernière édition:

chaelie2015

XLDnaute Accro
Bonsoir Charlie

J'ai nommé "NbrLots" la Cellule D4 de la feuille "BdD CEO"

VB:
Private Sub UserForm_Initialize()
Dim NbrLot As Byte, i As Byte, StrLot$
NbrLot = Range("NbrLots").Value 'On récupère le Nombre de Lots'
For i = 1 To NbrLot 'on boucle sur le Nombre de Lots'
StrLot = "Lot_" & Format(i, "00") 'on définit le Nom du Lot'
     Me.ComboBox1.AddItem StrLot 'On ajoute au Combobox'
Next i
End Sub
à voir !
jean marie
Bonsoir jean marie
je vous remercie pour la réponse, cependant, j'ai rencontré une erreur d'exécution 1004 (la méthode 'Range' de l'objet '_Global' a échoué) après avoir modifié la procédure Private Sub UserForm_Initialize().
A+
 

chaelie2015

XLDnaute Accro
Re
Une autre version
VB:
Private Sub ComboBox1_Change()
ImprimerEtEnregistrerPDF ("Impression_" & Me.ComboBox1.Text) 'On définit le Nom du fichier à voir ?
End Sub
'************************************************
Sub ImprimerEtEnregistrerPDF(StrRange$)
    Dim plageAImprimer As String
    Dim nomFichier As String
      Dim RngImprime As String
      '  Spécifiez la plage à imprimer
    RngImprime = ThisWorkbook.Names(StrRange).RefersTo
      ' définir le chemin complet et le nom du fichier PDF
    nomFichier = ThisWorkbook.Path & "\" & StrRange & ".pdf"

    ' Imprimez et enregistrez la plage spécifiée en tant que fichier PDF
    ThisWorkbook.Sheets("BdD CEO").Range(RngImprime).ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=nomFichier, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False
    ' Affichez un message lorsque l'opération est terminée a voir §
    MsgBox "Le fichier PDF a été créé et enregistré dans " & nomFichier, vbInformation
End Sub'
Jean marie
Bonsoir Jean marie,
Je vous remercie pour cette suggestion, c'est excellent. Cependant, j'ai deux commentaires à faire :
1- J'aimerais afficher une boîte de dialogue (Msgbox) avec les options Oui ou Non pour l'impression.
2- Je voudrais renommer la feuille (la plage a imprimer) par 'Evaluation_Lot_01.pdf' (à titre d'exemple). et non pas Impression_Lot_01.pdf
Cependant, dans l'ensemble, c'est excellent.
Merci
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour Charlie
il semble évident, pour moi, qu'il suffit de remplacer "Impression" par "Evaluation" dans la Procédure
VB:
Private Sub ComboBox1_Change()
ImprimerEtEnregistrerPDF ("Evaluation_" & Me.ComboBox1.Text) 'On définit le Nom du fichier à voir ?
End Sub
Qu'a tu modifié ?
après avoir modifié la procédure Private Sub UserForm_Initialize()
tu dis :
1- J'aimerais afficher une boîte de dialogue (Msgbox) avec les options Oui ou Non pour l'impression.
je regarde dès que possible
Bonne journée
Jean marie
 

chaelie2015

XLDnaute Accro
Bonjour ChTi160, le forum
En effet, il est clairement judicieux de substituer le terme 'Impression' par 'Évaluation', mais comme je l'ai mentionné précédemment, il y a 50 occurrences à modifier (pour l'instant).
Néanmoins, c'est une option tout à fait réalisable;).
EdiT (a titre d'info): "Impression_" & Me.ComboBox1.Text: crée une chaîne de texte qui combine le mot "Impression_" avec le texte actuellement sélectionné dans la ComboBox1.
Par exemple, si l'utilisateur sélectionne "Lot_03" dans la ComboBox, cela deviendra "Impression_Lot_03",
La désignation 'Impression_Lot_03' correspond à une plage spécifique dans mon classeur.
Merci.
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Lorsque tu auras renommé les Zones à Imprimer
Code:
Private Sub ComboBox1_Change()
ImprimerEtEnregistrerPDF ("Évaluation_" & Me.ComboBox1.Text)
End Sub
'************************************
Sub ImprimerEtEnregistrerPDF(StrRange$)
    Dim plageAImprimer As String
    Dim nomFichier As String
      Dim RngImprime As String
      Dim Ok_Impression As Boolean
      '  Spécifiez la plage à imprimer
    RngImprime = ThisWorkbook.Names(StrRange).RefersTo
      ' définir le chemin complet et le nom du fichier PDF
    nomFichier = ThisWorkbook.Path & "\" & StrRange & ".pdf"
      ' Demandez la confirmation de l'utilisateur avant d'imprimer
    
    Ok_Impression = MsgBox("Voulez-vous imprimer et enregistrer en tant que fichier PDF ?", vbQuestion + vbYesNo, "Confirmation")
    If Ok_Impression = vbYes Then 'On vérifie le Choix   si Oui
    ' Imprimez et enregistrez la plage spécifiée en tant que fichier PDF
    ThisWorkbook.Sheets("BdD CEO").Range(RngImprime).ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=nomFichier, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False

    ' Affichez un message lorsque l'opération est terminée a voir §
    MsgBox "Le fichier PDF a été créé et enregistré dans " & nomFichier, vbInformation
     Else 'Si Non
        MsgBox "L'opération a été annulée.", vbInformation
    End If
End Sub
Bonne Journée
Jean marie
 

ChTi160

XLDnaute Barbatruc
re
Voilà ce que j'ai modifié
VB:
Sub ImprimerEtEnregistrerPDF(StrRange$)
      Dim plageAImprimer As String
      Dim nomFichier As String
      Dim RngImprime As String
      Dim Ok_Impression As VbMsgBoxResult 'ici
      '  Spécifiez la plage à imprimer
    RngImprime = ThisWorkbook.Names(StrRange).RefersTo
      ' définir le chemin complet et le nom du fichier PDF
    nomFichier = ThisWorkbook.Path & "\" & StrRange & ".pdf"
      ' Demandez la confirmation de l'utilisateur avant d'imprimer
    
    Ok_Impression = MsgBox("Voulez-vous imprimer et enregistrer en tant que fichier PDF ?", vbQuestion + vbYesNo, "Confirmation")

    If Ok_Impression = vbYes Then
  
    ' Imprimez et enregistrez la plage spécifiée en tant que fichier PDF
    ThisWorkbook.Sheets("BdD CEO").Range(RngImprime).ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=nomFichier, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False

    ' Affichez un message lorsque l'opération est terminée a voir §
    MsgBox "Le fichier PDF a été créé et enregistré dans " & nomFichier, vbInformation
     Else
        MsgBox "L'opération a été annulée.", vbInformation
    End If
End Sub
Jean marie
 

Hamadou

XLDnaute Nouveau
Re
Lorsque tu auras renommé les Zones à Imprimer
Code:
Private Sub ComboBox1_Change()
ImprimerEtEnregistrerPDF ("Évaluation_" & Me.ComboBox1.Text)
End Sub
'************************************
Sub ImprimerEtEnregistrerPDF(StrRange$)
    Dim plageAImprimer As String
    Dim nomFichier As String
      Dim RngImprime As String
      Dim Ok_Impression As Boolean
      '  Spécifiez la plage à imprimer
    RngImprime = ThisWorkbook.Names(StrRange).RefersTo
      ' définir le chemin complet et le nom du fichier PDF
    nomFichier = ThisWorkbook.Path & "\" & StrRange & ".pdf"
      ' Demandez la confirmation de l'utilisateur avant d'imprimer
   
    Ok_Impression = MsgBox("Voulez-vous imprimer et enregistrer en tant que fichier PDF ?", vbQuestion + vbYesNo, "Confirmation")
    If Ok_Impression = vbYes Then 'On vérifie le Choix   si Oui
    ' Imprimez et enregistrez la plage spécifiée en tant que fichier PDF
    ThisWorkbook.Sheets("BdD CEO").Range(RngImprime).ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=nomFichier, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False

    ' Affichez un message lorsque l'opération est terminée a voir §
    MsgBox "Le fichier PDF a été créé et enregistré dans " & nomFichier, vbInformation
     Else 'Si Non
        MsgBox "L'opération a été annulée.", vbInformation
    End If
End Sub
Bonne Journée
Jean marie
Private Sub UserForm_Initialize()
Dim NbrLot As Byte, i As Byte, StrLot$
NbrLot = Range("NbrLots").Value 'On récupère le Nombre de Lots'
For i = 1 To NbrLot 'on boucle sur le Nombre de Lots'
StrLot = "Lot_" & Format(i, "00") 'on définit le Nom du Lot'
Me.ComboBox1.AddItem StrLot 'On ajoute au Combobox'
Next i
End Sub
 

Discussions similaires

Réponses
7
Affichages
1 K

Statistiques des forums

Discussions
314 768
Messages
2 112 740
Membres
111 651
dernier inscrit
zazou82