ption Explicit
Sub AfficheOuvrage(Ouvrage As String, Origine As Range, posDeb As Double, Longueur As Double, Couleur As Integer)
Dim Echelle As Double
Dim posOuvrage As Integer
Echelle = (Origine.Width / 100) * 1000
If Not posDeb > 21 Then
[COLOR="red"]With Feuil1[/COLOR].Shapes.AddShape(msoShapeRectangle, Origine.Left + (posDeb * Echelle), Origine.Top, Longueur * Echelle, 3)
.Name = "Ouvrage_" & Ouvrage
.Fill.ForeColor.SchemeColor = Couleur
.Line.Visible = msoFalse
End With
Else
[COLOR="red"]With Feuil3[/COLOR].Shapes.AddShape(msoShapeRectangle, Origine.Left + (posDeb * Echelle) - 210, Origine.Top, Longueur * Echelle, 3)
.Name = "Ouvrage_" & Ouvrage
.Fill.ForeColor.SchemeColor = Couleur
.Line.Visible = msoFalse
End With
End If
posOuvrage = ((posDeb + (Longueur / 2)) * Echelle) / Origine.Width
Origine.Offset(, posOuvrage).Value = Ouvrage
End Sub
Sub CreationOuvrage()
Dim Shp As Shape
Dim Cpt As Integer, Couleur As Integer
Dim Origine As Range
Dim Ouvrage As String
Application.ScreenUpdating = False
For Each Shp In Feuil1.Shapes
If Left(Shp.Name, 8) = "Ouvrage_" Then
Shp.Delete
End If
Next Shp
Feuil1.Range("F5:AN11").Clear
With Feuil2
For Cpt = 5 To Feuil2.Range("C65536").End(xlUp).Row
If .Range("B" & Cpt).Value <> "" Then
Ouvrage = .Range("B" & Cpt).Value
Select Case Ouvrage
Case "ponts"
Couleur = 50
Set Origine = Feuil1.Range("F5")
Case "tunels"
Couleur = 53
Set Origine = Feuil1.Range("F8")
Case "galerie"
Couleur = 4
Set Origine = Feuil1.Range("F11")
Case Else
Couleur = 0
End Select
End If
If Couleur <> 0 And .Range("C" & Cpt).Value <> "" And .Range("C" & Cpt).Value <> "no" Then
Call AfficheOuvrage(.Range("C" & Cpt).Value, Origine, .Range("F" & Cpt).Value, .Range("H" & Cpt).Value - .Range("F" & Cpt).Value, Couleur)
End If
Next Cpt
End With
Application.ScreenUpdating = True
End Sub