Function VisiteElevateur(Site As Range)
Dim PlageInstallation As Range, Installation As Range, Init As Byte, Décal As Byte
Dim PlageSite As Range, SSite As Range, OK As Boolean, Col As Integer, Pas as byte
Dim TypeV As String, TypeM As String, Temp
With Worksheets("Planning maintenance régl. ASC")
'* Recherche de la ligne du site
Set PlageSite = .Range("C4:C" & .Range("C" & Rows.Count).End(xlUp).Row - 2)
Set SSite = PlageSite.Find(Site, LookIn:=xlValues)
If SSite Is Nothing Then
VisiteElevateur = "Site non référencé"
Exit Function
End If
'* Recherche de la colonne du type de visite
Set PlageInstallation = .Range("D1:FO1")
Set Installation = PlageInstallation.Find(Application.ThisCell.Offset(, -1), LookIn:=xlValues)
If Installation Is Nothing Then
VisiteElevateur = "Maintenance inconnue"
Exit Function
End If
'* définition des paramètres
Init = Installation.Column ' N° de colonne de début de plage
Temp = Split(Installation, "(") 'création d'un tableau des éléments séparée par "("
TypeV = Left(Temp(1), Len(Temp(1)) - 1) ' récupération du type de visite
TypeM = Trim(Split(Temp(0), ":")(1)) ' récupération du type de matériel
Select Case TypeV
Case "Toutes les 6 semaines"
If TypeM = "Ascenseurs" Then
Décal = 32 'nombre de colonnes entre le début et la fin de plage de cellule
Else
Décal = 44 'nombre de colonnes entre le début et la fin de plage de cellule
End If
pas = 4 ' espacement des cellules intéressantes
Case "Semestrielle"
Décal = 4: pas = 4
Case Else
Décal = 0: pas = 0
End Select
If pas = 0 Then ' cas des visites annuelles = 1 seule cellule
If .Cells(SSite.Row, Init).Interior.ColorIndex = 43 Then OK = True
Else
For Col = Init + Décal To Init Step -pas
If .Cells(SSite.Row, Col).Interior.ColorIndex = 43 Then
OK = True
Exit For
End If
Next
End If
If OK Then
VisiteElevateur = .Cells(SSite.Row, Col)
Else
VisiteElevateur = "Non réalisé"
End If
End With
End Function