je suis en cours de modification de mon classeur pour passer d'une listview a une listbox qui passe plus facilement le cap d'un pc a l'autre
j'ai réussi une grosse partie mais je bloque sur le code de la combobox
donc c'est un classeur pour passer des commande au fournisseurs dont leur classeur sont sur C:\Facturation\base\fournisseurs
voici le code au complet
- Code:
Option Explicit
Private Sub ComboBox1_Change()
Dim i As Integer
If UserForm1.ComboBox1.ListCount <> -1 Then
For i = 1 To UserForm1.ListBox1.ListCount - 1
' If UserForm1.ListBox1.AddItem(I).Checked = True Then UserForm1.ListBox1.AddItem(I).Checked = False
Next i
End If
End Sub
Private Sub CommandButton1_Click()
'copie les lignes selectionnées dans la colonne G
Dim i As Integer, n As Integer
Dim rg As Range
Dim fichier As Workbook
Dim Chemin As String
Chemin = UserForm1.ComboBox1
Application.ScreenUpdating = False
On Error Resume Next
'If ListBox1.ListIndex = -1 Then Exit Sub 'si aucune selection
Set fichier = Workbooks.Open("C:\Facturations\base\fournisseurs\" & Chemin)
With Workbooks(Chemin)
'on boucle sur tous les éléments du ListBox1
For i = 0 To ListBox1.ListCount - 1
If UserForm1.ListBox1.Selected(i) = True Then
.Sheets(1).Range("B65536").End(xlUp).Offset(1, 0) = UserForm1.ListBox1.List(i, 0)
.Sheets(1).Range("B65536").End(xlUp).Offset(1, 1) = UserForm1.ListBox1.List(i, 6)
.Sheets(1).Range("B65536").End(xlUp).Offset(0, 2) = UserForm1.ListBox1.List(i, 7)
End If
n = .Sheets(1).Range("d65536").End(xlUp).Row + 1
Next i
' .Close (1)
End With
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
Dim rg As Range
Dim t As Byte, x As Byte, j As Byte
Dim i As Integer
Dim fournisseur As Variant
Set rg = Sheets("Feuil1").Range("d19:k" & Range("k65536").End(xlUp).Row)
With Me.ListBox1
.ColumnCount = rg.Columns.Count
.BoundColumn = 1
.ColumnWidths = "100;5;5;5;5;60;60;60"
.ListStyle = fmListStyleOption
.MultiSelect = fmMultiSelectMulti
.Clear
.List = rg.Value
End With
fournisseur = Array("Rouenel", "Rexel", "Tanguy", "Leader Mat", _
"Point P", "Dispano", "Cedeo", "Kerbrat", "Qama", _
"Foussier", "Wurth", "Berner")
For i = 0 To UBound(fournisseur)
ComboBox1.AddItem fournisseur(i)
Next i
ComboBox1.ListIndex = 0
End Sub
et aussi le fichier avec un peu d'explication
[url= http://vbaddict.altervista.org/Fichier_upload/grisan29/Copie_de_TEST.xlsm]classeur test[/url]
et voici aussi un des classeurs qui est dans le dossier "fournisseurs" pour faire des test de remplissage
classeur de réception