Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MsoAutoShapeType

2 réponses
Avatar
garnote
Bonjour,

Dans cette macro, je voudrais obtenir en U65 le nom de la
constante MsoAutoShapeType des formes automatiques
que dessinent ladite macro.
Est-ce possible ?

Serge


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Formes_Concentriques()
Sheets.Add
With ActiveWindow
.ScrollRow = 63
.ScrollColumn = 12
.DisplayGridlines = False
End With
cx = 1000
cy = 1000
For i = 1 To 10
For r = 10 To 200 Step 10
Lc = cx - r
Tc = cy - r
Wc = 2 * r
Hc = 2 * r
Set forme = ActiveSheet.Shapes.AddShape(i, Lc, Tc, Wc, Hc)
forme.Fill.Visible = False
Next r
DoEvents
[U65] = forme.Type 'MsoAutoShapeType ?
Sleep (1500)
[U65].ClearContents
ActiveSheet.DrawingObjects.Delete
Next i
End Sub

2 réponses

Avatar
MichDenis
Tu vas devoir faire un select case sur forme.Type
et pour obtenir la valeur numérique de chacun des types
tu vas à partir de la fenêtre d'éditeur de code dans l'explorateur
d'objets (F2) , dans la cas rechercher, tu inscris : MsoAutoShapeType
et tu devrais avoir toutes les constantes listées dans la fenêtre de droite.
si tu cliques sur chacune d'elles, leur valeur numérique s'affiche dans le
bas de la fenêtre.

Dans le code, les constantes alphanumériques sont représentées par
leur équivalent numérique... je ne connais pas une façon de faire
l'inverse autre que mentionner.

Si tu trouves, dis nous le !




"garnote" a écrit dans le message de news:
%
Bonjour,

Dans cette macro, je voudrais obtenir en U65 le nom de la
constante MsoAutoShapeType des formes automatiques
que dessinent ladite macro.
Est-ce possible ?

Serge


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Formes_Concentriques()
Sheets.Add
With ActiveWindow
.ScrollRow = 63
.ScrollColumn = 12
.DisplayGridlines = False
End With
cx = 1000
cy = 1000
For i = 1 To 10
For r = 10 To 200 Step 10
Lc = cx - r
Tc = cy - r
Wc = 2 * r
Hc = 2 * r
Set forme = ActiveSheet.Shapes.AddShape(i, Lc, Tc, Wc, Hc)
forme.Fill.Visible = False
Next r
DoEvents
[U65] = forme.Type 'MsoAutoShapeType ?
Sleep (1500)
[U65].ClearContents
ActiveSheet.DrawingObjects.Delete
Next i
End Sub
Avatar
garnote
Bricolage :
Je me suis fait une liste avec les noms des constantes
et les valeurs numériques correspondantes.
Je peux alors récupérer le nom avec une recherche verticale.
Curieusement, Excel ne veut pas dessiner les formes
MsoShapeNotPrimitive (138) et MsoShapeMixed (-2).
Il ne me reste que 137 formes :-)

Serge


"MichDenis" a écrit dans le message de news:
Tu vas devoir faire un select case sur forme.Type
et pour obtenir la valeur numérique de chacun des types
tu vas à partir de la fenêtre d'éditeur de code dans l'explorateur
d'objets (F2) , dans la cas rechercher, tu inscris : MsoAutoShapeType
et tu devrais avoir toutes les constantes listées dans la fenêtre de droite.
si tu cliques sur chacune d'elles, leur valeur numérique s'affiche dans le
bas de la fenêtre.

Dans le code, les constantes alphanumériques sont représentées par
leur équivalent numérique... je ne connais pas une façon de faire
l'inverse autre que mentionner.

Si tu trouves, dis nous le !




"garnote" a écrit dans le message de news:
%
Bonjour,

Dans cette macro, je voudrais obtenir en U65 le nom de la
constante MsoAutoShapeType des formes automatiques
que dessinent ladite macro.
Est-ce possible ?

Serge


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Formes_Concentriques()
Sheets.Add
With ActiveWindow
.ScrollRow = 63
.ScrollColumn = 12
.DisplayGridlines = False
End With
cx = 1000
cy = 1000
For i = 1 To 10
For r = 10 To 200 Step 10
Lc = cx - r
Tc = cy - r
Wc = 2 * r
Hc = 2 * r
Set forme = ActiveSheet.Shapes.AddShape(i, Lc, Tc, Wc, Hc)
forme.Fill.Visible = False
Next r
DoEvents
[U65] = forme.Type 'MsoAutoShapeType ?
Sleep (1500)
[U65].ClearContents
ActiveSheet.DrawingObjects.Delete
Next i
End Sub