Remplacer listview par listbox
bonjour à tous et toutes
merci a BOB75AU et BAKH pour leur implication dans ce post ou le dernier fichier "test" de BOB74AU est en page 2 du 25 Jan 2014, 17:20
fichier du post =
post =https://forum.excel-pratique.com/excel/iniatlisation-listview-t47186-20.html?hilit=BOB75AU
maintenant je voudrais le modifier afin de remplacer la listview qui fait défaut sur certaine machine, par une lisbox
mais je bloque et m'en remets aux mains d'expert du Forum
Bonjour,
j'ai un peu modifié le code pour faire le test à même ce fichier,
vous aurez à adapter ThisWorkbook pour votre fichier et .Sheets(1) au lieu de .Sheets(2)
et remettre actif quelque ligne que j'ai mit en commentaire
Private Sub CommandButton1_Click()
'copie les lignes selectionnées dans la colonne G
Dim i 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("monClasseurBase_V01")
With ThisWorkbook
n = .Sheets(2).Range("M65536").End(xlUp).Row + 1
'on boucle sur tous les éléments du ListBox1
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
.Sheets(2).Cells(n, "M") = UserForm2.ListBox1.List(i, 0)
.Sheets(2).Cells(n, "N") = UserForm2.ListBox1.List(i, 6)
.Sheets(2).Cells(n, "O") = UserForm2.ListBox1.List(i, 7)
End If
n = .Sheets(2).Range("M65536").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 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", _
"Castorama", "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
bonsoir sabV
Merci de ta réponse, mais il manque le combobox _change que j'ai essayer comme suis
mais sans réponse
Private Sub ComboBox1_Change()
Dim I As Integer
If UserForm2.Combox1.ListIndex <> -1 Then
For I = 1 To UserForm2.ListBox1.ListIndex.Count
If UserForm2.ListBox1.ListIndex(I).Checked = True Then UserForm2.ListBox1.ListIndex(I).Checked = False
Next I
End If
End Suble but de ce classeur est de passer commande en sélectionnant les lignes nécessaires et correspondant a tel ou tel fournisseur
puis(ou avant) choisir le fournisseur, puis une fois tous les choix fait, cliquer sur transfert qui envoie les lignes sélectionnées dans le classeur au nom choisi dans la combobox afin d'injecter les lignes a partir de la dernière écrite, ou a partir de la 8ème
ce classeur est dans un dossier "fournisseurs" sous
qui contient tous les classeurs aux noms des fournisseurs de la comboboxC:\Facturations\base\fournisseurs\
voici un exemple du classeur qui est sur
C:\Facturations\base\fournisseurs\
Bonjour,
Désolé, il n'y avait pas de macro ComboBox1_Change dans le fichier transmit,
je croyait que c'était le bouton qui faisait le transfert et que le ComboBox1 servait uniquement à renseigner le chemin.
Chemin = UserForm1.ComboBox1bonsoir sabv
le code change de la combobox est dans mon classeur actuel, oubli de le préciser