Bonsoir,
bon courage à vous !
Ci dessous le code modifié afin de le rendre "variable" au niveau de la taille du cube d'origine en fonction de la taille de la grille ce dernier devrait être plus ou moins gros, et la position du point en bas au fond, qui lui aussi doit être ajusté en fonction de la taille de la grille.
dans les deux cas c'est plutôt fonction du X et Y, car Z prend moins de place, mais tout de même il faut faire attention.
Le code :
Sub Test()
Dim X, Y, Z, Sh As Shape
Dim Cube(1 To 5, 1 To 10, 1 To 10)
Dim Taille, LeTop
Set Sh = ActiveSheet.Shapes("Cube")
Sh.LockAspectRatio = msoTrue
Sh.Width = 10 ' ici le 10 devrait être variable en fonction de la taille de la grille
LeTop = 330 ' ici le top "du bas" de la structure devrait être en fonction de la taille de la grille
Taille = ActiveSheet.Shapes("carre").Width
For Z = 5 To 1 Step -1
For Y = 1 To 10 '10 To 1 Step -1
For X = 1 To 10
Cube(Z, 11-Y, X) = Feuil2.Cells(Y, X + ((Z - 1) * 10)) ' le 11-Y permet d'afficher à l'endroit
Next X
Next Y
Next Z
For Each Sh In ActiveSheet.Shapes
If Left(Sh.Name, 1) = "_" Then Sh.Delete
Next
For Z = 1 To 5
For Y = 1 To 10
For X = 1 To 10
If Cube(Z, Y, X) <> "" Then
Set Sh = ActiveSheet.Shapes("Cube").Duplicate
Sh.Name = "_" & Sh.Name
If Cube(Z, Y, X) = "D" Then
Sh.Fill.ForeColor.RGB = 255
ElseIf Cube(Z, Y, X) = "F" Then
Sh.Fill.ForeColor.RGB = RGB(0, 255, 0)
ElseIf Cube(Z, Y, X) = "1" Then
Sh.Fill.ForeColor.RGB = RGB(20, 100, 200)
End If
Sh.Top = LeTop + (Z * Taille / 3) - (Y * Taille)
Sh.Left = LeTop - 30 - (Z * Taille / 3) + (X * Taille)
End If
Next X
Next Y
Next Z
End Sub
@ bientôt
LouReeD