OVH Cloud OVH Cloud

Créations hexagones

7 réponses
Avatar
JLH974
Bonjour à tous
Je cherche à créer une série d'hexagones jointifs "collés" sur une feuille
Excel pour simuler le canevas d'une couverture en patchwork
J'ai créé un hexagone et essayé de décortiquer le code généré mais je me
retrouve avec des instructions msoshapehexagon sans aucune explication sur
leurs caractéristiques et la façon de les positionner sur la feuille.
Pouvez-vous me diriger vers un lien qui traite de cet aspect non documenté
Merci d'avance

7 réponses

Avatar
Francois L
Bonjour à tous
Je cherche à créer une série d'hexagones jointifs "collés" sur une feuille
Excel pour simuler le canevas d'une couverture en patchwork
J'ai créé un hexagone et essayé de décortiquer le code généré mais je me
retrouve avec des instructions msoshapehexagon sans aucune explication sur
leurs caractéristiques et la façon de les positionner sur la feuille.
Pouvez-vous me diriger vers un lien qui traite de cet aspect non documenté
Merci d'avance



Bonjour,

Ce n'est ps du excel, mais pour simuler des quilts, je te suggère
d'aller voir là :
http://www.protozone.net/AJinteractives1.html

--
François L

Avatar
garnote
Salut Jean-Luc,

Essaie d'abord cette instruction :
ActiveSheet.Shapes.AddShape msoShapeHexagon, 10,15,120,100
Paramètres :
10 : Left
15 : Top
120 : Width
100 : Height
Par contre, si tu veux confier ses paramèetres à une variable,
il faut mettre des parenthèses :
Set hexa = ActiveSheet.Shapes.AddShape(msoShapeHexagon, 10, 15, 120, 100)
Et avec des boucles et quelques formules mathématiques, tu peux obtenir un pavage.
En voici un exemple :

Sub Pavage_Hexagonal()
Application.ScreenUpdating = False
Sheets.Add
ActiveWindow.DisplayGridlines = False
L = 50
T = 50
W = 112
H = 100
For i = 0 To 2
For j = 0 To 2
With ActiveSheet.Shapes.AddShape(msoShapeHexagon, L + 3 * i * W / 2, T + j * H, W, H)
.Fill.ForeColor.SchemeColor = Int(54 * Rnd + 1)
.Fill.Visible = msoTrue
.Fill.Solid
End With
Next j
Next i
For i = 1 To 3
For j = 1 To 3
With ActiveSheet.Shapes.AddShape(msoShapeHexagon, L + (6 * i - 3) * W / 4, T + (2 * j - 1) * H / 2, W, H)
.Fill.ForeColor.SchemeColor = Int(54 * Rnd + 1)
.Fill.Visible = msoTrue
.Fill.Solid
End With
Next j
Next i
End Sub

Cela te convient-il ?
Serge

"JLH974" a écrit dans le message de news:
Bonjour à tous
Je cherche à créer une série d'hexagones jointifs "collés" sur une feuille
Excel pour simuler le canevas d'une couverture en patchwork
J'ai créé un hexagone et essayé de décortiquer le code généré mais je me
retrouve avec des instructions msoshapehexagon sans aucune explication sur
leurs caractéristiques et la façon de les positionner sur la feuille.
Pouvez-vous me diriger vers un lien qui traite de cet aspect non documenté
Merci d'avance






Avatar
JLH974
"garnote" a écrit dans le message de
news:yuvPg.21854$
Salut Jean-Luc,

Essaie d'abord cette instruction :
ActiveSheet.Shapes.AddShape msoShapeHexagon, 10,15,120,100

Cela te convient-il ?
Serge


Bonsoir Serge
En fait je me posais la question du pourquoi certaines valeurs numériques
sont suivies de #
comme dans le cas ci-dessous relevé dans mon cas :
ActiveSheet.Shapes.AddShape(msoShapeHexagon, 224.25, 267.75, 48.75,
39#).Select

Ensuite, je réalisais un copier-collé et je déplaçais la copie par :
Selection.Copy
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft -13.5
Selection.ShapeRange.IncrementTop 102#

mais là encore, il y a un # et quel est le rapport entre ces unités et le
placement sur la feuille

Avatar
JLH974
"Francois L" a écrit dans le message de
news:%23Oi%

Bonjour,

Ce n'est ps du excel, mais pour simuler des quilts, je te suggère
d'aller voir là :
http://www.protozone.net/AJinteractives1.html

--
François L


Bonsoir François
C'est intéressant en effet mais il faut, pour diverses raisons, toutes plus
mystérieuses les unes que les autres ;-) que ce soit sous Excel
En fait, il s'agit d'un programme en VBA qui analyse un bitmap et selon les
dimensions désirées (le nombre de motifs en longueur et largeur) le
programme "découpe" le fichier en zones tout en calculant la couleur
moyenne.
Bref, vous l'aurez compris, je transforme une image en patchwork dont il
reste à rechercher des tissus correspondant aux couleurs élémentaires.
Excel, cela me sert à créer le patron du dessin et la fonction
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(120, 90, 27)
me sert à remplir l'hexagone à la couleur voulue.
Voilà, j'ai rien oublié... je crois....

