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.
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
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.
« 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
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
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.
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
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.
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