Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Userform impression + choix des feuilles

candido57

XLDnaute Occasionnel
Bonjour,
J'ai un fichier avec une liste de nom. Je voudrais en appuyant un bouton "IMPRESSION LISTE" qu'une fenêtre s'ouvre et que je puisse sélectionner la feuille que je veux imprimer et ceci pour chaque personne de la liste de la feuille "Enfants".
Dans la fenêtre, je voudrais voir apparaitre uniquement l'onglet Hiver 1, Été 1, Été 2 et Hiver 2.
J'ai déjà une macro pour impression, mais elle imprime la liste vers le bas par rapport au chiffre que je saisie en cellule B1 feuille "Hiver 1"
Si par exemple, j'ai une liste de 100 personnes, si je saisie le N°50 , la macro imprime de 50 à 100.

Le but c'est d'imprimer les feuilles sélectionnées et pour chaque personne de la liste.

Merci beaucoup
 

Pièces jointes

  • Test 57.xlsm
    89.7 KB · Affichages: 4

wDog66

XLDnaute Occasionnel
Bonjour Candido,

Si j'ai bien compris votre demande,
voici votre fichier avec un USF qui permet le choix étendu des noms et feuilles

A+
 

Pièces jointes

  • Candido57_Imprimer liste.xlsm
    93.3 KB · Affichages: 4

candido57

XLDnaute Occasionnel
Bonjour Candido,

Si j'ai bien compris votre demande,
voici votre fichier avec un USF qui permet le choix étendu des noms et feuilles

A+
Bonjour,
Merci beaucoup, oui c'est un peu ça ce que je veux.
Mais je voudrais sélectionner plusieurs nom ou la liste complète. le choix peut se faire en surbrillance ? Ou exemple 2 noms et 2 feuille au choix, voir les 4 feuilles en même temps ou toutes la liste de noms et les 4 feuilles en même temps.
En tout cas sur la première feuille Hiver 1 fonctionne
Je suppose que le bouton impression de droite c'est ANNULER. Et ça annule quoi ? J'ai rajouter
"Unload Me" pour quitter > Je ne sais pas si c'est ça que tu voulais faire .
Par contre la macro bloque > Voir capture écran
 

Pièces jointes

  • Capture d'écran 2024-10-16 172852.png
    20.2 KB · Affichages: 4
  • Candido57_Imprimer liste.xlsm
    80.1 KB · Affichages: 4
Dernière édition:

wDog66

XLDnaute Occasionnel
Re,

Je vous signale que c'est ce que vous pouvez faire !

Bref je n'irai pas plus loin si vous ne savez pas utiliser MAJ ou CTRL pour sélectionner un ensemble
 

candido57

XLDnaute Occasionnel
Re,


Je vous signale que c'est ce que vous pouvez faire !

Bref je n'irai pas plus loin si vous ne savez pas utiliser MAJ ou CTRL pour sélectionner un ensemble
Par exemple si je choisis 2 noms et je sélectionne les feuilles hiver 1 et Été 1, il imprimé que la feuille Hiver 1 mais pas les deux. J'ai 2 impressions au lieu de 4.
Oui je sais utiliser la touche majuscule pour sélectionner plusieurs critères, mais je pensais que c'était plus simple si on pouvait mettre en surbrillance ou pouvoir cocher, mais c'est très bien comme ça, mais la macro bloque et toutes les impressions ne sortent pas
En tout cas merci
 

Oneida

XLDnaute Impliqué
Bonjour tous

wDog66

Ca roules?

candido57

D'apres ce que je comprends, ceci devrait aller

Listboxs: multisect et styleOption(en realite case a cocher mais se comporte comme optionbutton)
Selction comme ecrit precedement touche MAJ ou ctrl suivant type de selection voulue
 

Pièces jointes

  • Candido57_Imprimer liste.xlsm
    72.9 KB · Affichages: 10

candido57

XLDnaute Occasionnel
Bonjour,
J'ai rajouter dans la macro une mis en page de la feuille à imprimer "Call Ajuster" voir plus bas, l'ajustement la feuille fonctionne , mais si je choisie un nom et une feuille, il imprime toujours la 4ème. Moi je voudrais qu'il imprime ce que j'ai sélectionné.
Est ce que quelqu'un aurait une idée?

Private Sub Cbn_Imprimer_Click()
'Application.ScreenUpdating = False ' Faire fonctionner la macro sans exécuter
Dim Ind1 As Long, Ind2 As Long
Dim ShP As Worksheet

For Ind2 = 0 To Me.ListBox2.ListCount - 1
If Me.ListBox2.Selected(Ind2) Then
Set ShP = Sheets(Me.ListBox2.List(Ind2))

For Ind1 = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(Ind1) Then
ShP.Range("B1").Value = Me.ListBox1.List(Ind1)
'Debug.Print ShP.Name & "----" & ShP.Range("B1").Value

Call MASQUER_LIGNE
Call Fermer_La_fenêtre

Call Ajuster

ShP.PrintOut
Call AFFICHER_LIGNE

End If
Next Ind1
End If
Next Ind2
Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
Dim BdEnf As Range
Dim Sh As Worksheet
With ThisWorkbook.Sheets("Enfants")
Set BdEnf = .Range("A4:A" & .Range("A" & Rows.Count).End(xlUp).Row)
End With
Me.ListBox1.List = BdEnf.Value
For Each Sh In ThisWorkbook.Sheets
If InStr(1, Sh.Name, "Hiver") > 0 Or InStr(1, Sh.Name, "Été") > 0 Then
Me.ListBox2.AddItem Sh.Name
End If
Next Sh
End Sub



Sub Ajuster()

'ActiveSheet.Select
With ActiveSheet.PageSetup
.PrintArea = "$A$1:$AA$78"
.PaperSize = xlPaperA4
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0.3)
.BottomMargin = Application.InchesToPoints(0)
.Zoom = 60
.Orientation = xlLandscape

ActiveSheet.PrintPreview

End With

End Sub
 

Discussions similaires

Réponses
6
Affichages
238
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…