Avatar
Francois L

Bonsoir François
C'est intéressant en effet mais il faut, pour diverses raisons, toutes plus
mystérieuses les unes que les autres ;-) que ce soit sous Excel
En fait, il s'agit d'un programme en VBA qui analyse un bitmap et selon les
dimensions désirées (le nombre de motifs en longueur et largeur) le
programme "découpe" le fichier en zones tout en calculant la couleur
moyenne.
Bref, vous l'aurez compris, je transforme une image en patchwork dont il
reste à rechercher des tissus correspondant aux couleurs élémentaires.
Excel, cela me sert à créer le patron du dessin et la fonction
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(120, 90, 27)
me sert à remplir l'hexagone à la couleur voulue.
Voilà, j'ai rien oublié... je crois....



Bonsoir,

Je vois effectivement que c'est du boulot sérieux. Bon courage.

:-]

--
François L

Avatar
garnote
Salut Jean-Luc,

ActiveSheet.Shapes.AddShape msoShapeHexagon, 10,15,120,100
Forme générale :
ActiveSheet.Shapes.AddShape msoShapeHexagon, Left,Top,Width,Height
Width : Largeur de l'hexagone.
Height : Hauteur de l'hexagone.
Left : Distance entre le bord gauche de la feuille et l"extrémité "ouest" de ton hexagone.
Top : Distance entre le haut de ta feuille et l'extrémité "nord" de ton hexagone.
IncrementLeft x : Déplace ton hexagone horizontalement de x points.
Si x > 0, vers la droite, si x < 0, vers la gauche.
IncrementTop x : Déplace ton hexagone verticalement de x points.
Si x > 0, vers le bas, si x < 0, vers le haut.
Quant au #, je ne sais pas pourquoi il lui arrive d'apparaître.
De toute manière, AMHA, ça ne change rien aux résultats. ;-)

Serge





"JLH974" a écrit dans le message de news:

"garnote" a écrit dans le message de
news:yuvPg.21854$
Salut Jean-Luc,

Essaie d'abord cette instruction :
ActiveSheet.Shapes.AddShape msoShapeHexagon, 10,15,120,100

Cela te convient-il ?
Serge


Bonsoir Serge
En fait je me posais la question du pourquoi certaines valeurs numériques
sont suivies de #
comme dans le cas ci-dessous relevé dans mon cas :
ActiveSheet.Shapes.AddShape(msoShapeHexagon, 224.25, 267.75, 48.75,
39#).Select

Ensuite, je réalisais un copier-collé et je déplaçais la copie par :
Selection.Copy
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft -13.5
Selection.ShapeRange.IncrementTop 102#

mais là encore, il y a un # et quel est le rapport entre ces unités et le
placement sur la feuille







Avatar
JLH974
"garnote" a écrit dans le message de
news:MpBPg.46964$P%
Salut Jean-Luc,

ActiveSheet.Shapes.AddShape msoShapeHexagon, 10,15,120,100
Forme générale :
ActiveSheet.Shapes.AddShape msoShapeHexagon, Left,Top,Width,Height
Width : Largeur de l'hexagone.
Height : Hauteur de l'hexagone.
Left : Distance entre le bord gauche de la feuille et l"extrémité "ouest"
de ton hexagone.

Top : Distance entre le haut de ta feuille et l'extrémité "nord" de ton
hexagone.

IncrementLeft x : Déplace ton hexagone horizontalement de x points.
Si x > 0, vers la droite, si x < 0, vers la gauche.
IncrementTop x : Déplace ton hexagone verticalement de x points.
Si x > 0, vers le bas, si x < 0, vers le haut.
Quant au #, je ne sais pas pourquoi il lui arrive d'apparaître.
De toute manière, AMHA, ça ne change rien aux résultats. ;-)

Serge


Merci Serge pour ces précieux renseignements

A+