1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Private Sub VALIDER_Click()
Dim val As String
Dim dernl As Range, liste As Range
Dim t As Range
Dim nbcol As Integer
Dim i As Integer, k As Integer, a As Byte
Dim Tablo()
Dim dernval As Range
'Occurence à rechercher dans la colonne 1 de la feuille "TABLE"
val = Cmbosecteur.Value
With Sheets("TABLE")
'Dernière ligne de la feuille "TABLE"
Set dernl = .Cells(.Rows.Count, 1).End(xlUp)
'liste des occurences dans laquelle chercher la valeur de la Combobox
Set liste = .Range(.Cells(5, 1), dernl)
'Cellule correspondante à la recherche
Set t = liste.Find(val, Lookat:=xlWhole)
'Dernière colonne de la feuille "TABLE"
nbcol = .Cells(5, .Columns.Count).End(xlToLeft).Column - 1
'Compteur des occurences informées
k = 0
'Il y a 4 champs (joint, vérin...) placés toutes les 3 colonnes à partir de la colonne des occurences (A1, A2...)
For i = 1 To nbcol
'Test si le champ est informé
If t.Offset(0, i) + 0 > 0 Then
'Si oui, alors le compteur augmente de 1
k = k + 1
'On redimensionne la variable Tableau de 1 occurence k tout en conservant les précédents enregistremeents
'Il y a 4 champs à retenir (Nom de la pièce, Référence, Quantité N, Quantité D)
ReDim Preserve Tablo(1 To 2, 1 To k)
'1ère valeur = nom de la pièce placé en ligne 5
Tablo(1, k) = .Cells(5, 1 + i)
'Référence
Tablo(2, k) = t.Offset(0, i)
End If
Next i
End With
'Information de la feuille Résultats
With Sheets("D.AFFICHEE")
'Effacement des anciens enregistrements...
Set dernval = .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1)
'... à conditions qu'il y en ait, sinon on effacerait la ligne de titres
If dernval.Row > 5 Then .Range("A6", dernval).ClearContents
'On informe le champ correspondant à la variable Tableau transposée
.Range("C7").Resize(UBound(Tablo(), 2), UBound(Tablo(), 1)).Value = WorksheetFunction.Transpose(Tablo)
.Range("I7").Resize(UBound(Tablo(), 2), UBound(Tablo(), 1)).Value = WorksheetFunction.Transpose(Tablo)
End With
'libération des variables
Erase Tablo
Set dernval = Nothing
Set liste = Nothing
Set dernl = Nothing
'Formulaire caché puis déchargé
Me.Hide
Unload Me
End Sub |
Partager