brionfred
XLDnaute Nouveau
Bonjour tout le monde
J'aurais besoin de vos lumières pour modifier le code suivant, j'ai parcouru plusieurs forum mais je n'ai pas trouvé la solution :
Dans mes Userforms je fais appel au module ci-dessous ["Private Sub Imp_ListviewModelClient()"] pour une impression, et pour cela je souhaiterais intégrer une variable au niveau de l'instruction "With".
Cette variable serais renseignée par la valeur d'une cellule comportant le nom de l'userform et le nom de la listview. Afin de me permettre l'utilisation de ce code pour plusieurs Userform.
Est-ce possible ???
Merci de vos conseils et solutions
Cordialement
J'aurais besoin de vos lumières pour modifier le code suivant, j'ai parcouru plusieurs forum mais je n'ai pas trouvé la solution :
Dans mes Userforms je fais appel au module ci-dessous ["Private Sub Imp_ListviewModelClient()"] pour une impression, et pour cela je souhaiterais intégrer une variable au niveau de l'instruction "With".
Cette variable serais renseignée par la valeur d'une cellule comportant le nom de l'userform et le nom de la listview. Afin de me permettre l'utilisation de ce code pour plusieurs Userform.
Est-ce possible ???
Code:
Private Sub Imp_ListviewModelClient()
' Impression listing Modèles par Clients
' 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:N").Select
Selection.Clear
Columns("A:N").Select
Selection.NumberFormat = "@"
'---------------------------------------------------------------------------------------
'Copie en-têtes et données de la listview
'---------------------------------------------------------------------------------------
'
With USFListeModeleClient.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
Columns("A:A").Delete
'---------------------------------------------------------------------------------------
'Mise en forme de la page
'---------------------------------------------------------------------------------------
'
'Formatage des colonnes
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
End With
Columns("A:N").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""&16BARDUSCH" 'En-tête gauche en Arial taille 16 gras
.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
Application.Dialogs(xlDialogPrintPreview).Show
End Sub
Merci de vos conseils et solutions
Cordialement