Option Explicit
Sub Detec()
Dim X As String, Codebarre As String, lig_suiv As Long, lig_suivb As Long, lig_suivc As Long, Lig As Long
Dim lig_suivTab As Long
X = InputBox("Entrez le code barre")
With Worksheets("Feuil1")
lig_suivTab = .[A7].CurrentRegion.Rows.Count + 7
lig_suiv = .Range("A65536").End(xlUp).Row + 1
lig_suivb = .Range("B65536").End(xlUp).Row + 1
lig_suivc = .Range("C65536").End(xlUp).Row + 1
Select Case Len(X)
Case 12 To 15
For Lig = 8 To lig_suiv - 1
If .Range("A" & Lig).Value <> "" And .Range("B" & Lig).Value = "" Then
MsgBox "Interdit de mettre une 2eme référence sans n° de lot.", vbCritical
Exit Sub
End If
Next
Case 17 To 19, 25
For Lig = 8 To lig_suivb - 1
If .Range("B" & Lig).Value <> "" And .Range("A" & Lig).Value = "" Then
MsgBox "Interdit de mettre un 2eme n° de lot sans référence.", vbCritical
Exit Sub
End If
Next
End Select
Select Case Len(X)
Case 12
Codebarre = X
.Range("A" & lig_suivTab) = Codebarre
Case 14
If Left(X, 2) = "+H" Then Codebarre = Mid(X, 6, 7)
.Range("A" & lig_suivTab) = Codebarre
Case 13
If Left(X, 2) = "+H" Then Codebarre = Mid(X, 6, 6)
.Range("A" & lig_suivTab) = Codebarre
Case 15
If Left(X, 2) = "+H" Then Codebarre = Mid(X, 6, 8)
.Range("A" & lig_suivTab) = Codebarre
Case 16
.Range("B" & lig_suivTab) = Left(X, 8)
.Range("A" & lig_suivTab) = Mid(X, 9, 8)
.Range("C" & lig_suivTab) = 1
Case 17
If Left(X, 3) = "+$$" Then Codebarre = Mid(X, 8, 8)
.Range("B" & lig_suivTab) = Codebarre
.Range("C" & lig_suivTab) = 1
Case 18
If IsNumeric(X) = True Then Codebarre = Mid(X, 3, 8)
.Range("B" & lig_suivTab) = Codebarre
.Range("C" & lig_suivTab) = 1
Case 19
If Left(X, 2) = 10 Then Codebarre = Mid(X, 3, 9)
.Range("B" & lig_suivTab) = Codebarre
.Range("C" & lig_suivTab) = 1
Case 22
.Range("A" & lig_suivTab) = Left(X, 8)
.Range("B" & lig_suivTab) = Mid(X, 9, 8)
.Range("C" & lig_suivTab) = 1
Case 25
If Left(X, 3) = "+$$" Then Codebarre = Mid(X, 16, 8)
.Range("B" & lig_suivTab) = Codebarre
.Range("C" & lig_suivTab) = 1
End Select
End With
End Sub