Rectangle en fonction d'excel

Fermé
MRO - 31 oct. 2017 à 15:47
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 1 nov. 2017 à 18:13
Bonjour, je voudrais savoir comment on rédige les codes pour tracer un rectangle sur VBA a partir de donnée dans un tableau excel : (les lignes de chiffres commencent en ligne 3), voilà ce que j'ai trouvé mais qui n'est pas encore au point

A B C
Coordonées Y Z
Tole Pt Y1-Z1 -100 -110
Tole Pt Y2-Z1 100 -110
Tole Pt Y2-Z2 100 110
Tole Pt Y1 -Z2 -100 110
Tole Pt Y1-Z1 -100 -110 R Φ
Boulon 1 -70 -80 8
Boulon 2 70 -80 8
Boulon 3 -70 80 8
Boulon 4 70 80 8


Sub dessin()
ActiveWindow.DisplayGridlines = False
ActiveSheet.DrawingObjects.Delete

Dim A As Integer
Dim AA As Integer
Dim B As Integer
Dim BB As Integer
Dim C As Integer
Dim CC As Integer
Dim D As Integer
Dim DD As Integer

A = Sheets("tracé").Cells(3, 2).Select ("tracé") est le nom de ma feuille dans excel
AA = Sheets("tracé").Cells(3, 3).Select
B = Sheets("tracé").Cells(4, 2).Select
BB = Sheets("tracé").Cells(4, 3).Select
C = Sheets("tracé").Cells(5, 2).Select
CC = Sheets("tracé").Cells(5, 3).Select
D = Sheets("tracé").Cells(6, 2).Select
DD = Sheets("tracé").Cells(6, 3).Select



Set ligne1 = ActiveSheet.Shapes.AddLine(A, AA, B, BB) ' je voudrais que ça tracer une ligne de coordonnées (A;AA) jusqu'à (B;BB)
ligne1.Line.ForeColor.SchemeColor = 0
Set ligne2 = ActiveSheet.Shapes.AddLine(B, BB, C, CC)
ligne2.Line.ForeColor.SchemeColor = 0
Set ligne3 = ActiveSheet.Shapes.AddLine(C, CC, D, DD)
ligne3.Line.ForeColor.SchemeColor = 0
Set ligne4 = ActiveSheet.Shapes.AddLine(D, DD, A, AA)
ligne4.Line.ForeColor.SchemeColor = 0
End sub

Le but pour moi est de tracer une rectangle avec chaque ligne de différente couleur d'où l'usage de addline plutot que addrectangle

Par la suite je souhait procéder un peu de la même façon pour tracer des cercles avec centre et rayon depuis mon excel

Merci d'avance du coup de main
A voir également:

1 réponse

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
1 nov. 2017 à 18:13
Bonjour,

Voici un exemple avec 2 boutons:

Option Explicit
 Private Sub CommandButton1_Click()
Dim myDocument
Set myDocument = Worksheets(1)
With myDocument.Shapes.AddLine(80, 20, 80, 200).Line 'depart left, départ top, longueur ligne, arrivée top,
    .DashStyle = msoLineSolid
    .ForeColor.RGB = RGB(255, 0, 0)
End With
With myDocument.Shapes.AddLine(80, 20, 300, 20).Line
    .DashStyle = msoLineSolid
    .ForeColor.RGB = RGB(255, 0, 0)
End With
With myDocument.Shapes.AddLine(300, 20, 300, 200).Line
    .DashStyle = msoLineSolid
    .ForeColor.RGB = RGB(255, 0, 0)
End With
With myDocument.Shapes.AddLine(80, 200, 300, 200).Line
    .DashStyle = msoLineSquareDot
    .ForeColor.RGB = RGB(255, 0, 0)
End With
With myDocument.Shapes.AddLine(80, 200, 190, 300).Line
    .DashStyle = msoLineDashDot
    .ForeColor.RGB = RGB(0, 0, 255)
End With
With myDocument.Shapes.AddLine(190, 300, 190, 200).Line
    .DashStyle = msoLineDashDotDot
    .ForeColor.RGB = RGB(255, 0, 0)
End With
With myDocument.Shapes.AddLine(190, 300, 300, 200).Line
    .DashStyle = msoLineDash
    .ForeColor.RGB = RGB(0, 0, 0)
End With
End Sub
'efface les lignes
Sub supprime()
Dim Ws As Worksheet
Dim Shp As Shape
    For Each Ws In ThisWorkbook.Worksheets
        For Each Shp In Ws.Shapes
            With Shp
               Shp.Delete
            End With
        Next Shp
    Next Ws
End Sub
Private Sub CommandButton2_Click()
supprime
End Sub
'DashStyle
'msoLineDash
'msoLineDashDot
'msoLineDashDotDot
'msoLineSolid
'msoLineSquareDot


Essaye de t'inspirer de cela!
0