Adapter code pour sauvegarde PDF

Bonjour à tous,

serait-il possible de modifié ce code ci-dessous pour que les onglets sélectionné soient enregistrer en PDF dans un dossier de mon pc ou bien que l’explorateur s’ouvre pour choisir l’endroit de l’enregistrement en PDF ?

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim O As Object 'déclare la variable O (Onglets)

For Each O In Sheets 'boucle sur tous les onglets du classeur
    If O.Visible = True Then Me.ListBox1.AddItem O.Name 'si l'onglet est visible, ajoute le nom de l'onglet à la ListBox1
Next O 'prochain onglet de la boucle
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'au double-clic dans la ListBox1
Dim I As Integer 'déclare la variable I (Incrément)

For I = 0 To Me.ListBox1.ListCount - 1 'boucle sur tous les élément de la ListBox1
    If Me.ListBox1.Selected(I) = True Then 'condition : si l'élément est sélectionné
        Me.ListBox2.AddItem Me.ListBox1.List(I) 'copie l'élément dans la Listox2
        Me.ListBox1.RemoveItem (I) 'supprime l'élément de la ListBox1
        Exit For 'sort de la boucle
    End If 'fin de la condition
Next I 'prochaine élément de la ListBox1
End Sub

Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'au double-clic dans la ListBox2
Dim I As Integer 'déclare la variable I (Incrément)

'si l'utilisateur s'est trompé et veux revenir en arrière

For I = 0 To Me.ListBox2.ListCount - 1 'boucle sur tous les élément de la ListBox2
    If Me.ListBox1.Selected(I) = True Then 'condition : si l'élément est sélectionné
        Me.ListBox1.AddItem Me.ListBox2.List(I) 'copie l'élément dans la Listox1
        Me.ListBox2.RemoveItem (I) 'supprime l'élément de la ListBox1
        Exit For 'sort de la boucle
    End If 'fin de la condition
Next I 'prochaine élément de la ListBox1
End Sub

Private Sub CommandButton1_Click() 'bouton "Imprimer la Liste"
Dim I As Integer 'déclare la variable I (Incrément)
Dim O As Object 'déclare la variable o (Onglets)

For I = 0 To Me.ListBox2.ListCount - 1 'boucle sur tous les éléments de la ListBox2
    Set O = Sheets(Me.ListBox2.List(I)) 'définit l'onglet O
    O.PrintOut 'imprime l'onglet O
Next I 'prochain élément de la boucle
Unload Me 'vide et ferme l'userForm
End Sub

Private Sub CommandButton2_Click() 'bouton "Sortir"
Unload Me 'vide et ferme l'userForm
End Sub

Merci d’avance pour votre aide. Si besoin je peux joindre le fichier excel.

Bonjour,

Personne pour m’aider ?

Bonsoir

Avec ton code qui présente plusieurs procédurse avec leur propre déclenchement (CommandButton1_Click, ListBox2_DblClick, ListBox1_DblClick, UserForm_Initialize)
bien difficile de comprendre le context dans lequel doit se réaliser ces enregistrements pdf
Il faudrait être plus précis le concernant
Moi j’avoue être très perplexe concernant ta demande

Salut @FFO j’espère que tu vas bien ?

Pour être plus clair j’ai un bouton dans ma page de garde qui me permet de sélectionner les onglets que je souhaite imprimer. ( je sélectionne et j’imprime)

Cependant je voudrais au lieu de les imprimer que cela les enregistre dans un dossier donné ou que cela m’ouvre l’explorateur de fichier pour choisir la destination de sauvegarde.

Je ne sais pas si c’est assez clair.

Ci-joint un ficher test.

TEST.xlsm (194,5 Ko)

Merci de ton aide en tout cas.

Bonjour

Très bien merci

« Cependant je voudrais au lieu de les imprimer que cela les enregistre dans un dossier donné ou que cela m’ouvre l’explorateur de fichier pour choisir la destination de sauvegarde. »

C’est à dire remplacer le bouton « Imprimer la Liste » par « Enregistrer la Liste » et ce en fichier pdf

Merci de me confirmer

De plus il me faut des précisions quant au répertoire et au nom d’enregistrement pour chaque onglet à utiliser

Je te fais cette proposition ci-jointe
Fais une sélection dans la listebox1 d’un onglet puis cliques sur le bouton « Enregistrement sélection en pdf »

Testes et dis moi
TEST (3).xlsm (181,1 Ko)

Salut FFO,

Ta proposition va bien dans le sens de ce que je voudrais. Cependant, ce ne sont pas les onglets sélectionnés, mais seulement l’onglet qui est bleuté lors de la sélection.

Quand je sélectionne les onglets que je veux, je clique sur imprimer et cela m’imprime seulement les onglets que j’ai sélectionnés dans ma userform, c’est-à-dire que je l’ai fait passer de la case gauche à la case droite dans la userform.

Et je voudrais avoir la même chose pour les transformer en PDF. Ta proposition est parfaite, il faudrait juste que ce soit toute la sélection de la case droite, soit sauvegardé en pdf et non seulement l’onglet sélectionner/bleuté

(Pour mieux comprendre « la sélection/bleuté » ci-dessous une capture. C’est que la « sélection bleutée » qui s’enregistre en PDF)

Bonjour
Oui mais le soucis c’est que cela conditionne le passage de l’onglet de la listebox de gauche vers celle de droite avant de pouvoir faire l’enregistrement en pdf
Pourquoi ne pas d’abord faire l’enregistrement avant l’action du bouton « Imprimer la liste »
Je sélectionne à gauche, j’enregistre en pdf,je doubleclique, j’imprime la Liste

Sinon ci-joint une variante qui au doubleclique de l’onglet dans la ListeBox de gauche bascule la sélection sur celle de droite et déclenche ensuite l’enregistrement de celle-ci
Ainsi de s’affranchir de la problématique que je t’ai ci-dessus exposé
Le bouton « Enregistrement sélection en pdf » reste opérationnel à l’identique

Testes et dis moi

TEST (3).xlsm (181,3 Ko)

D’accord, je vois ce que tu veux dire et je pense qu’on s’est mal compris :D.
Ce que je voudrais, c’est que dans le même type que pour l’impression avoir une sélection multiple d’onglet pour soit les enregistrer en pdf ou soit les imprimer.

Donc dans un premier temps sélectionner les onglets et ensuite choisir si je souhaite imprimer la sélection ou si je souhaite sauvegarder la sélection en PDF.

Ton fichier avec tes désidératas conformes j’espère

Testes et dis moi

TEST (3).xlsm (182,9 Ko)

Oui voila, dans l’idée c’est ce que je cherche. Seulement, est il possible de faire la sauvegarde en 1 seul PDF et non un PDF par onglets ?

Hélas non c est un onglet par fichier pdf
Il faudrait dans un seul et même onglet recopier ceux destinés à l enregistrement en pdf et l utiliser pour confectionner l unique fichier pdf à enregistrer
Sinon il existe des utilitaires pour réaliser un seul fichier pdf à partir de plusieurs du même type
A toi de voir

Salut FFO,

Je te remercie de ta réponse. Je pensais que cela était possible comme « l’enregistrement sous » normal en fichier PDF à la différence que je sélectionne les onglets que je souhaite en PDF. Comme pour l’impression ou je sélectionne et cela m’imprime les onglets sélectionnés.

Si ce n’est pas possible autrement, je me contente de cette solution.

Merci encore pour ta réponse.

Bonjour

J’ai regardé si une solution était possible
J’ai testé le fichier en enregistrant un macro lors de l’enregistrement manuel de plusieurs onglets en un fichier pdf
le code généré fais appel à l’instruction Array pour cumuler les onglets choisis et d’obtenir cette ligne de code :

Sheets(Array(« TEST 2 », « TEST 4 », « TEST 6 »)).Select

Puis cette sélection d’onglets d’être intégrée et enregistrée dans un fichier pdf

Le PB c’est que cette ligne en l’état fige les onglets concernés et pas moyen d’utiliser une variable pour que cette liste soit modulable

Si je trouve une parade je te la communique

Promis

Pour l’instant il faut faire avec ma dernière proposition avec un pdf par onglet choisi

Peut être une bonne nouvelle prochainement

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.