Bonjour,
J'ai un code pour tracer les bordures d'une plage, je cherche à tracer des lignes dans c'est plage. Le nombre de ligne est variable et l'espacement avec la partie supérieure de la plage l'est aussi.
Dans mon code je demande le nombre de lignes à l'opérateur et dans une boucle je demande l'espacement entre chaque lignes de la partie supérieure de la plage et la nouvelle ligne que je veux tracer.
Voici le code complet
C'est dans la partie 2 que ça coince. Je n'arrive pas à exprimer la différence de cases entre les deux lignes.
Lorsque le code arrive ici il y a un message d'erreur : Erreur d’exécution '1004': La méthode 'Range' de l'objet'_Global a échoué
Je joins un fichier avec un exemple de résultat final.
Si vous avez des suggestions je suis tout ouïe. Merci.
J'ai un code pour tracer les bordures d'une plage, je cherche à tracer des lignes dans c'est plage. Le nombre de ligne est variable et l'espacement avec la partie supérieure de la plage l'est aussi.
Dans mon code je demande le nombre de lignes à l'opérateur et dans une boucle je demande l'espacement entre chaque lignes de la partie supérieure de la plage et la nouvelle ligne que je veux tracer.
Voici le code complet
VB:
Sub CentrerRectangle()
Const plage = "A1:CM48"
Dim hori&, verti&, cellHori&, cellVerti&, rgRectangle, s$
Cells.Borders.LineStyle = xlLineStyleNone
s = "Dimension horizontale en nombre de case?" & _
vbLf & "max = " & Range(plage).Columns.Count
hori = InputBox(s)
If hori > Range(plage).Columns.Count Then Exit Sub
If hori <= 0 Then Exit Sub
s = "Dimension verticale en nombre de case?" & _
vbLf & "max = " & Range(plage).Rows.Count
verti = InputBox(s)
If verti > Range(plage).Rows.Count Then Exit Sub
If verti <= 0 Then Exit Sub
cellHori = 1 + (Range(plage).Rows.Count - verti) / 2
cellVerti = 1 + (Range(plage).Columns.Count - hori) / 2
If cellHori <= 0 Then cellHori = 1
If cellVerti <= 0 Then cellVerti = 1
Set rgRectangle = Cells(cellHori, cellVerti).Resize(verti, hori)
rgRectangle.BorderAround 1, 3, , RGB(225, 0, 0)
'partie 2
Set plage2 = Range(Cells(cellHori, cellVerti), Cells(cellHori + verti - 1, cellVerti + hori - 1))
Dim NbLigne&, HoriL%, VertiL%, blRectangle
s = "Nombre de Ligne?"
NbLigne = InputBox(s)
If NbLigne < 0 Then Exit Sub
For i = 1 To NbLigne
HoriL = hori
s = "Espacement entre les deux lignes en nombre de case?"
VertiL = plage2.Row + InputBox(s)
If cellVertiL > plage2.Rows.Count - 1 Then Exit Sub
If VertiL <= 0 Then Exit Sub
Set blRectangle = Cells(plage2.Rows.Count - 1, plage2.Columns.Count - 1)
blRectangle.Border.EdgeBottom 1, 3, , RGB(225, 0, 0)
Next i
End Sub
C'est dans la partie 2 que ça coince. Je n'arrive pas à exprimer la différence de cases entre les deux lignes.
Lorsque le code arrive ici il y a un message d'erreur : Erreur d’exécution '1004': La méthode 'Range' de l'objet'_Global a échoué
Je joins un fichier avec un exemple de résultat final.
Si vous avez des suggestions je suis tout ouïe. Merci.
Pièces jointes
Dernière édition: