Représentation graphique avec VBA

Matta

XLDnaute Nouveau
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

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

  • test3.xlsm
    32.1 KB · Affichages: 3
Dernière édition:

zebanx

XLDnaute Accro
Bonjour Matta

Pour te faire la main et compléter ton code, regarde le module 2 et descends le code en pas à pas détaillé en tapant F8.
Tu te mets sur chaque ligne et tu vois quel numéro prend la variable.

Ca devrait te permettre d'avancer.

@+
 

Pièces jointes

  • test3.xlsm
    30.2 KB · Affichages: 1

zebanx

XLDnaute Accro
Bonjour Matta

Bon, un autre essai.

Deux remarques :

1. Le code bottom a été modifié car l'ancien ne fonctionnait pas (ligne 42)

2. Pour définir le blrectangle (ligne 40) il te faut un range et non un cells qui ne définit qu'une seule valeur.
Et je ne sais toujours pas ce que tes multiples inputbox te font chercher comme résultat.

Donc pour définir ce range, il faut te rappeler que :
RANGE("A1:C10")
=
RANGE(cells(1,1), cells(10,3))

On est clairement sur la deuxième méthode donc à toi de savoir quelles seront les cellules de départ et de fin de ton deuxième tableau et d'adapter ce RANGE.

Je ne pourrais que difficilement t'aider plus sur ce topic...que je comprends toujours pas.

@+
 

Pièces jointes

  • test4.xlsm
    32.9 KB · Affichages: 3

Discussions similaires

Réponses
6
Affichages
239
Réponses
4
Affichages
209

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman