XL 2016 selection impression

bandimalou

XLDnaute Occasionnel
bonjour a tous
je me tourne vers vous car je n'arrive pas a résoudre un souci d'impression d'une listbox
j'ai trouve sur le forum ce dont j'avais besoin pour l'impression qui fonctionne très bien
mais il m'imprime toute les cellules de A à W, je souhaiterais pouvoir imprimer seulement de A à M
dans l'USF "préparation" après avoir choisi des dates il faut cliquer sur Imprimer
merci de votre aide
Bandimalou
 

Pièces jointes

  • test commerciaux.xlsm
    71.8 KB · Affichages: 49

job75

XLDnaute Barbatruc
Bonjour bandimalou,

Il y a au moins 3 choses à reprendre dans votre fichier.

1) En colonnes R et S les dates ne sont pas de vraies dates mais des textes, revalidez-les pour les convertir.

2) Lorsqu'une ListBox a plus de 10 colonnes on ne peut pas utiliser la méthode AddItem.

S'il n'y a qu'une ligne (n = 1), il faut en ajouter une 2ème, vide :
Code:
Private Sub CBAfficher_Click()
Dim dat1 As Date, dat2 As Date, t, i&, n&, liste(), j%

ListBox1.Clear
If Not IsDate(Text1) Then TextBox1 = "": Text1.SetFocus: Exit Sub
If Not IsDate(Text2) Then TextBox2 = "": Text2.SetFocus: Exit Sub

dat1 = CDate(Text1): dat2 = CDate(Text2)
t = Sheets("Resultat").[A1].CurrentRegion.Resize(, 19) 'tableau VBA, plus rapide

For i = 2 To UBound(t)
    If t(i, 18) >= dat1 And t(i, 19) <= dat2 Then
        n = n + 1
        ReDim Preserve liste(1 To 19, 1 To n) 'tableau VBA, plus rapide
        For j = 1 To 19
            liste(j, n) = t(i, j)
        Next j
    End If
Next i

If n = 1 Then ReDim Preserve liste(1 To 19, 1 To 2) 'pour l'ajout d'une ligne vide
ListBox1.List = Application.Transpose(liste) 'Transpose accepte 65536 lignes au maximum
End Sub
3) Et bien sûr la macro pour l'impression :
Code:
Private Sub CommandButton1_Click()
If ListBox1.ListCount = 0 Then Exit Sub
Application.ScreenUpdating = False
With Workbooks.Add.Sheets(1) 'création d'un nouveau classeur temporaire
    .[A1].Resize(ListBox1.ListCount, 13) = ListBox1.List 'colonnes A à M
    .PageSetup.Orientation = xlLandscape 'paysage (facultatif)
    .PageSetup.Zoom = False
    .PageSetup.FitToPagesWide = 1 '1 page en largeur
    .PrintOut 'impression
    .Parent.Close False 'suppression du classeur temporaire
End With
Application.ScreenUpdating = True
End Sub
A+
 

bandimalou

XLDnaute Occasionnel
Bonsoir Job75
Merci de te pencher sur mon problème,
alors pour l'impression c'est super, c'est exactement ce que je cherchais par contre lorsque je modifie ton code pour la listbox ça ne fonctionne pas.
et une dernière question,sais tu comment on peux ouvrir l'USF "préparation" sans que la date soit demandée automatiquement
bonne soiree
Bandimalou
 

bandimalou

XLDnaute Occasionnel
bonsoir job75,
désolé je me suis mal expliqué, je n'ai pas modifier votre code.
j'ai remplacer mon code par le votre e et après avoir réessayer aujourd'hui ça fonctionne.
et oui j'ai suivi vos conseils, de remplacer les dates en dates et non en textes
merci encore de votre aide
bonne soiree
Bandimalou
 

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T