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
| Sub Bipette()
Dim NBipette As String
Dim i As Integer 'Lignes utilisées pour le tri de la colonne N°Vidange
Do While NBipette = "" 'Je boucle tant que l'utilisateur ne rentre pas un valeur.
NBipette = InputBox("Insérez N°Bipette", "N°Bippette", "Valeur N°Bipette")
Loop
i = SerchXls(Range("B:B"), Range("B1"), NBipette, True, False) 'Je recherche NBipette dans la colonne B à partir de la position B1, sur la totalité de la cellule et sans repasser par la ligne 1
If i <> 0 Then 'Si i=0 recherche infructueuse donc ajout à la fin.
Cells(i, 3) = NBipette 'On attribue à la case de vidange le n°Bipette
Else
Cells(Cells.Rows.Count, "B").End(xlUp).Offset(1) = NBipette 'Sinon on l'attribut à une nouvelle cellule de pesée
End If
End Sub
Function SerchXls(Myrange As Range, MyCellule As Range, strRecherche, EntierCell As Boolean, EnBoucle As Boolean) As Long '
'Permet de rechercher dans la plage de cellules considérées si une valeur Existe.
'Myrange : plage de cellules concernées par la recherche.
'MyCellule : La position à partir de laquelle la recherche seffectue.
'strRecherche : valeur recherchée.
'EntierCell : concerne la cellule entière ou un fragilement de cellule.
'EnBoucle : détermine si MyCellule se trouve en ligne 6 et que la valeur trouvé se trouve en ligne 4 si la fonction retourne 4 ou 0 (pas trouvé).
'Retourne le N° de la ligne ou zéro si pas trouvé.
On Error Resume Next
SerchXls = 0
If EntierCell = False Then Entier = xlPart Else Entier = xlWhole
SerchXls = Myrange.Cells.Find(What:=strRecherche, After:=MyCellule, LookIn:=xlFormulas, LookAt _
:=Entier, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=EntierCell).Row
If SerchXls <= MyCellule.Row And EnBoucle = False Then SerchXls = 0
End Function |