'---------------------------------------------------------------------------------------
' Procedure : Imp_Listview
' Objet :
'---------------------------------------------------------------------------------------
'
Private Sub Imp_Listview()
' Sauvegarde des résultats dans une feuille Excel
Dim i As Byte
Dim j As Byte
Dim textecom As String
Dim ligne As Integer
Application.EnableEvents = False
Application.ScreenUpdating = False
ligne = 1
Sheets("imp").Activate
'---------------------------------------------------------------------------------------
'Effacement de la sauvegarde précédente
'---------------------------------------------------------------------------------------
'
Columns("A:H").Select
Selection.Clear
Columns("A:H").Select
Selection.NumberFormat = "@"
'---------------------------------------------------------------------------------------
'Copie en-têtes et données de la listview
'---------------------------------------------------------------------------------------
'
With Me.ListView1
'mise en place des entetes dans la première ligne
For i = 1 To .ColumnHeaders.Count
Sheets("imp").Cells(ligne, i) = .ColumnHeaders(i)
Next i
'Mise en, place des données dans les lignes suivantes
For i = 1 To .ListItems.Count 'il y aura autant de lignes que d'items dans la listview
ligne = ligne + 1
Sheets("imp").Cells(ligne, 1) = .ListItems(i) 'on écrit le contenu de la première cellule
For j = 1 To .ListItems(i).ListSubItems.Count 'puis les autres cellules à partir de 1 (premier index=0)
textecom = .ListItems(i).ListSubItems(j)
Sheets("imp").Cells(ligne, j + 1) = textecom 'on boucle sur chaque donnée
Next j
Next i
End With
'---------------------------------------------------------------------------------------
'Mise en forme de la page
'---------------------------------------------------------------------------------------
'
'Formatage des colonnes
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
End With
Columns("A:H").Select
Selection.Columns.AutoFit 'largeur des colonnes A à F déterminée en fonction du contenu
'---------------------------------------------------------------------------------------
'Application d'un format automatique "xlRangeAutoFormatList1"
'---------------------------------------------------------------------------------------
'
Range("A2").Select
If ActiveCell.Value = "" Then ActiveCell.Value = "111111" 'si la cellule est à blanc, le format va l'inclure dans le titre
'donc on force la valeur à une constante
Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True, Font _
:=True, Alignment:=True, Border:=True, Pattern:=True, Width:=True 'on applique le format automatique du tableau
If ActiveCell.Value = "111111" Then ActiveCell.Value = "" '(si la valeur de la cellule a été forcée, on la remet à blanc
'---------------------------------------------------------------------------------------
'Définition de la mise en page (en mode paysage) Changer le paramètre si portrait
'---------------------------------------------------------------------------------------
'
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1" 'Ligne à imprimer sur chaque page
.PrintTitleColumns = ""
.PrintArea = "" 'pas de définition de zone d'impression ==> on imprime toutes les données
.LeftHeader = "&""Arial,Gras""&16SOCIETE" 'En-tête gauche en Arial taille 16 gras
.CenterHeader = "&""Arial,Gras""&14" & Listview.Caption 'titre central en arial 14 gras = en-tête de la listview
.RightHeader = "Le &D" 'on met la date en partie droite
.CenterFooter = "Page &P / &N" 'et la pagination en pied de page
'puis on définit les marges
.LeftMargin = Application.InchesToPoints(0.8)
.RightMargin = Application.InchesToPoints(0.8)
.TopMargin = Application.InchesToPoints(1)
.BottomMargin = Application.InchesToPoints(0.8)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
.CenterHorizontally = True 'résultat centré horizontalement dans la page
.Orientation = xlLandscape 'mode paysage
.PaperSize = xlPaperA4 'papier A4: Instruction à mettre en commentaires si l'imprimante ne permet pas ce choix
'sinon il y aura une erreur à l'exécution
.Zoom = False 'pas de zoom
.FitToPagesWide = 1 'l'impression s'adapte à une page de large
.FitToPagesTall = False 'nombre de pages en fonction des données
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub