'#################################################
'REMPLIR LES TEXTBOX APRES AVOIR SELECTIONNER UNE LIGNE
'#################################################
Private Sub LSVB_Click()
Dim J
Dim Idx As Long
Dim LIGNE As Long
With LSVB
If .ListItems.Count = 0 Then Exit Sub
Idx = .SelectedItem.Index
LIGNE = CInt(.ListItems(.SelectedItem.Index).ListSubItems(??).Text)
TB2 = .SelectedItem
For J = 1 To .ColumnHeaders.Count - 2
Controls("TextBox" & J + 2) = .ListItems(.SelectedItem.Index).ListSubItems(J).Text
Next
End With
End Sub
'#################################################
'INITIALIZE
'#################################################
Private Sub UserForm_Initialize()
'pour ne pas faire apparaitre les messages d'erreur
Application.DisplayAlerts = False
On Error Resume Next
'adapter la taille de l'userform à la taille de l'écran
Me.Height = Application.Height
Me.Width = Application.Width
'Déclarer les variables
Dim txttotal2
Dim plage
Dim cel
Dim DTPicker1 As Object
DTPicker1.Value = Sheets("bd1").Range("I4")
With Me.LSVB 'Me=cet userform et LSVB =nom de la listview
With .ColumnHeaders
.Clear
.Add , , "ARTICLE", 60 '60=dimension de la colonne de la listview
.Add , , "DESIGNATION", 140
.Add , , "DEV-LOG", 35 'devis/LOG
.Add , , "METH", 35 'methodes
.Add , , "MODE", 35 'modelage
.Add , , "FOND", 35 ' fonderie
.Add , , "PARA", 35 ' para
.Add , , "CONT", 35 'controle
.Add , , "CHANTIER", 40
.Add , , "NUANCE", 40
.Add , , "COULEE SPECIALE", 40
.Add , , "CLIENT", 80
.Add , , "QUANTITE", 60
.Add , , , 0
End With
.View = 3 ' type Report
.Gridlines = True ' affichage de lignes
.FullRowSelect = True ' sélection complète de la ligne
.HideColumnHeaders = False ' afficher les en-têtes de colonnes
.LabelEdit = 1 ' ne pas autoriser la saisie
End With
'effacer la listview
LSVB.ListItems.Clear
'Remplir la listview avec les données de la base de la feuille BD1
With Sheets("bd1")
'Afficher les données jusqu'à la dernière ligne trouvée
Set plage = .Range("A4:A" & .Range("A65000").End(xlUp).Row)
For Each cel In plage
With LSVB
.ListItems.Add , , cel
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 1)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 3)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 7)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 13)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 14)
End With
Next
End With
'inscrire le nombre de lignes trouvées dans le label12
txttotal2 = LSVB.ListItems.Count
Label12 = txttotal2
End Sub
'#################################################
'AFFICHER TOUTES LES LIGNES SAISIES
'#################################################
Private Sub CommandButton3_Click()
'Déclarer les variables
Dim txttotal2
Dim plage
Dim cel
On Error Resume Next
'Mettre les noms dans les entêtes
With Me.LSVB 'Me=cet userform et LSVB =nom de la listview
With .ColumnHeaders
.Clear
.Add , , "ARTICLE", 60 '60=dimension de la colonne de la listview
.Add , , "DESIGNATION", 140
.Add , , "DEV-LOG", 35 'devis
.Add , , "METH", 35 'methodes
.Add , , "MODE", 35 'modelage
.Add , , "FOND", 35 ' fonderie
.Add , , "PARA", 35 ' para
.Add , , "CONT", 35 'controle
.Add , , "CHANTIER", 40
.Add , , "NUANCE", 40
.Add , , "COULEE SPECIALE", 40
.Add , , "CLIENT", 80
.Add , , "QUANTITE", 60
.Add , , , 0
End With
.View = 3 ' type Report
.Gridlines = True ' affichage de lignes
.FullRowSelect = True ' sélection complète de la ligne
.HideColumnHeaders = False ' afficher les en-têtes de colonnes
.LabelEdit = 1 ' ne pas autoriser la saisie
End With
'effacer la listview
LSVB.ListItems.Clear
'Remplir la listview avec les données de la base de la feuille BD1
With Sheets("bd1")
'Afficher les données jusqu'à la dernière ligne trouvée
Set plage = .Range("A4:A" & .Range("A65000").End(xlUp).Row)
For Each cel In plage
With LSVB
.ListItems.Add , , cel
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 1)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 3)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 7)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 13)
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.Offset(0, 14)
End With
Next
End With
'inscrire le nombre de lignes trouvées dans le label12
txttotal2 = LSVB.ListItems.Count
Label12 = txttotal2
End Sub
'#################################################
'RECHERCHE LA SAISIE DANS LA TEXTBOX
'#################################################
'partie1
Private Sub CommandButton4_Click()
'Déclarer les variables
Dim i As Long
Dim c As Range
Dim txttotal2
'vider la listview
LSVB.ListItems.Clear
'si texte de recherche ="" alors on sort
If TB2 = "" Then Exit Sub
'recherche
With Sheets("BD1")
i = 4 'la 1ere ligne de données est à la ligne 4 du tableur
Do
For Each c In .Range(.Cells(i, 1), .Cells(i, 7))
If UCase(CStr(c.Value)) = UCase(TB2.Value) Or InStr(CStr(c), TB2) > 0 Then
IniLvw12 c.Row 'appel de la procédure inilvw12
Exit For
End If
Next c
i = i + 1
Loop While .Cells(i, 1) <> ""
End With
'compter le nombre de lignes trouvées
txttotal2 = LSVB.ListItems.Count
'inscrire le nombre de lignes trouvées dans le label
Label12 = txttotal2
End Sub
'partie2
Sub IniLvw12(a As Long)
On Error Resume Next
Dim x
Dim i
Dim J
With LSVB
.ListItems.Add , , Sheets("BD1").Cells(a, 1)
x = .ListItems.Count
For i = 1 To 8
.ListItems(x).ListSubItems.Add , , Sheets("BD1").Cells(a, i + 1)
Next
.ListItems(x).ListSubItems.Add , , a
For i = 1 To .ListItems.Count
If .ListItems(i) = TB2 Then .ListItems(i).Bold = True
For J = 1 To .ColumnHeaders.Count - 1
If .ListItems(i).ListSubItems(J).Text = TB2 Then
.ListItems(i).ListSubItems(J).Bold = True
End If
Next J
Next i
End With
With Me.LSVB 'Me=cet userform et LSVB =nom de la listview
With .ColumnHeaders
.Clear
.Add , , "ARTICLE", 60 '60=dimension de la colonne de la listview
.Add , , "DESIGNATION", 140
.Add , , "DEV-LOG", 35 'devis
.Add , , "METH", 35 'methodes
.Add , , "MODE", 35 'modelage
.Add , , "FOND", 35 ' fonderie
.Add , , "PARA", 35 ' para
.Add , , "CONT", 35 'controle
End With
.View = 3 ' type Report
.Gridlines = True ' affichage de lignes
.FullRowSelect = True ' sélection complète de la ligne
.HideColumnHeaders = False ' afficher les en-têtes de colonnes
.LabelEdit = 1 ' ne pas autoriser la saisie
End With
End Sub
'#################################################
'BOUTON SUPPRIMER LIGNE SELECTIONNEE
'#################################################
Private Sub CommandButton5_Click() 'VISUALISATION Supprim
'Déclarer les variables
Dim SuppLigne As Long
'Si erreur allez à "fin"
On Error GoTo fin
SuppLigne = Me.LSVB.SelectedItem.Index + 1
With Me.LSVB
.ListItems.Remove .SelectedItem.Index
Worksheets("bd1").Rows(SuppLigne).Delete Shift:=xlUp
End With
'gestion d'erreur
fin:
End Sub